XML Schema(XSD) 用法

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


一个简单的 XML 文档:

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

  1. <?xml version="1.0"?>
  2. <note>
  3. <to>李雷</to>
  4. <from>韩梅梅</from>
  5. <heading>提醒</heading>
  6. <body>这个周末别忘了我!</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="https://cankaoshouce.com"
  4. xmlns="https://cankaoshouce.com"
  5. elementFormDefault="qualified">
  6. <xs:element name="note">
  7. <xs:complexType>
  8. <xs:sequence>
  9. <xs:element name="to" type="xs:string"/>
  10. <xs:element name="from" type="xs:string"/>
  11. <xs:element name="heading" type="xs:string"/>
  12. <xs:element name="body" type="xs:string"/>
  13. </xs:sequence>
  14. </xs:complexType>
  15. </xs:element>
  16. </xs:schema>

note 元素是一个复合类型,因为它包含其他的子元素。其他元素 (to, from, heading, body) 是简易类型,因为它们没有包含其他元素。


对 DTD 的引用

此文件包含对 DTD 的引用:

  1. <?xml version="1.0"?>
  2. <!DOCTYPE note SYSTEM "https://cankaoshouce.com/dtd/note.dtd">
  3. <note>
  4. <to>李雷</to>
  5. <from>韩梅梅</from>
  6. <heading>提醒</heading>
  7. <body>这个周末别忘了我!</body>
  8. </note>

对 XML Schema 的引用

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

  1. <?xml version="1.0"?>
  2. <note
  3. xmlns="https://cankaoshouce.com"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="https://cankaoshouce.com note.xsd">
  6. <to>李雷</to>
  7. <from>韩梅梅</from>
  8. <heading>提醒</heading>
  9. <body>这个周末别忘了我!</body>
  10. </note>