XSD复合元素
前面已经认识了XSD简单元素,接着就要进入XSD复合元素。何为复合元素?
定义——复合元素指包含其他元素或者其他元素属性的XML元素。
四种类型的复合元素(均包含属性):
- 空元素
- 包含其他元素的元素
- 仅包含文本的元素
- 包含元素和文本的元素
空元素:
<name id="12345"/>
扫描二维码关注公众号,回复:
659277 查看本文章
包含其他元素的元素:
<user> <username>admin</username> <password>admin</password> </user>
仅包含文本的元素:
<book type="IT">Java</book>
包含元素和文本的元素:
<books> <book type="IT">Java</book> </books>
定义如下复合元素:
<user> <username>admin</username> <password>admin</password> </user>
方法一,直接对"user"元素声明:
<xs:element name="user"> <xs:complexType> <xs:sequence> <xs:element name="username" type="xs:string"/> <xs:element name="password" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
指示器 <sequence>指明了其中的子元素"username"和"password"必须按照次序出现。
方法二,"user"元素可以使用type属性,若干元素均可以使用相同的复合类型:
<xs:element name="user" type="userInfo"/> <xs:element name="guest" type="userInfo"/> <xs:element name="administrator" type="userInfo"/> <xs:complexType name="userInfo"> <xs:sequence> <xs:element name="username" type="xs:string"/> <xs:element name="password" type="xs:string"/> </xs:sequence> </xs:complexType>
当然我们我可以以某个复合元素为基础,继续添加一些元素:
<xs:element name="user" type="fullUserInfo"/> <xs:complexType name="userInfo"> <xs:sequence> <xs:element name="username" type="xs:string"/> <xs:element name="password" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullUserInfo"> <xs:complexContent> <xs:extension base="userInfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>