XSD教程

来源:互联网 发布:vim for mac os x 编辑:程序博客网 时间:2024/05/01 09:20

XSD对传入的XML进行验证

1.什么是XSD?

•XML Schema 是基于XML 的DTD 替代者。
•XML Schema 描述XML 文档的结构。
•XML Schema 语言也称作XML Schema 定义(XML Schema Definition,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文件对dtdxsd的引用及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 200152日成为W3C标准