XSD对传入的XML进行验证
1.什么是XSD?
例如:一个note.xml文件定义如下。
<?xmlversion="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget themeeting!</body>
</note>
DTD 文件
下面这个例子是名为"note.dtd" 的DTD 文件,
它对上面那个XML 文档的元素进行了定义:
<!ELEMENT note (to, from, heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
XML Schema
下面这个例子是一个名为"note.xsd"的XMLSchema文件,它定义了上面那个XML文档的元素:
<?xmlversion="1.0"?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.w3school.com.cn"xmlns="http://www.w3school.com.cn"elementFormDefault="qualified"><xs:elementname="note">
<xs:complexType>
<xs:sequence>
<xs:elementname="to" type="xs:string"/>
<xs:elementname="from" type="xs:string"/>
<xs:elementname="heading" type="xs:string"/>
<xs:elementname="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
note元素是一个复合类型,因为它包含其他的子元素。其他元素(to,from, heading, body)是简易类型,因为它们没有包含其他元素。
xml文件对dtd和xsd的引用及xsd的优点
对 DTD的引用
此文件包含对DTD的引用:
<?xmlversion="1.0"?>
<!DOCTYPEnote SYSTEM "http://www.w3school.com.cn/dtd/note.dtd"><note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don'tforget the meeting!</body>
</note>
对 XMLSchema的引用
此文件包含对XMLSchema的引用:
<?xmlversion="1.0"?>
<notexmlns="http://www.w3school.com.cn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3school.com.cnnote.xsd"> <to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don'tforget the meeting!</body>
</note>
XMLSchema的优点。
XML Schema:
定义可出现在文档中的元素
定义可出现在文档中的属性
定义哪个元素是子元素
定义子元素的次序
定义子元素的数目
定义元素是否为空,或者是否可包含文本
定义元素和属性的数据类型
定义元素和属性的默认值以及固定值
XML Schema 是DTD的继任者
我们认为XMLSchema很快会在大部分网络应用程序中取代DTD。
理由如下:
XMLSchema 可针对未来的需求进行扩展
XMLSchema 更完善,功能更强大
XMLSchema 基于XML 编写
XMLSchema 支持数据类型
XMLSchema 支持命名空间
XML Schema 是W3C标准
XMLSchema 在2001 年5 月2 日成为W3C 标准。