在html中,DTD指的是“文档类型定义”,是一套关于标记符的语法规则,是html文件的验证机制,属于html文件组成的一部分。DTD可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。
本教程操作环境:windows7系统、HTML5版、Dell G3电脑。
文档类型定义(DTD)是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是html文件的验证机制,属于html文件组成的一部分。
DTD可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
内部的 DOCTYPE 声明
假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:
<!DOCTYPE root-element [element-declarations]>
带有 DTD 的 XML 文档实例(请在 IE5 以及更高的版本打开,并选择查看源代码):
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body> </note>
在您的浏览器中打开此 XML 文件,并选择"查看源代码"命令。
以上 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" 类型
外部文档声明
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:
<!DOCTYPE root-element SYSTEM "filename">
这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD: (点击打开该文件,并选择"查看源代码"命令。)
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
这是包含 DTD 的 "note.dtd" 文件:
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
为什么使用 DTD?
-
通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
-
通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
-
而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
-
您还可以使用 DTD 来验证您自身的数据。
DTD有三种文档类型:S(Strict)、T(Transitional)、F(Frameset)。
-
Strict:如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用
-
Transitional:DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时使用
-
Frameset: DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD
html5基本上没有XHTML 1.0 Transitional严格的要求,并且简化了很多东西可以直接使用 <!DOCTYPE HTML>
推荐教程:《html视频教程》