文档类型定义 dcoument type definition
规定程序间交换数据的规则。主要用于xml,规定xml。
用来规范一个xml的语法,方便一个团队的开发,都按照这个规则。
貌似编辑软件也能读懂这些规则从而给出快速提示。
内部声明
假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 !DOCTYPE 声明中:
<!DOCTYPE根元素 [元素声明]>
带有 DTD 的 XML 文档实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <? xmlversion = "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 > |
以上 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 根元素 SYSTEM "文件名">
这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:
1 2 3 4 5 6 7 8 9 | <? xmlversion = "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"文件:
1 2 3 4 5 | <! ELEMENT note(to,from,heading,body)> <! ELEMENT to(#PCDATA)> <! ELEMENT from(#PCDATA)> <! ELEMENT heading(#PCDATA)> <! ELEMENT body(#PCDATA)> |