Xml Schema@H_403_3@的用途@H_403_3@
1@H_403_3@.@H_403_3@定义一个@H_403_3@Xml@H_403_3@文档中都有什么元素@H_403_3@
2@H_403_3@.@H_403_3@定义一个@H_403_3@Xml@H_403_3@文档中都会有什么属性@H_403_3@
3@H_403_3@.@H_403_3@定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序@H_403_3@
4@H_403_3@.@H_403_3@定义元素或者属性的数据类型@H_403_3@
5@H_403_3@.@H_403_3@定义元素或者属性的默认值或者固定值@H_403_3@
Xml Schema@H_403_3@的根元素:@H_403_3@
<?xml version="1.0"?>@H_403_3@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" @H_403_3@表示数据类型等定义来自@H_403_3@w3c@H_403_3@
targetNamespace="http://www.w3schools.com" @H_403_3@表示文档中要定义的元素来自什么命名空间@H_403_3@
xmlns="http://www.w3schools.com"@H_403_3@表示此文档的默认命名空间是什么@H_403_3@
elementFormDefault="qualified"> @H_403_3@ 表示要求@H_403_3@xml@H_403_3@文档的每一个元素都要有命名空间指定@H_403_3@
……定义主体部分……@H_403_3@
</xs:schema>@H_403_3@
如何定义一个简单元素@H_403_3@
<xs:element @H_403_3@此处表示要定义一个元素@H_403_3@
name=”color” @H_403_3@表示要定义元素的名称@H_403_3@
type=”xs:string” @H_403_3@表示要定义元素的数据类型@H_403_3@
default=”red” @H_403_3@表示定义元素的默认值@H_403_3@
fixed=”red”/> @H_403_3@表示要定义元素的固定值,此元素只可以取“@H_403_3@red@H_403_3@”值@H_403_3@
以上定义了一个简单元素,元素实例:@H_403_3@<color>red</color>@H_403_3@
<xs:attribute @H_403_3@
name=”birthday” @H_403_3@表示要定义属性的名字@H_403_3@
type=”xs:date” @H_403_3@表示要定义属性的数据类型@H_403_3@
default=”2001-01-11” @H_403_3@ 表示要定义属性的默认值@H_403_3@
fixed=”2001-01-11” @H_403_3@ 表示要定义属性的固定值@H_403_3@
use=”required”/> @H_403_3@表示此属性是否是必须指定的,即如果不指定就不符合@H_403_3@Schema@H_403_3@,默认没有@H_403_3@use=”required”@H_403_3@属性表示属性可有可无@H_403_3@
<xs:element name="age">@H_403_3@
<xs:simpleType>@H_403_3@
<xs:restriction base="xs:integer">@H_403_3@
<xs:minInclusive value="0"/> @H_403_3@ 大于等于@H_403_3@0@H_403_3@,@H_403_3@<xs: minExclusive>@H_403_3@表示最小值但是不包括指定值@H_403_3@
<xs:maxInclusive value="120"/> @H_403_3@ 小于等于@H_403_3@120@H_403_3@,@H_403_3@<xs: maxExclusive>@H_403_3@
</xs:restriction>@H_403_3@
</xs:simpleType>@H_403_3@
</xs:element>@H_403_3@
2@H_403_3@.枚举限制,指只能在指定的几个值中取值@H_403_3@
<xs:element name="car" type="carType"/>@H_403_3@
<xs:simpleType name="carType">@H_403_3@
<xs:restriction base="xs:string">@H_403_3@
<xs:enumeration value="Audi"/>@H_403_3@
<xs:enumeration value="Golf"/>@H_403_3@
<xs:enumeration value="BMW"/>@H_403_3@
</xs:restriction>@H_403_3@
</xs:simpleType>@H_403_3@
3@H_403_3@.模式(@H_403_3@pattern@H_403_3@)限制@H_403_3@,指字符串的格式必须满足制定的匹配模式@H_403_3@
例子@H_403_3@ |
说明@H_403_3@ |
<xs:element name="letter">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="[a-z]"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
表示只能在小写字母中取一个值@H_403_3@ |
<xs:element name="initials">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="[A-Z][A-Z][A-Z]"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
表示必须是三个大写字母@H_403_3@ |
<xs:element name="initials">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
表示必须是三个字母,可以是大写或小写的@H_403_3@ |
<xs:element name="choice">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="[xyz]"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
|
<xs:element name="prodid">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:integer">@H_403_3@ <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
|
<xs:element name="letter">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="([a-z])*"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
|
<xs:element name="letter">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="([a-z][A-Z])+"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
表示必须是多个字母。@H_403_3@ |
<xs:element name="gender">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="male|female"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
表示是@H_403_3@male@H_403_3@或者@H_403_3@female@H_403_3@中的一个@H_403_3@ |
<xs:element name="password">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:pattern value="[a-zA-Z0-9]{8}"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
<xs:element name="password">@H_403_3@
<xs:simpleType>@H_403_3@
<xs:restriction base="xs:string">@H_403_3@
<xs:length value="8"/>@H_403_3@
</xs:restriction>@H_403_3@
</xs:simpleType>@H_403_3@
</xs:element> @H_403_3@
长度必须是@H_403_3@8@H_403_3@。@H_403_3@
<xs:element name="password">@H_403_3@
<xs:simpleType>@H_403_3@
<xs:restriction base="xs:string">@H_403_3@
<xs:minLength value="5"/>@H_403_3@
<xs:maxLength value="8"/>@H_403_3@
</xs:restriction>@H_403_3@
</xs:simpleType>@H_403_3@
</xs:element> @H_403_3@
表示长度在@H_403_3@5-8@H_403_3@之间@H_403_3@
6@H_403_3@.@H_403_3@对于空白字符的限制@H_403_3@
示例@H_403_3@ |
说明@H_403_3@ |
<xs:element name="address">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:whiteSpace value="preserve"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
|
<xs:element name="address">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:whiteSpace value="replace"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
|
<xs:element name="address">@H_403_3@ <xs:simpleType>@H_403_3@ <xs:restriction base="xs:string">@H_403_3@ <xs:whiteSpace value="collapse"/>@H_403_3@ </xs:restriction>@H_403_3@ </xs:simpleType>@H_403_3@ </xs:element> @H_403_3@ |
如何定义复杂类型@H_403_3@
复杂类型是指定义元素中包含属性或者子元素的类型@H_403_3@
1@H_403_3@.@H_403_3@定义只包含子元素的复杂类型@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:sequence>@H_403_3@
<xs:element name="firstname" type="xs:string"/>@H_403_3@
<xs:element name="lastname" type="xs:string"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
2@H_403_3@.@H_403_3@定义只包含属性的复杂类型@H_403_3@
<xs:element name="product" type="prodtype"/>@H_403_3@
<xs:complexType name="prodtype">@H_403_3@
<xs:attribute name="prodid" type="xs:positiveInteger"/>@H_403_3@
</xs:complexType>@H_403_3@
3@H_403_3@.@H_403_3@定义只包含内容的复杂类型@H_403_3@
<xs:element name="shoesize" type="shoetype"/>@H_403_3@
<xs:complexType name="shoetype">@H_403_3@
<xs:simpleContent>@H_403_3@
<xs:extension base="xs:integer">@H_403_3@
<xs:attribute name="country" type="xs:string" />@H_403_3@
</xs:extension>@H_403_3@
</xs:simpleContent>@H_403_3@
</xs:complexType>@H_403_3@
4@H_403_3@.@H_403_3@定义包含内容和子元素混合的复杂类型@H_403_3@
<xs:element name="letter">@H_403_3@
<xs:complexType@H_403_3@ mixed="true"@H_403_3@>@H_403_3@
<xs:sequence>@H_403_3@
<xs:element name="name" type="xs:string"/>@H_403_3@
<xs:element name="orderid" type="xs:positiveInteger"/>@H_403_3@
<xs:element name="shipdate" type="xs:date"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
<letter>@H_403_3@
Dear Mr.<name>John Smith</name>.@H_403_3@
Your order <orderid>1032</orderid>@H_403_3@
will be shipped on <shipdate>2001-07-13</shipdate>.@H_403_3@
</letter>@H_403_3@
5@H_403_3@.@H_403_3@定义包含属性和子元素的复杂类型@H_403_3@
使用指示器@H_403_3@
在@H_403_3@Xsd@H_403_3@中的指示器包括@H_403_3@
1@H_403_3@.@H_403_3@顺序指示器@H_403_3@
1@H_403_3@)@H_403_3@All@H_403_3@
指示子元素可以以任何顺序出现,并且每一个元素都必须出现一次@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:all>@H_403_3@
<xs:element name="firstname" type="xs:string"/>@H_403_3@
<xs:element name="lastname" type="xs:string"/>@H_403_3@
</xs:all>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
2@H_403_3@)@H_403_3@Choice@H_403_3@
指示子元素中可以出现一个或者另一个@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:choice>@H_403_3@
<xs:element name="employee" type="employee"/>@H_403_3@
<xs:element name="member" type="member"/>@H_403_3@
</xs:choice>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
3@H_403_3@)@H_403_3@Sequence@H_403_3@
指示子元素必须按照顺序出现@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:sequence>@H_403_3@
<xs:element name="firstname" type="xs:string"/>@H_403_3@
<xs:element name="lastname" type="xs:string"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
2@H_403_3@.@H_403_3@出现次数指示器@H_403_3@minOccurs@H_403_3@,@H_403_3@maxOccurs@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:sequence>@H_403_3@
<xs:element name="full_name" type="xs:string"/>@H_403_3@
<xs:element name="child_name" type="xs:string"@H_403_3@
maxOccurs="10" minOccurs="0"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
3@H_403_3@.@H_403_3@组指示器(@H_403_3@group Indicators@H_403_3@)@H_403_3@
用来定义相关的一组元素@H_403_3@
<xs:group name="persongroup">@H_403_3@
<xs:sequence>@H_403_3@
<xs:element name="firstname" type="xs:string"/>@H_403_3@
<xs:element name="lastname" type="xs:string"/>@H_403_3@
<xs:element name="birthday" type="xs:date"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:group>@H_403_3@
<xs:element name="person" type="personinfo"/>@H_403_3@
<xs:complexType name="personinfo">@H_403_3@
<xs:sequence>@H_403_3@
<xs:group ref="persongroup"/>@H_403_3@
<xs:element name="country" type="xs:string"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:complexType>@H_403_3@
<xs:attributeGroup name="personattrgroup">@H_403_3@
<xs:attribute name="firstname" type="xs:string"/>@H_403_3@
<xs:attribute name="lastname" type="xs:string"/>@H_403_3@
<xs:attribute name="birthday" type="xs:date"/>@H_403_3@
</xs:attributeGroup>@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:attributeGroup ref="personattrgroup"/>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
表示可以有任意元素@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:sequence>@H_403_3@
<xs:element name="firstname" type="xs:string"/>@H_403_3@
<xs:element name="lastname" type="xs:string"/>@H_403_3@
<xs:any minOccurs="0"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
anyAttribute@H_403_3@关键字@H_403_3@
<xs:element name="person">@H_403_3@
<xs:complexType>@H_403_3@
<xs:sequence>@H_403_3@
<xs:element name="firstname" type="xs:string"/>@H_403_3@
<xs:element name="lastname" type="xs:string"/>@H_403_3@
</xs:sequence>@H_403_3@
<xs:anyAttribute/>@H_403_3@
</xs:complexType>@H_403_3@
</xs:element>@H_403_3@
substitutionGroup@H_403_3@关键字@H_403_3@
表示某一个元素和另一个替代元素定义相同@H_403_3@
<xs:element name="name" type="xs:string"/>@H_403_3@
<xs:element name="navn" substitutionGroup="name"/>@H_403_3@
<xs:complexType name="custinfo">@H_403_3@
<xs:sequence>@H_403_3@
<xs:element ref="name"/>@H_403_3@
</xs:sequence>@H_403_3@
</xs:complexType><xs:element name="customer" type="custinfo"/>@H_403_3@
<xs:element name="kunde" substitutionGroup="customer"/>@H_403_3@