最新的Web开发教程
 

XML DTD


用正确的语法的XML文档被称为"Well Formed"

根据DTD验证XML文档既是"Well Formed""Valid"


有效的XML文档

一个"Valid"的XML文档是一个"Well Formed" XML文档,这也符合一个DTD的规则:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

DOCTYPE声明,在上述的例子中,是对外部DTD文件的引用。 该文件的内容显示在下面的段落。


XML DTD

一个DTD的目的是定义XML文档的结构。 它定义了合法元素的列表结构:

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

该DTD上述这样解释:

  • !DOCTYPE笔记定义了文档的根元素笔记
  • !ELEMENT记定义note元素必须包含的元素: "to, from, heading, body"
  • !ELEMENT到定义为元素为类型"#PCDATA"
  • !从元素定义从元素为类型"#PCDATA"
  • !ELEMENT标题定义标题元素为类型"#PCDATA"
  • !ELEMENT体定义body元素为类型"#PCDATA"

#PCDATA意味着语法分析文本数据。


使用DTD对实体声明

DOCTYPE声明也可以用来定义特殊字符和字符串,在文档中使用:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note [
<!ENTITY nbsp "&#xA0;">
<!ENTITY writer "Writer: Donald Duck.">
<!ENTITY copyright "Copyright: w3ii.">
]>

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<footer>&writer;&nbsp;&copyright;</footer>
</note>
试一试»

实体有三个部分:一个与符号(&)一个实体名称和分号(;)


何时使用DTD /模式?

使用DTD,人的独立团体可以同意使用标准的DTD交换数据。

使用DTD,您可以验证你从外界接收到的数据是有效的。

你也可以使用一个DTD来验证你自己的数据。

如果你想学习DTD,请阅读我们的DTD教程


何时不使用DTD /模式?

XML不要求一个DTD /架构。

当您使用XML试验,或者当您用小的XML文件时,创建的DTD可能是在浪费时间。

如果你开发应用程序,等到规范稳定您添加文档定义之前。 否则,你的软件可能停止,因为验证错误的工作。