XML DTD
语法正确的 XML 文档被称为“格式良好”。
根据 DTD 验证的 XML 文档,既是“格式良好”的,又是“有效”的。
什么是 DTD?
DTD 代表文档类型定义(Document Type Definition)。
DTD 定义 XML 文档的结构,以及合法的元素和属性。
有效的 XML 文档
“有效”的 XML 文档既是“格式良好”的,同时也要符合 DTD 的规则:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note SYSTEM "Note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
上面的 DOCTYPE 声明包含对 DTD 文件的引用。下面展示并解释了 DTD 文件的内容。
XML DTD
DTD 的目的是定义 XML 文档的结构,以及合法的元素和属性:
Note.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 heading - 将 heading 元素定义为 "#PCDATA" 类型 !ELEMENT body - 将 body 元素定义为 "#PCDATA" 类型
提示:#PCDATA 表示可解析的字符数据(parseable character data)。
使用 DTD 进行实体声明
DOCTYPE 声明还可用于定义文档中使用的特殊字符或字符串:
实例
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note [ <!ENTITY nbsp " "> <!ENTITY writer "Writer: Bill Gates."> <!ENTITY copyright "Copyright: W3School."> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> <footer>&writer; ©right;</footer> </note>
提示:实体由三部分组成:以与号 (&) 开头,然后是实体名称,最后以分号 (;) 结尾。
何时使用 DTD?
有了 DTD,独立的群体可以就交换数据的标准达成一致。
使用 DTD,您可以验证从外界接收的数据是否有效。
您还可以使用 DTD 来验证您自己的数据。
如果您希望学习 DTD,请阅读我们的 DTD 教程。
何时不使用 DTD?
对于 XML,DTD 不是必需的。
如果您正在测试 XML,或使用的是很小的 XML 文件时,创建 DTD 可能是在浪费时间。
如果您正在开发应用程序,请等到规范稳定后再添加 DTD。否则,您的软件可能会因验证错误而停止工作。