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>