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>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</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 表示可解析字符数据。
使用 DTD 进行实体声明
DOCTYPE 声明还可用于定义文档中使用的特殊字符或字符串。
示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY nbsp " ">
<!ENTITY writer "Writer: Donald Duck.">
<!ENTITY copyright "Copyright: W3Schools.">
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<footer>&writer; ©right;</footer>
</note>
自己动手试一试 »
提示: 实体有三个部分:以“&”开头,后跟实体名称,并以“;”结尾。
何时使用 DTD?
使用 DTD,独立的人们可以同意使用标准 DTD 来交换数据。
使用 DTD,您可以验证从外部世界接收到的数据是否有效。
您也可以使用 DTD 来验证您自己的数据。
如果您想学习 DTD,请阅读我们的 DTD 教程。
何时不使用 DTD?
XML 不需要 DTD。
当您尝试 XML 或处理小型 XML 文件时,创建 DTD 可能是在浪费时间。
如果您开发应用程序,请等到规范稳定后再添加 DTD。否则,您的软件可能会因验证错误而停止工作。