XML DTD
语法正确的 XML 文档称为“格式良好的”。
根据 DTD 验证的 XML 文档既是“格式良好的”也是“有效的”。
什么是 DTD?
DTD 代表文档类型定义。
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>提醒</heading>
<body>这个周末别忘了我!</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 "作者:唐老鸭。">
<!ENTITY copyright "版权:W3Schools。">
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>提醒</heading>
<body>这个周末别忘了我!</body>
<footer>&writer; ©right;</footer>
</note>
自己试试 »
提示:实体包含三个部分:以一个与号 (&) 开始,然后是实体名称,最后以一个分号 (;) 结束。
何时使用 DTD?
使用 DTD,独立的个人群体可以同意使用标准 DTD 来交换数据。
使用 DTD,您可以验证从外部世界接收的数据是否有效。
您也可以使用 DTD 来验证您自己的数据。
如果您想学习 DTD,请阅读我们的 DTD 教程.
何时不使用 DTD?
XML 不需要 DTD。
当您尝试使用 XML 或使用小型 XML 文件时,创建 DTD 可能是浪费时间。
如果您开发应用程序,请等到规范稳定后再添加 DTD。否则,您的软件可能会由于验证错误而停止工作。