XML-Schema
Schema是用于描述和规范XML文档的逻辑结构的一种语言,它最大的作用就是验证XML的正确性。可以理解成与DTD(文档类型定义)功能差不多。
XML Schema 是 DTD 的继任者
理由如下:
- XML Schema 可针对未来的需求进行扩展
- XML Schema 更完善,功能更强大
- XML Schema 基于 XML 编写
- XML Schema 支持数据类型
- XML Schema 支持命名空间
<书本 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F:\XML\Schema\book.xsd"> <名册>123</名册> <作者>Lin</作者> </书本>
验证Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- 默认xs命名空间于引用DTD的地址(http://www.w3.org/2001/XMLSchema)验证 --> <!--schema根元素--> <!--complexType 复杂类型--> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:complexType name="书本类型"> <xs:all> <xs:element name="名册" type="xs:string"/> <xs:element name="作者" type="xs:string"/> </xs:all> </xs:complexType> <xs:element name="书本" type="书本类型"/> </xs:schema>
转换成group形式
<?xml version="1.0" encoding="UTF-8"?> <!-- 默认xs命名空间于引用DTD的地址(http://www.w3.org/2001/XMLSchema)验证 --> <!--schema根元素--> <!--complexType 复杂类型--> <!--all 规定子元素能够以任意顺序出现,每个子元素可出现零次或一次。--> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:group name="书本组"> <xs:all> <xs:element name="名册" type="xs:string"/> <xs:element name="作者" type="xs:string"/> </xs:all> </xs:group> <xs:complexType name="书本类型"> <xs:group ref="书本组"/> </xs:complexType> <xs:element name="书本" type="书本类型"/> </xs:schema>
属性group
<!-- use表示 prohibited禁止 required必须- optional可选--> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:attributeGroup name="myAttrGroup"> <xs:attribute name="属性1" use="optional "/> <xs:attribute name="属性2" use= "prohibited"/> </xs:attributeGroup> <xs:element name="元素"> <xs:complexType> <xs:attributeGroup ref="myAttrGroup"/> </xs:complexType> </xs:element> </xs:schema>
<?xml version="1.0" encoding="UTF-8"?> <元素 属性1="" 属性2="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F:\XML\Schema\book.xsd"/>
simpleType
<!-- simpleType简单类型 只能在基本类型上扩展--> <!-- restriction限制范围--> <!--list集合一个或者多个--> <!--union 多个类型中的其中一个--> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:simpleType name="限定范围"> <xs:restriction base="xs:int"> <xs:enumeration value="1"/> <xs:enumeration value="2"/> <xs:enumeration value="3"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="集合"> <xs:list itemType="xs:date"/> </xs:simpleType> <xs:simpleType name="可选"> <xs:union memberTypes="集合 限定范围"/> </xs:simpleType> <xs:element name="元素" type="可选"/> </xs:schema>
<?xml version="1.0" encoding="UTF-8"?> <元素 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F:\XML\Schema\book.xsd">2012-10-12 2012-10-11</元素> 或者 <?xml version="1.0" encoding="UTF-8"?> <元素 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F:\XML\Schema\book.xsd">2012-10-12 2012-10-11</元素>
复杂例子
<?xml version="1.0" encoding="UTF-8"?> <学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F:\XML\Schema\student.xsd" > <学生 学号="1"> <姓名/> <性别>男</性别> <年龄>1</年龄> </学生> <学生 学号="1"> <姓名/> <性别>男</性别> <年龄>1</年龄> </学生> <学生 学号="1"> <姓名/> <性别/> <年龄>1</年龄> </学生> </学生名册>
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="学生名册"> <xs:complexType> <xs:sequence minOccurs="3" maxOccurs="unbounded"> <xs:element ref="学生"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="学生"> <xs:complexType> <xs:sequence> <xs:element name="姓名" type="xs:string"/> <xs:element name="性别" default="男" > <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="男"/> <xs:enumeration value="女"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="年龄"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minExclusive value="0"/> <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> <xs:attribute name="学号" type="xs:integer" use="required"/> </xs:complexType> </xs:element> </xs:schema>


浙公网安备 33010602011771号