XML 和 DTD
语法正确的XML文档称为格式良好。
根据DTD验证的XML文档是格式良好和有效的。
什么是DTD?
DTD代表文档类型定义。
DTD定义XML文档的结构、合法元素和属性。
有效的XML文档
有效的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文件的引用。下面显示并解释DTD文件的内容。
XML DTD
DTD的目的是定义XML文档的结构、法律元素和属性:
Note.dtd:
<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
上述DTD的解释如下:
- !DOCTYPE note - 定义文档的根元素是note
- !ELEMENT note - 定义note元素必须包含元素:"to,from,heading,body"
- !ELEMENT to - 定义类型为的to元素 "#PCDATA"
- !ELEMENT from - 将from元素定义为 "#PCDATA"
- !ELEMENT heading - 定义标题元素的类型 "#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: W3Schools.">
]>
<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可能是浪费时间。
如果开发应用程序,请等到规范稳定后再添加DTD。否则,您的软件可能会因为验证错误而停止工作。