Xml Schema

W3School介绍

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

1.头部

<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com"
elementFormDefault="qualified">

xml namespace 

xmlns  代表默认namespace

xmlns:xs 代表·namespace为xs   使用这个namespace中定义的类型时前面要加前缀"xs:"

schemaLocation="http://www.w3school.com.cn note.xsd"    namespace xsd文件地址(相对路径)

2.简易元素

Element

<xs:element name="xxx" type="yyy"/>
  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

Attribute

<xs:attribute name="xxx" type="yyy"/>

限制Restriction

1 <xs:element name="age">
2 <xs:simpleType>
3   <xs:restriction base="xs:integer">
4     <xs:minInclusive value="0"/>
5     <xs:maxInclusive value="120"/>
6   </xs:restriction>
7 </xs:simpleType>
8 </xs:element> 

必须 属性

   use="required"


3.复合元素

有四种类型的复合元素:
空元素
包含其他元素的元素
仅包含文本的元素
包含元素和文本的元素

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

或者

<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

扩展 xs:extension

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <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>

4.指示器

有七种指示器:
Order 指示器:

  • All
  • Choice
  • Sequence

Occurrence 指示器:

  • maxOccurs
  • minOccurs

Group 指示器:

  • Group name
  • attributeGroup name

 5.例子

 1 <?xml version="1.0" encoding="ISO-8859-1" ?>
 2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 3 
 4 <xs:element name="shiporder">
 5  <xs:complexType>
 6   <xs:sequence>
 7    <xs:element name="orderperson" type="xs:string"/>
 8    <xs:element name="shipto">
 9     <xs:complexType>
10      <xs:sequence>
11       <xs:element name="name" type="xs:string"/>
12       <xs:element name="address" type="xs:string"/>
13       <xs:element name="city" type="xs:string"/>
14       <xs:element name="country" type="xs:string"/>
15      </xs:sequence>
16     </xs:complexType>
17    </xs:element>
18    <xs:element name="item" maxOccurs="unbounded">
19     <xs:complexType>
20      <xs:sequence>
21       <xs:element name="title" type="xs:string"/>
22       <xs:element name="note" type="xs:string" minOccurs="0"/>
23       <xs:element name="quantity" type="xs:positiveInteger"/>
24       <xs:element name="price" type="xs:decimal"/>
25      </xs:sequence>
26     </xs:complexType>
27    </xs:element>
28   </xs:sequence>
29   <xs:attribute name="orderid" type="xs:string" use="required"/>
30  </xs:complexType>
31 </xs:element>
32 
33 </xs:schema>

或者 

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- 简易元素的定义 -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>

<!-- 属性的定义 -->
<xs:attribute name="orderid" type="xs:string"/>

<!-- 复合元素的定义 -->
<xs:element name="shipto">
 <xs:complexType>
  <xs:sequence>
   <xs:element ref="name"/>
   <xs:element ref="address"/>
   <xs:element ref="city"/>
   <xs:element ref="country"/>
  </xs:sequence>
 </xs:complexType>
</xs:element>
<xs:element name="item">
 <xs:complexType>
  <xs:sequence>
   <xs:element ref="title"/>
   <xs:element ref="note" minOccurs="0"/>
   <xs:element ref="quantity"/>
   <xs:element ref="price"/>
  </xs:sequence>
 </xs:complexType>
</xs:element>

<xs:element name="shiporder">
 <xs:complexType>
  <xs:sequence>
   <xs:element ref="orderperson"/>
   <xs:element ref="shipto"/>
   <xs:element ref="item" maxOccurs="unbounded"/>
  </xs:sequence>
  <xs:attribute ref="orderid" use="required"/>
 </xs:complexType>
</xs:element>

</xs:schema>

或者

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:simpleType name="stringtype">
 <xs:restriction base="xs:string"/>
</xs:simpleType>

<xs:simpleType name="inttype">
 <xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>

<xs:simpleType name="dectype">
 <xs:restriction base="xs:decimal"/>
</xs:simpleType>

<xs:simpleType name="orderidtype">
 <xs:restriction base="xs:string">
  <xs:pattern value="[0-9]{6}"/>
 </xs:restriction>
</xs:simpleType>

<xs:complexType name="shiptotype">
 <xs:sequence>
  <xs:element name="name" type="stringtype"/>
  <xs:element name="address" type="stringtype"/>
  <xs:element name="city" type="stringtype"/>
  <xs:element name="country" type="stringtype"/>
 </xs:sequence>
</xs:complexType>

<xs:complexType name="itemtype">
 <xs:sequence>
  <xs:element name="title" type="stringtype"/>
  <xs:element name="note" type="stringtype" minOccurs="0"/>
  <xs:element name="quantity" type="inttype"/>
  <xs:element name="price" type="dectype"/>
 </xs:sequence>
</xs:complexType>

<xs:complexType name="shipordertype">
 <xs:sequence>
  <xs:element name="orderperson" type="stringtype"/>
  <xs:element name="shipto" type="shiptotype"/>
  <xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
 </xs:sequence>
 <xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>

<xs:element name="shiporder" type="shipordertype"/>

</xs:schema>
原文地址:https://www.cnblogs.com/xuemanjiangnan/p/7405112.html