XML Schema 的编写

前端之家收集整理的这篇文章主要介绍了XML Schema 的编写前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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@

如何定义一个属性@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@

如何定义元素或者属性值的限制@H_403_3@

1@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@

表示必须是@H_403_3@xyz@H_403_3@中的一个@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@

表示数字的范围是@H_403_3@0-99999@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@0@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][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@

表示必须是@H_403_3@8@H_403_3@个字母数字字符@H_403_3@

4@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: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@

保留原样,表示@H_403_3@xml@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="replace"/>@H_403_3@

</xs:restriction>@H_403_3@

</xs:simpleType>@H_403_3@

</xs:element> @H_403_3@

指回车,换行,@H_403_3@Tab@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="collapse"/>@H_403_3@

</xs:restriction>@H_403_3@

</xs:simpleType>@H_403_3@

</xs:element> @H_403_3@

去掉多于一个空格,和@H_403_3@html@H_403_3@中处理方式相同@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@

以上定义对应的@H_403_3@Xml@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@

用来定义一组相关的属性@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@

Any@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: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@

文中的例子都来自@H_403_3@w3school.@H_403_3@

猜你在找的XML相关文章