XM L Schema
1.XM L Schema简介
XML Schema也称XSD(XML Schema Definition),是XML文件的一种验证机制,它的基本结构和XML文件并没有什么不同,同样严格地遵守了XML的语法规则。常用的XML元素如表3-5所示。
表3-5
例3-6
XML文件:4-5.xml
01:<? xml Version=“1.0”encoding=“GB2312”>
02:<!――XML Schema――>
03:<file xmlns:xsi=“http://www.ancc.org.cn/2007/”
04: xsi:noNamespaceSchemaLocation=“4-5.xsd”>
05:<subject number=“1”>firest file</subject>
06:<body>hello!</body>
07:</file>
XSD文件:4-5.xsd
01:<? xml Version=“1.0”encoding=“GB2312”>
02:<!――XML Schema――>
03:<xsi:schema xmlns:xsi=“http://www.ancc.org.cn/2007/”>
04:<xsi:element name=“file”type=“xsd:string”>
05:<xsi:complexType>
06:<xsi:sequence>
07:<xsd: element name=“subject”type=“xsd: string”/>
08:<xsd:attribute name=“number”type=“xsd: string”/>
09:<xsd:element name=“body”type=“xsd:string”/>
10:</xsd:sequence>
11:</xsd:complexType>
12:</xsd:element>
13:</xsd:schema>
2.XM L Schema数据类型
作为一种可扩展的标记语言,XML支持很多数据类型,它的基本数据类型如表3-6所示。
表3-6
续表
除了上述表格中的基本数据类型以外,还有一些派生数据类型,见表3-7。
表3-7
续表
除了拥有如此之多的数据类型外,XML Schema还允许使用者自己定义简单的数据类型。用户可以使用simpleType自定义所需的数据类型,它的基本语法见下面的例子。
例3-7
01<schema xmlns:xs=‘http://www.w3.org/2001/XML Schema’>
02<simpleType name=‘typename1’>
03<restriction base=‘integer’>
04<minInclusive value=‘1’>
05<maxInclusive value=‘3’>
06</ restriction>
07</ simpleType>
08<element name=‘element’type=‘typename1’/>
09</schema>
上例中第2行name属性为用户定义属性的名称,第3行中的retriction元素可以用base属性定义一种simpleType元素的基础数据类型,retriction元素后面是对用户定义类型的一些限制。上例中的minInclusive和maxInclusive分别限制了定义类型的最小值和最大值。
用户定义之后的数据类型可以直接进行使用,如第8行元素element的数据类型就是用户新定义的数据类型。
表3-8中的元素为用户在定义数据类型时可以限定的一些细节。
表3-8
pattern元素应用的例子如下:
例3-8
01<xsd:simpleType name=“phone”>
02<xsd:restriction base=“xsd:string”>
03<xsd:pattern value=“\d(3)-d\(8)”/>
04</ restriction>
05</ simpleType>
上例中定义的phone数据类型,需要符合后面模板即“\ d(3)-d\(8)”的定义。例如: 010—51183056。/d代表数字前段里为3位,后段里为8位,常用的正规语言见表3-9。
表3-9
续表
enumeration元素应用的例子如下:
例3-9
01<xsd:simpleType name=“color”>
02<xsd:restriction base=“xsd:string”>
03<xsd:enumeration value=“red”>
04<xsd:enumeration value=“yellow”>
05<xsd:enumeration value=“blue”>
06</ restriction>
07</ simpleType>
上例中定义的color数据类型的基础类型是string,可以选择的数据为red、yellow、blue中的一个。
3. comp lexType元素的使用
complexType元素用来声明xml文件中子元素或属性的名称和数据类型,它的子元素不能直接是element和attribute元素,而是一些功能指令,这些指令可以用来定义xml文件中的元素的出现顺序和次数,见表3-10。
表3-10
续表
这些指令的使用方法见下面的几个例子。
例3-10
01<xsd:element name=“red”type=“xsd:string”/>
02<xsd:element name=“yellow”type=“xsd:string”/>
03<xsd:element name=“blue”type=“xsd:string”/>
04<xs:complexType name=“color”>
05<xs:all>
06<xs: element ref=“red”minOccurs=“0”maxOccurs=“unbounded”/>
07<xs:element ref=“yellow”minOccurs=“1”maxOccurs=“1”/>
08<xs:element ref=“blue”minOccurs=“1”maxOccurs=“3”/>
09</xs:all>
10</xs:complexType>
上例中的三个子元素可以按任意顺序出现,ref属性指向了其他元素,minOccurs限定了元素出现的最少次数,maxOccurs限定了元素出现的最多次数。red元素可以不出现,也可以出现无穷多次; yellow元素可以且只能出现一次; blue元素最少出现一次,最多出现3次。sequence和choice指令的使用方式与all指令相近。
例3-11
01<xs:group name=“colorGroup”>
02<xs:sequence>
03<xsd:element name=“red”type=“xsd:string”/>
04<xsd:element name=“yellow”type=“xsd:string”/>
05<xsd:element name=“blue”type=“xsd:string”/>
06</xs:sequence>
07</xs:group>
group指令建立了一个名为colorGroup的组,在后面就可以直接对这个组进行引用了。
例3-12
01<xs:complexType name=“color”>
02<xs:sequence>
03<xs:group ref=“colorGroup”minOccurs=“1”maxOccurs=“1”/>
04</xs:sequence>
05</xs:complexType>
group元素使用了ref引用上面建立好的组,并限定了出现的顺序和出现的次数,组的建立必须在引用之前进行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。