XML 中使用 DTD

拥有正确语法的 XML 被称为“格式良好”的 XML。

通过 DTD 验证的 XML 是“合法”的 XML。


什么是 DTD?

DTD 代表文档类型定义。

DTD 定义 XML 文档的结构、合法元素和属性。


验证 XML 文档"有效的" XML文档 是"格式良好的",并且符合DTD的规则:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE note SYSTEM "Note.dtd">
  3. <note>
  4. <to>李雷</to>
  5. <from>韩梅梅</from>
  6. <heading>提醒</heading>
  7. <body>周末别忘了我!</body>
  8. </note>

上面的 DOCTYPE 声明包含对 DTD 文件的引用。下面显示并解释 DTD 文件的内容。


XML DTD

DTD 的目的是定义 XML 文档的结构、合规元素和属性:

Note.dtd:
  1. <!DOCTYPE note
  2. [
  3. <!ELEMENT note (to,from,heading,body)>
  4. <!ELEMENT to (#PCDATA)>
  5. <!ELEMENT from (#PCDATA)>
  6. <!ELEMENT heading (#PCDATA)>
  7. <!ELEMENT body (#PCDATA)>
  8. ]>

上述DTD的解释如下:

  • !DOCTYPE note-定义文档的根元素是note
  • !ELEMENT note-定义注释元素必须包含元素:"to,from,heading,body"
  • !ELEMENT to-定义to元素的类型为"#PCDATA"
  • !ELEMENT from-将from元素定义为"#PCDATA"类型
  • !ELEMENT heading-定义标题元素的类型为"#PCDATA"
  • !ELEMENT body-定义类型为"#PCDATA"的体元素

提示:#PCDATA表示可解析的字符数据。


使用DTD进行实体声明

DOCTYPE声明还可用于定义文档中使用的特殊字符或字符串:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE note [
  3. <!ENTITY nbsp "&#xA0;">
  4. <!ENTITY writer "Writer: 韩梅梅.">
  5. <!ENTITY copyright "Copyright: Cankaoshouce.">
  6. ]>
  7. <note>
  8. <to>李雷</to>
  9. <from>韩梅梅</from>
  10. <heading>提醒</heading>
  11. <body>周末别忘了我!</body>
  12. <footer>&writer;&nbsp;&copyright;</footer>
  13. </note>

提示:实体有三个部分:以符号(&)开头,然后是实体名称,最后是分号(;)。


何时使用 DTD ?

有了 DTD,独立的人群可以同意使用标准 DTD 交换数据。

使用 DTD,您可以验证从外部世界接收的数据是否有效。

您还可以使用 DTD 来验证您自己的数据。

如果您想学习更多的 DTD 知识,请访问本站的 DTD 教程