XML--XML Schema Definition(三)

参考

http://www.w3school.com.cn/schema/index.asp

XSD 复合元素

复合元素指包含其他元素及/或属性的 XML 元素。

有四种类型的复合元素:

  • 空元素
  • 包含其他元素的元素
  • 仅包含文本的元素
  • 包含元素和文本的元素

注释:上述元素均可包含属性!

 

定义复合元素(xs:complexType):

1.通过命名此元素,直接对元素进行声明

1 <xs:element name="employee">
2   <xs:complexType>
3     <xs:sequence>
4       <xs:element name="firstname" type="xs:string"/>
5       <xs:element name="lastname" type="xs:string"/>
6     </xs:sequence>
7   </xs:complexType>
8 </xs:element>

2.使用 type 属性,这个属性的作用是引用要使用的复合类型的名称

1 <xs:element name="employee" type="personinfo"/>
2 
3 <xs:complexType name="personinfo">
4   <xs:sequence>
5     <xs:element name="firstname" type="xs:string"/>
6     <xs:element name="lastname" type="xs:string"/>
7   </xs:sequence>
8 </xs:complexType>

复合空元素:

空的复合元素不能包含内容,只能含有属性。

1 <product prodid="1345" />
1 <xs:element name="product">
2   <xs:complexType>
3     <xs:complexContent>
4       <xs:restriction base="xs:integer">
5         <xs:attribute name="prodid" type="xs:positiveInteger"/>
6       </xs:restriction>
7     </xs:complexContent>
8   </xs:complexType>
9 </xs:element>

1 <xs:element name="product">
2   <xs:complexType>
3     <xs:attribute name="prodid" type="xs:positiveInteger"/>
4   </xs:complexType>
5 </xs:element>

或:

1 <xs:element name="product" type="prodtype"/>
2 
3 <xs:complexType name="prodtype">
4   <xs:attribute name="prodid" type="xs:positiveInteger"/>
5 </xs:complexType>

复合类型仅包含元素:

“仅含元素”的复合类型元素是只能包含其他元素的元素。

1 <person>
2     <firstname>John</firstname>
3     <lastname>Smith</lastname>
4 </person>
1 <xs:element name="person">
2   <xs:complexType>
3     <xs:sequence>
4       <xs:element name="firstname" type="xs:string"/>
5       <xs:element name="lastname" type="xs:string"/>
6     </xs:sequence>
7   </xs:complexType>
8 </xs:element>

1 <xs:element name="person" type="persontype"/>
2 
3 <xs:complexType name="persontype">
4   <xs:sequence>
5     <xs:element name="firstname" type="xs:string"/>
6     <xs:element name="lastname" type="xs:string"/>
7   </xs:sequence>
8 </xs:complexType>

仅含文本的复合元素:

仅含文本的复合元素可包含文本和属性。

此类型仅包含简易的内容(文本和属性),因此我们要向此内容添加 simpleContent 元素。当使用简易内容时,我们就必须在 simpleContent 元素内定义扩展或限定.

1 <shoesize country="france">35</shoesize>
1 <xs:element name="shoesize">
2   <xs:complexType>
3     <xs:simpleContent>
4       <xs:extension base="xs:integer">
5         <xs:attribute name="country" type="xs:string" />
6       </xs:extension>
7     </xs:simpleContent>
8   </xs:complexType>
9 </xs:element>

1 <xs:element name="shoesize" type="shoetype"/>
2 
3 <xs:complexType name="shoetype">
4   <xs:simpleContent>
5     <xs:extension base="xs:integer">
6       <xs:attribute name="country" type="xs:string" />
7     </xs:extension>
8   </xs:simpleContent>
9 </xs:complexType>

带有混合内容的复合类型:

混合的复合类型可包含属性、元素以及文本。

1 <letter>
2 Dear Mr.<name>John Smith</name>.
3 Your order <orderid>1032</orderid>
4 will be shipped on <shipdate>2001-07-13</shipdate>.
5 </letter>
1 <xs:element name="letter">
2   <xs:complexType mixed="true">
3     <xs:sequence>
4       <xs:element name="name" type="xs:string"/>
5       <xs:element name="orderid" type="xs:positiveInteger"/>
6       <xs:element name="shipdate" type="xs:date"/>
7     </xs:sequence>
8   </xs:complexType>
9 </xs:element>

1 <xs:element name="letter" type="lettertype"/>
2 
3 <xs:complexType name="lettertype" mixed="true">
4   <xs:sequence>
5     <xs:element name="name" type="xs:string"/>
6     <xs:element name="orderid" type="xs:positiveInteger"/>
7     <xs:element name="shipdate" type="xs:date"/>
8   </xs:sequence>
9 </xs:complexType>

猜你喜欢

转载自www.cnblogs.com/microcat/p/10399570.html