XML Schema <第三篇>
原文地址: http://www.cnblogs.com/kissdodog/archive/2013/02/25/2931941.html#top
验证XML文档是否符合议定的XML结构有两种方法,分别是DTD模式与XML Schema。本文主要介绍XML Schema。 一、XML Schema的优点
二、XSDXSD文档至少要包含:schema根元素和XML模式命名空间的定义、元素定义。需要注意的是XSD中必须定义一个且只能定义一个schema根元素,根元素中包括模式的约束,XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些信息。 1、schema根元素 语法如下: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> ... </xsd:schema> 2、元素 xsd:element name="user" type="xsd:string" /> XSD中元素是利用element标识符来声明,在上面的示例中name属性是元素的名字,type属性是元素值的类型,可以使XML Schema中内置的数据类型或其他类型。 全部元素如下:
3、引用元素 引用元素是利用element标记符的ref属性实现的。主要适用于避免在文档中多次定义同一个元素。表示当前元素与被引用的元素相同。 /> xsd:sequence> ref="user" /> <!--当前元素就是user元素--> 4、别名 别名主要利用element标识符中的属性substitutionGroup实现的。 语法: ="xsd:string" substitutionGroup="yonghu" 该语句表示该行的元素名可以是user或用户,如:
yonghu>admin>
user 这两行xml都是符合条件的。
5、设置默认值与固定值 ="city" default="xian" ="country" fixed="china" 通过default属性的设置,可以在XML文档中没有对city定义时赋予默认值,而是用fixed属性,可以给元素country设定一个固定的值china,并且不允许改变。 6、利用组合器控制结构 1、sequence组合器,定义了一列元素必须按照模式中指定的顺序显示(如果是可选的,也可以不显示)。 <="first"="middle"="last"/>
2、all组合器,允许所定义的元素可以按照任意顺序显示,all元素的子元素在默认情况下士必须的,而且每次最多显示一次。
xsd:all minOccurs="0"xsd:all (3)choice组合器,允许指定多组声明中的一个,用于互斥情况。
xsd:choice7、定义属性
在XML Schema文档中可以按照定义元素的方法定义属性,但受限制程度较高。可以应用在attribute元素定义中的属性如下表所示。
8、创建属性 xsd:attribute ="age"="xsd:integer" 该语句定义了一个名为age的属性,它的值必须为整数。把它添加到模式中时,它必须是schema元素,complexType元素或者attributeGroup元素的子元素。 代码示例: ="name"xsd:complexType < < </="xsd:integer" use="optional" /> <!--将属性添加到元素name属性中--> </xsd:element> 以上文档对应有效的XML文档如下: <?xml version="1.0"?>
name age="27"first>string 该示例不但说明了如下约束属性,还展示了组合器的用法。
三、XML Schema数据类型1、Schema基本数据类型 Schema的基本数据类型如下:
2、约束 内置的数据类型功能虽然已经有一定的限制功能,但是还是远远不足够的,更进一步的约束还是来看看约束。
要使用上面约束表的约束,就要利用元素restriction。这个元素中有两个属性:ID属性是模式文档中restriction元素的位置标识符;base属性设置为一个内置的XSD数据类型或者现有的简单类型定义,它是一种被限制的类型。 示例:将一个整数的取值范围设置为1~100之间。 xsd:restriction base="xsd:int"xsd:minInclusive value="1" xsd:maxInclusive ="100" xsd:restriction 3、简单类型
简单类型是对一个节点的可能值进一步限制的自定义数据类型。创建简单类型需要利用simpleType元素,其定义如下: simpleType id="ID" name="NCName" final="(#all|((list|union|restriction)))" ID属性应唯一地标明文档内的simpleType元素,name不能使用冒号字符。simpleType不能包含元素,也不能有属性,它基本上是一个值,或者是一个值的集合。
例如: xsd:simpleType ="USState"="xsd:string"xsd:enumeration ="AK"="AL"="AR"xsd:simpleType="statement"="USState" />
|