xml之Schema架构

1、什么是Schema架构

2、Schema文档结构 

3、Schema元素类型

1》element元素

 

 1   <!--简单数据;类型-->
 2   <xs:element name="dog" type="xs:string"></xs:element>
 3   <xs:element name="cat" type="xs:string"></xs:element>
 4   
 5   <!--复杂数据类型-->
 6   <xs:element name="pets">
 7     <xs:complexType>
 8       <xs:choice minOccurs="0" maxOccurs="unbounded">
 9         <xs:element ref="dog" ></xs:element>
10         <xs:element ref="cat"></xs:element>
11       </xs:choice>
12     </xs:complexType>
13   </xs:element>
element元素


2》group元素

属性:name、ref

 1   <!--group元素-->
 2   <xs:element name="ele1" type="xs:string"></xs:element>
 3   <xs:element name="ele2" type="xs:string"></xs:element>
 4   <xs:attribute name="myAttrituate1" type="xs:decimal"></xs:attribute>
 5   <!--group含有 name 和 ref 两个属性-->
 6   <!--位于 根节点schema下面的 group  没有 ref 元素-->
 7   <xs:group name="myGroup1">
 8     <xs:sequence>
 9       <xs:element ref="ele1"></xs:element>
10       <xs:element name="ele3" type="xs:string"></xs:element>
11     </xs:sequence>
12   </xs:group>
13 
14 
15   <xs:complexType name="comp1">
16     <xs:group ref="myGroup1"></xs:group>
17     <xs:attribute ref="attr2"></xs:attribute>
18   </xs:complexType>
group元素

3》attribute元素(为元素声明属性)

属性:name、type、ref

1   <xs:attribute name="myAttrituate1" type="xs:decimal"></xs:attribute>
2 
3   <!--attribute元素:含有属性:name/ref/type-->
4   <xs:attribute name="attr2" type="xs:string"></xs:attribute>
attribute元素

 4》attributeGroup元素

 作用:将一组属性声明在一起,一边被复杂类型重复使用

 属性:name、ref

 1   <!--attributeGroup元素,含有属性 name / ref-->
 2   <xs:attributeGroup name="myattributeGroup">
 3     <xs:attribute name="attribute1" type="xs:string"></xs:attribute>
 4     <xs:attribute name="attribute2" type="xs:string"></xs:attribute>
 5   </xs:attributeGroup>
 6   
 7   <!--下面这个 attributeGroup  就是 指向 上面的 那个 attributeGroup-->
 8   <xs:attributeGroup name="myattributeRefGroup">
 9     <xs:attributeGroup ref="myattributeGroup"></xs:attributeGroup>
10   </xs:attributeGroup>
attributeGroup

 5》simpleType元素

 作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息

 属性:name

 内容:应用已经存在的简单类型,三种方式

   restrict→限定一个范围

   list→从列表中选择

   union→包含一个值的集合

 1   <!--simpleType元素(决定 元素和属性值的 约束和相关信息)含有属性 name,,含有三种形式的 内容-->
 2   <!--第一种内容 : restriction(限制,简单类型是  在什么)-->
 3   <xs:simpleType name="restrictionSimpleType">
 4     <!--限制 内容在 一定范围内;;注意 base 是不能 缺失的(内容 继承自 什么)-->
 5     <xs:restriction base="xs:integer">
 6       <xs:minInclusive value="0"></xs:minInclusive>
 7       <xs:maxInclusive value="100"></xs:maxInclusive>
 8     </xs:restriction>
 9   </xs:simpleType>
10   
11   
12   <!--第二种 内容的 形式 list(列表,,只允许用户 在指定的 列表中间 选择一个值)-->
13   <xs:simpleType name="listSimpleType">
14     <xs:list itemType="xs:date"></xs:list> <!--约束 简单类型的 内容只允许 是 日期中的 一个日期-->
15   </xs:simpleType>
16   
17   
18   <!--第三种 内容的 形式 union(合并,,就是 一个 简单类型 包含 一个 简单类型的集合) -->
19   
20   <!--下面的 这个 例子 非常经典,,一定要记住-->
21   <xs:simpleType name="roadBikeSize">
22     <xs:restriction base="xs:positiveInteger"><!--公路自行车的 尺寸-->
23       <xs:enumeration value="20"></xs:enumeration>
24       <xs:enumeration value="40"></xs:enumeration>
25       <xs:enumeration value="60"></xs:enumeration>
26     </xs:restriction>
27   </xs:simpleType>
28 
29   <xs:simpleType name="mountainbikesize"><!--山地车的 尺寸-->
30     <xs:restriction base="xs:string">
31       <xs:enumeration value="small"></xs:enumeration>
32       <xs:enumeration value="middle"></xs:enumeration>
33       <xs:enumeration value="big"></xs:enumeration>
34     </xs:restriction>
35   </xs:simpleType>
36 
37   <xs:attribute name="sizeOfBike">
38     <xs:simpleType>
39       <xs:union>
40         <xs:simpleType>
41           <xs:restriction base="roadBikeSize"></xs:restriction>
42         </xs:simpleType>
43         <xs:simpleType>
44           <xs:restriction base="mountainbikesize"></xs:restriction>
45         </xs:simpleType>
46       </xs:union>
47     </xs:simpleType>
48   </xs:attribute>
49 
50 
51   <xs:element name="bike">
52     <xs:complexType><!--因为 元素 含有属性 ,所以要使用  复杂类型-->
53       <xs:attribute ref="sizeOfBike"></xs:attribute>
54     </xs:complexType>
55   </xs:element>
simpleType三种方式

6》complexType元素

作用:定义一个复合类型,它决定了一组元素和属性值的约束和相关信息

 属性:name

