XML Schema
Xml Schema类似于DTD,定义了XML文档的逻辑结构,基本功能如下: a、定义可出现在文档中的元素及元素属性。 Xml Schema也称做Xml Schema Definition,即XSD,schema为其根元素,与DTD相比,Schema是基于XML编写的,扩展性强,功能更强大,而且还支持数据类型和命名空间,也正因为如此,Schema将有可能替代DTD。 简易元素简易元素指那些仅包含元素文本,不包含任何其它的元素和属性的元素。语法格式如下: <xs:element name="xxx" type="yyy" default="zzz"/>
xxx是元素名称,yyy是元素类型,zzz设定了元素的默认值,如果把defaut替换为fixed,那么zzz就是元素的固定值。XML Schema定义了一些内建的元素类型如下: xs:string 属性简易元素无法拥有属性,拥有属性的元素为复合类型的元素。属性定义格式为: <xs:attribute name="xxx" type="yyy" default="zzz"/>
xxx是属性名称,yyy是属性类型,zzz设定了属性的默认值,还可以通过fixed设定元素的固定值,属性在默认情况下是可选的,可使用use=”required”设定属性为必选。 限定facet对于元素或者属性来说,可使用restriction对其进行限定,限定其可接受的值,限定类型有如下内容: 下面是一个简单的例子,限定passwd元素的长度为8: <xs:element name="passwd">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
复合元素复合元素指那些包含其它元素或/及属性的元素。 <family>
<name>Smith</name>
<address>China</address>
</family>
在Shema中可使用下面的方式进行定义: <xs:element name="family">
<xs:complexType>
<xs:sequence base="xs:string">
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
sequence指示了元素声明的顺序。对于上面的例子,复合类型定义只能使用于family元素,不过family元素还可以使用type属性来引用复合类型的名称(这样做的好处是复合类型定义不专属于某个元素,可同时被多个元素使用,还可以被其它的复合类型定义作进一步的扩展): <xs:element name="family" type="privateinfo"/>
<xs:complexType name="privateinfo">
<xs:sequence base="xs:string">
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
</xs:sequence>
</xs:complexType>
其它的元素使用privateinfo这个复合类型定义: <xs:element name="school" type="privateinfo"/>
<xs:element name="company" type="privateinfo"/>
对privateinfo复合类型定义扩展为fullprivateinfo: <xs:element name="company" type="fullprivateinfo"/>
<xs:complexType name="fullprivateinfo">
<xs:complexContext>
<xs:extension base="privateinfo">
<xs:sequence base="xs:string">
<xs:element name="logo" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:comlexContext>
</xs:complexType>
由于只要拥有其它元素或属性的元素即为复合元素,所以复合元素比简单元素要复杂的多,复合元素有几种情况:空元素、包含其它元素的元素、仅包含文本的元素、包含元素和文本的元素。当复合元素同时包含元素和文本时,在Schema中可使用mixed=”true”定义元素内容包含了混合类型。 扩展—— 指示器指示器的作用是控制元素在文档中的使用方式,有7个指示器—— all:规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次。 Schema实例一般格式schema文件: <?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="xxx" xmlns="yyy" elementFormDefault="qualified">
<xs:element name="passwd">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
xs:schema为根元素。 <?xml version="1.0"?>
<passwd xmlns="aaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi="bbb">
abcdefgh
</passwd>
xmlns=”aaa”规定了默认的命名空间。 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”规定了Schema实例命名空间。 xsi=”bbb”指定Schema文件的命名空间及位置。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |