1、介绍
(1)XML Schema 是基于XML的DTD替代者
(2)XML Schema 描述XML 文档的机构
(3)XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)
DTD的缺点:
□ DTD 约束 xml 的时候,不能对 xml 中的数据类型做详细限定。
□ DTD 约束有自己的语法,书写时必须遵循 DTD 的语法。
□ 一个 xml 文件中只能引入一个 DTD 约束,而无法通过多个 DTD 文件来约束同一个xml文件。
Schema约束:
□ 对DTD那些缺点进行补充 。Schema文件它本身就是一个xml文件。书写的时候,它遵循xml的语法规则。
□ 在书写Schema的时候,就和书写xml文件一样。
□ 书写xml文件的时候,它的文件扩展名是xsd
□ Schema他可以限制属性和文本的数据类型
□ 子标签的顺序
□ 一个xml文夹可以引入N个Schema进行约束
2、Schema文件书写
(1)book.xsd:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<schema xmlns:xs="http://www.w3.org/2001/XMLSchema" //引入外部Schema约束
targetNamespace="http://www.example.org/book" //命名空间(唯一标识):供其他文件“xmlns”引入
xmlns;tns="http://www.example.org/book"
elementFormDefault="qualified">
<!--
在Schema文件中使用element标签来定义book.xml中可以书写的标签名
-->
<element name="books">
<!--
1、books中的子标签,需要在Schema中定义的books的标签内部嵌入element来定义。
2、简单标签:这个标签没有子标签,也没有属性。
3、复杂标签:这个标签拥有子标签或者属性。
4、在element标签中使用complexType来声明当前element定义的标签为一个复杂标签
-->
<complexType>
<!-- 在complexType使用sequence定义子标签之间的顺序 -->
<sequence>
<element name="book">
<complexType>
<sequence>
<!-- type:可以指定该标签的数据类型(即为简单标签) -->
<element name="name" type="string">
<!-- simpleType指定此标签为简单标签(指定了element的type属性就不在需要此标签了) -->
<simpleType></simpleType>
</elemenet>
<element name="author" type="string"></elemenet>
<element name="price" type="double"></elemenet>
</sequence>
</complexType>
</elemenet>
</sequence>
</complexType>
</element>
</xs:schema>
(2)在book.xml文件中引用book.xsd:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<books>
<book
xmlns="http://www.example.org/book"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //表名该文件是一个http://www.w3.org/2001/XMLSchema的实例,不是schema约束文件
xis:schemaLocation="http://www.example.org/book book.xsd">
<name>童话</name>
<author>安徒生</author>
<price>69.9</price>
</book>
</books>
3、Schema文件和xml文件引用关系