用正确的语法的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
" ">
<!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; ©right;</footer>
</note>
试一试» 实体有三个部分:一个与符号(&)一个实体名称和分号(;)
何时使用DTD /模式?
使用DTD,人的独立团体可以同意使用标准的DTD交换数据。
使用DTD,您可以验证你从外界接收到的数据是有效的。
你也可以使用一个DTD来验证你自己的数据。
如果你想学习DTD,请阅读我们的DTD教程 。
何时不使用DTD /模式?
XML不要求一个DTD /架构。
当您使用XML试验,或者当您用小的XML文件时,创建的DTD可能是在浪费时间。
如果你开发应用程序,等到规范稳定您添加文档定义之前。 否则,你的软件可能停止,因为验证错误的工作。