DTD的意图在于定义XML文档的合法构建模块。他通过定义一系列合法的元素决定了XMl文档的内部结构。结构良好的XML文档不一定是有效的XML文档,但有效的XML文档一定是结构良好的XML文档。
DTD分为内部文档和外部文档
内部文档:<!DOCTYPE root-element [element-declarations]>
含有内部DTD的XML文档一例
<?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>Dont't forget me this weekend</body>
</note>
!DOCTYPE note 定义文档的根元素为note
!ELEMENT note定义note元素包含4个元素:to,from,heading,body
!ELEMENT to 定义类型为"#PCDATA"的to元素
。。。
外部DTD声明:<!DOCTYPE root-element SYSTEM "filename">
<?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>
note.dtd
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
为什么用DTD?
XML文档可以存储固定格式的数据
不同的开发组可以按一定格式交换数据
应用程序可以验证来自外部的文档是否有效
当然也可以验证自己的文档