XML DTD

語法正確的 XML 文檔被稱為“格式良好”。

根據 DTD 驗證的 XML 文檔,既是“格式良好”的,又是“有效”的。

什么是 DTD?

DTD 代表文檔類型定義(Document Type Definition)。

DTD 定義 XML 文檔的結構,以及合法的元素和屬性。

有效的 XML 文檔

“有效”的 XML 文檔既是“格式良好”的,同時也要符合 DTD 的規則:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</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  - 將 heading 元素定義為 "#PCDATA" 類型
!ELEMENT body - 將 body 元素定義為 "#PCDATA" 類型

提示:#PCDATA 表示可解析的字符數據(parseable character data)。

使用 DTD 進行實體聲明

DOCTYPE 聲明還可用于定義文檔中使用的特殊字符或字符串:

實例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY nbsp " ">
<!ENTITY writer "Writer: Bill Gates.">
<!ENTITY copyright "Copyright: CodeW3C.com.">
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
<footer>&writer; ©right;</footer>
</note>

提示:實體由三部分組成:以與號 (&) 開頭,然后是實體名稱,最后以分號 (;) 結尾。

何時使用 DTD?

有了 DTD,獨立的群體可以就交換數據的標準達成一致。

使用 DTD,您可以驗證從外界接收的數據是否有效。

您還可以使用 DTD 來驗證您自己的數據。

如果您希望學習 DTD,請閱讀我們的 DTD 教程

何時不使用 DTD?

對于 XML,DTD 不是必需的。

如果您正在測試 XML,或使用的是很小的 XML 文件時,創建 DTD 可能是在浪費時間。

如果您正在開發應用程序,請等到規范穩定后再添加 DTD。否則,您的軟件可能會因驗證錯誤而停止工作。