目录

XML DTD


具有正确语法的 XML 文档称为"Well Formed"。

根据 DTD 验证的 XML 文档是 "Well Formed" 和 "Valid"。


什么是 DTD?

DTD 代表文档类型定义。

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


有效的 XML 文档

"Valid" XML 文档是"Well Formed",并且它符合 DTD 的规则:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

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


XML DTD

DTD 的目的是定义 XML 文档的结构以及合法元素和属性:

注意.dtd:

<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>

上面的DTD解释如下:

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

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



使用 DTD 进行实体声明

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

示例

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note [
<!ENTITY nbsp "&#xA0;">
<!ENTITY writer "Writer: Donald Duck.">
<!ENTITY copyright "Copyright: 91xjr.">
]>

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<footer>&writer;&nbsp;&copyright;</footer>
</note>
亲自试一试 »

提示:实体由三部分组成:以与号 (&) 开头,然后是实体名称,最后以分号 (;) 结尾。


何时使用 DTD?

通过 DTD,独立的群体可以同意使用标准 DTD 来交换数据。

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

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

如果您想学习 DTD,请阅读我们的DTD 教程


什么时候不应该使用 DTD?

XML 不需要 DTD。

当您尝试使用 XML 或使用小型 XML 文件时,创建 DTD 可能会浪费时间。

如果您开发应用程序,请等到规范稳定后再添加 DTD。否则,您的软件可能会因验证错误而停止工作。