zoukankan      html  css  js  c++  java
  • 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>
    示例代码
  • 相关阅读:
    RestTemplate的异常:Not enough variables available to expand
    WebApplicationContext类的作用
    select动态绑定vue.js
    spring的 @Scheduled的cron表达式
    Spring使用webjar
    ThreadLocal基本原理及运用
    mybatis choose标签的使用
    @RequestBody和@RequestParam区别
    js遍历 for-of
    MySql 模糊查询
  • 原文地址:https://www.cnblogs.com/xiaoxiaogogo/p/3601299.html
Copyright © 2011-2022 走看看