如何使用 XSD?

XML 文档可对 DTD 或 XML Schema 进行引用。

一个简单的 XML 文档:

请看这个名为 "note.xml" 的 XML 文档:

  1. <?xml version="1.0"?>
  2. <note>
  3. <to>George</to>
  4. <from>John</from>
  5. <heading>Reminder</heading>
  6. <body>Don't forget the meeting!</body>
  7. </note>

DTD 文件

下面这个例子是名为 "note.dtd" 的 DTD 文件,它对上面那个 XML 文档的元素进行了定义:

  1. <!ELEMENT note (to, from, heading, body)>
  2. <!ELEMENT to (#PCDATA)>
  3. <!ELEMENT from (#PCDATA)>
  4. <!ELEMENT heading (#PCDATA)>
  5. <!ELEMENT body (#PCDATA)>

第 1 行定义 note 元素有四个子元素:"to, from, heading, body"。

第 2-5 行定义了 to, from, heading, body 元素的类型是 "#PCDATA"。

XML Schema

下面这个例子是一个名为 "note.xsd" 的 XML Schema 文件,它定义了上面那个 XML 文档的元素:

  1. <?xml version="1.0"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  3. targetNamespace="http://www.baidu.com"
  4. xmlns="http://www.baidu.com"
  5. elementFormDefault="qualified">
  6.  
  7. <xs:element name="note">
  8. <xs:complexType>
  9. <xs:sequence>
  10. <xs:element name="to" type="xs:string"/>
  11. <xs:element name="from" type="xs:string"/>
  12. <xs:element name="heading" type="xs:string"/>
  13. <xs:element name="body" type="xs:string"/>
  14. </xs:sequence>
  15. </xs:complexType>
  16. </xs:element>
  17.  
  18. </xs:schema>

note 元素是一个复合类型,因为它包含其他的子元素。其他元素 (to, from, heading, body) 是简易类型,因为它们没有包含其他元素。您将在下面的章节学习更多有关复合类型和简易类型的知识。

对 DTD 的引用

此文件包含对 DTD 的引用:

  1. <?xml version="1.0"?>
  2. <!DOCTYPE note SYSTEM "http://www.yousite.com/note.dtd">
  3. <note>
  4. <to>George</to>
  5. <from>John</from>
  6. <heading>Reminder</heading>
  7. <body>Don't forget the meeting!</body>
  8. </note>

对 XML Schema 的引用

此文件包含对 XML Schema 的引用:

  1. <?xml version="1.0"?>
  2. <note
  3. xmlns="http://www.yousite.com"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.yousite.com note.xsd">
  6.  
  7. <to>George</to>
  8. <from>John</from>
  9. <heading>Reminder</heading>
  10. <body>Don't forget the meeting!</body>
  11. </note>