1   <xs:complexType name="sizeOfShoes">
2     <xs:simpleContent>
3       <xs:extension base="xs:decimal">
4         <xs:attribute name="sizing" type="xs:string"></xs:attribute>
5       </xs:extension>
6     </xs:simpleContent>
7   </xs:complexType>
8 
9   <xs:element name="shoes" type="sizeOfShoes"></xs:element>
complexType元素

*complexTypesimpleType区别:

    1simpleType类型的元素中不能包含元素或者属性

    2、当需要声明一个元素的子元素和/或属性时,用complexType;

    3、当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType

7》simpleContent元素

 作用:应用于complexType,对它的内容进行限制和扩展

 1   <xs:element name="shoes2">
 2     <xs:complexType>
 3       <xs:simpleContent >
 4         <xs:extension base="xs:decimal"><!--这里的 base 继承 是限制 simpleContent 的-->
 5           <xs:attribute name="sizing">
 6             <xs:simpleType>
 7               <xs:restriction base="xs:string"><!--这里的 base是 限制 simpleType(也就是限制 attribute)-->
 8                 <xs:enumeration value="big"></xs:enumeration>
 9                 <xs:enumeration value="middle"></xs:enumeration>
10                 <xs:enumeration value="small"></xs:enumeration>
11               </xs:restriction>
12             </xs:simpleType>
13           </xs:attribute>
14         </xs:extension>
15       </xs:simpleContent>
16     </xs:complexType>
17   </xs:element>
simpleContent元素

8》choice元素

 作用:允许唯一的一个元素从一个组中被选择

 属性:maxOccurs、minOccurs

 1   <xs:element name="pets2">
 2     <xs:complexType>
 3       <xs:choice minOccurs="1" maxOccurs="2"> <!--设置  能够选择的 项数(最少选择一项,最多选择2项)-->
 4         <xs:element name="dog">
 5           <xs:simpleType>
 6             <xs:restriction base="xs:string">
 7               <xs:enumeration value="哈巴"></xs:enumeration>
 8               <xs:enumeration value="藏獒"></xs:enumeration>
 9             </xs:restriction>
10           </xs:simpleType>
11         </xs:element>
12         <xs:element name="cat">
13           <xs:simpleType>
14             <xs:restriction base="xs:string">
15               <xs:enumeration value="波斯猫"></xs:enumeration>
16               <xs:enumeration value="tom"></xs:enumeration>
17             </xs:restriction>
18           </xs:simpleType>
19         </xs:element>
20       </xs:choice>
21     </xs:complexType>
22   </xs:element>
choice元素

 9》unique元素

 作用:定义一个元素或属性值,它必须在特定的范围内

 1   <xs:complexType name="CustomerOrderType">
 2     <xs:sequence>
 3       <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
 4         <xs:complexType>
 5           <xs:attribute name="itemID" type="xs:string"></xs:attribute>
 6         </xs:complexType>
 7       </xs:element>
 8     </xs:sequence>
 9     <xs:attribute name="CustomerId" type="xs:string"></xs:attribute>
10   </xs:complexType>
11 
12   <xs:element name="ordersByCustomer">
13     <xs:complexType><!--下面含有子元素-->
14       <xs:sequence>
15         <xs:element name="customerOrderType" type="CustomerOrderType" minOccurs="0" maxOccurs="unbounded"></xs:element>
16       </xs:sequence>
17     </xs:complexType>
18     <xs:unique name="oneCustomerOrdersforEachCustomerID">
19       <xs:selector xpath="mstns:customerOrderType"></xs:selector>
20       <xs:field xpath="@CustomerId"></xs:field>
21     </xs:unique>
22   </xs:element>
unique元素

 10》sequence元素

作用:按照顺序出现某些元素

1   <xs:complexType name="pets">
2     <xs:sequence>
3       <xs:element name="dog"></xs:element>
4       <xs:element name="cat"></xs:element>
5     </xs:sequence>
6   </xs:complexType>
sequence元素

 4、完整示例代码

 1   <xs:element name="purchaseOrder" type="PurchaseOrderType"></xs:element>
 2   <xs:element name="comment" type="xs:string"></xs:element>
 3   <xs:complexType name="PurchaseOrderType">
 4     <!--下面是子元素:依次出现下面子元素-->
 5     <xs:sequence>
 6       <xs:element name="shipTo" type="USAAddress"></xs:element>
 7       <xs:element name="billTo" type="USAAddress"></xs:element>
 8       <xs:element name="items" type="Items"></xs:element>
 9     </xs:sequence>
10     <xs:attribute name="orderDate" type="xs:date"></xs:attribute>
11   </xs:complexType>
12 
13   <xs:complexType name="USAAddress">
14     <xs:sequence>
15       <xs:element name="name"></xs:element>
16       <xs:element name="street"></xs:element>
17       <xs:element name="city"></xs:element>
18       <xs:element name="state"></xs:element>
19     </xs:sequence>
20     <xs:attribute name="country" type="xs:string" fixed="US"></xs:attribute><!--fixed="US"表示 如果没有 声明此属性,那么默认 就是 US-->
21   </xs:complexType>
22 
23   <xs:complexType name="Items">
24     <xs:sequence>
25       <xs:element name="productName" type="xs:string"></xs:element>
26       <xs:element name="quantity">
27         <xs:simpleType>
28           <xs:restriction base="xs:positiveInteger">
29             <xs:maxExclusive value="100"></xs:maxExclusive>
30           </xs:restriction>
31         </xs:simpleType>
32       </xs:element>
33     </xs:sequence>
34   </xs:complexType>
35 </xs:schema>
示例代码
原文地址:https://www.cnblogs.com/xiaoxiaogogo/p/3601299.html