xml解释-Xml Schema(XSD)
XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。 XML Schema 是基于 XML 的 DTD 替代者。 XML Schema 可描述 XML 文档的结构。
---------------------------------------------------------------------XML Schema 简介 您应当具备的基础知识在继续学习之前,您需要对下面的知识有基本的了解:
如果您希望首先学习这些项目,请在 首页 访问这些教程。 什么是 XML Schema?XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。 XML Schema:
XML Schema 是 DTD 的继任者我们认为 XML Schema 很快会在大部分网络应用程序中取代 DTD。 理由如下:
XML Schema 是 W3C 标准XML Schema 在 2001 年 5 月 2 日成为 W3C 标准。 您可以在我们的《W3C 教程》中获得更多有关 XML Schema 标准的信息。 ---------------------------------------------------------------------为什么要使用 XML Schema XML Schema 比 DTD 更强大。 XML Schema 支持数据类型XML Schema 最重要的能力之一就是对数据类型的支持。 通过对数据类型的支持:
编者注:数据约束,或称 facets,是 XML Schema 原型中的一个术语,中文可译为“面”,用来约束数据类型的容许值。 XML Schema 使用 XML 语法另一个关于 XML Schema 的重要特性是,它们由 XML 编写。 由 XML 编写 XML Schema 有很多好处:
XML Schema 可保护数据通信当数据从发送方被发送到接受方时,其要点是双方应有关于内容的相同的“期望值”。 通过 XML Schema,发送方可以用一种接受方能够明白的方式来描述数据。 一种数据,比如 "03-11-2004",在某些国家被解释为11月3日,而在另一些国家为当作3月11日。 但是一个带有数据类型的 XML 元素,比如:<date type="date">2004-03-11</date>,可确保对内容一致的理解,这是因为 XML 的数据类型 "date" 要求的格式是 "YYYY-MM-DD"。 XML Schema 可扩展XML Schema 是可扩展的,因为它们由 XML 编写。 通过可扩展的 Schema 定义,您可以:
形式良好是不够的我们把符合 XML 语法的文档称为形式良好的 XML 文档,比如:
即使文档的形式良好,仍然不能保证它们不会包含错误,并且这些错误可能会产生严重的后果。 请考虑下面的情况:您订购的了 5 打激光打印机,而不是 5 台。通过 XML Schema,大部分这样的错误会被您的验证软件捕获到。 ---------------------------------------------------------------------如何使用 XSD XML 文档可对 DTD 或 XML Schema 进行引用。 一个简单的 XML 文档:请看这个名为 "note.xml" 的 XML 文档: <?xml version="1.0"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</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)> 第 1 行定义 note 元素有四个子元素:"to,body"。 第 2-5 行定义了 to,body 元素的类型是 "#PCDATA"。 XML Schema下面这个例子是一个名为 "note.xsd" 的 XML Schema 文件,它定义了上面那个 XML 文档的元素: <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> note 元素是一个复合类型,因为它包含其他的子元素。其他元素 (to,body) 是简易类型,因为它们没有包含其他元素。您将在下面的章节学习更多有关复合类型和简易类型的知识。 对 DTD 的引用此文件包含对 DTD 的引用: <?xml version="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note><!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd">
对 XML Schema 的引用此文件包含对 XML Schema 的引用: <?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>xsi:schemaLocation="http://www.w3school.com.cn note.xsd"
---------------------------------------------------------------------XSD - <schema> 元素 <schema> 元素是每一个 XML Schema 的根元素。 <schema> 元素<schema> 元素是每一个 XML Schema 的根元素: <?xml version="1.0"?> <xs:schema> ... ... </xs:schema> <schema> 元素可包含属性。一个 schema 声明往往看上去类似这样: <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> ... ... </xs:schema> 代码解释:下面的片断: xmlns:xs="http://www.w3.org/2001/XMLSchema" 显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs: 这个片断: targetNamespace="http://www.w3school.com.cn" 显示被此 schema 定义的元素 (note,to,body) 来自命名空间: "http://www.w3school.com.cn"。 这个片断: xmlns="http://www.w3school.com.cn" 指出默认的命名空间是 "http://www.w3school.com.cn"。 这个片断: elementFormDefault="qualified" 指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
---------------------------------------------------------------------在 XML 文档中引用 Schema 在 XML 文档中引用 Schema此 XML 文档含有对 XML Schema 的引用: <?xml version="1.0"?>
<note xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
代码解释:下面的片断: xmlns="http://www.w3school.com.cn" 规定了默认命名空间的声明。此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素都被声明于 "http://www.w3school.com.cn" 这个命名空间。 一旦您拥有了可用的 XML Schema 实例命名空间: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 您就可以使用 schemaLocation 属性了。此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置: xsi:schemaLocation=http://www.w3school.com.cn note.xsd (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |