DTD 简介
文档类型定义(DTD)可定义合法的 XML文档组成部件,它使用一系列合法的元素来定义文档的结构
DTD 可被声明于 XML 文档中,也可作为一个外部引用
内部的 DOCTYPE 声明
假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:
<!DOCTYPE root-element [element-declarations]>
带有 DTD 的 XML 文档实例(请在浏览器中打开,并选择查看源代码):
<?xml version="1.0" encoding="UTF-8" ?> <!-- Copyright www.twle.cn --> <!DOCTYPE article [ <!ELEMENT article (author,created_at,summary,content)> <!ELEMENT author (#PCDATA)> <!ELEMENT created_at (#PCDATA)> <!ELEMENT summary (#PCDATA)> <!ELEMENT content (#PCDATA)> ]> <article> <author>简单教程</author> <created_at>2017-08-08 08:08:08</created_at> <summary>简单教程,简单编程</summary> <content>简单教程[www.twle.cn]以编程开发所需掌握的语言和知识入手...</content> </article>
简单解释下上面的 DTD:
-
!DOCTYPE article
(第三行)定义此文档是article
类型的文档 -
!ELEMENT article
(第四行)定义 article 元素有四个元素:author,created_at,summary,content
-
!ELEMENT author
(第五行)定义 author 元素为 "#PCDATA" 类型 -
!ELEMENT created_at
(第六行)定义 created_at 元素为 "#PCDATA" 类型 -
!ELEMENT summary
(第七行)定义 summary 元素为 "#PCDATA" 类型 -
!ELEMENT content
(第八行)定义 content 元素为 "#PCDATA" 类型
外部文档声明
如果 DTD 位于 XML 文件以外的其他文件中,那么 XML 文件必须在 DOCTYPE 声明中通过以下的语法引入这个 DTD
<!DOCTYPE root-element SYSTEM "filename">
这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD: ( 在浏览器中打开 ,并选择查看源代码
命令)
<?xml version="1.0" encoding="UTF-8" ?> <!-- Copyright www.twle.cn --> <!DOCTYPE article SYSTEM "https://www.twle.cn/static/media/note.dtd"> <article> <author>简单教程</author> <created_at>2017-08-08 08:08:08</created_at> <summary>简单教程,简单编程</summary> <content>简单教程[www.twle.cn]以编程开发所需掌握的语言和知识入手...</content> </article>
https://www.twle.cn/static/media/note.dtd
文件中 DTD 声明如下
<?xml version="1.0" encoding="UTF-8" ?> <!-- Copyright www.twle.cn --> <!DOCTYPE article [ <!ELEMENT article (author,created_at,summary,content)> <!ELEMENT author (#PCDATA)> <!ELEMENT created_at (#PCDATA)> <!ELEMENT summary (#PCDATA)> <!ELEMENT content (#PCDATA)> ]>
为什么使用 DTD?
- 通过 DTD,我们的每一个 XML 文件均可携带一个有关其自身格式的描述
- 通过 DTD,独立的团队可一致地使用某个标准的 DTD 来交换数据
- 我们的应用程序可以使用某个标准的 DTD 来验证从外部接收到的数据
- 我们还可以使用 DTD 来验证自身的数据