最新的Web开发教程
 

DTD教程


什么是DTD?

一个DTD是文档类型定义。

DTD定义的结构和XML文档的合法元素和属性。


为什么使用DTD?

使用DTD,人的独立团体可以对交换数据的标准DTD达成一致。

应用程序可以使用一个DTD来验证XML数据是有效的。


内部DTD声明

如果DTD XML文件中声明,它必须被包裹在里面<!DOCTYPE>定义:

具有内部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>Don't forget me this weekend</body>
</note>
查看XML文件»

在XML文件中,选择"view source"来查看DTD。

该DTD上述这样解释:

  • !DOCTYPE note定义了该文件的根元素是音符
  • !ELEMENT note定义note元素必须包含四个要素: "to,from,heading,body"
  • !ELEMENT to定义为元素为类型"#PCDATA"
  • !ELEMENT from定义了从元素为类型"#PCDATA"
  • !ELEMENT heading定义标题元素为类型"#PCDATA"
  • !ELEMENT body定义body元素为类型"#PCDATA"

外部的DTD声明

如果DTD是在外部文件中声明,该<!DOCTYPE>定义必须包含对DTD文件的引用:

与对外部DTD的引用的XML文档

<?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>
查看XML文件»

这里是文件"note.dtd"其中包含了DTD:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>