DTD 簡介
文檔類型定義(DTD)可定義合法的XML文檔構建模組。它使用一系列合法的元素來定義文檔的結構。
DTD 可被成行地聲明於 XML 文檔中,也可作為一個外部引用。
內部的 DOCTYPE 聲明
假如 DTD 被包含在您的 XML 原始檔案中,它應當通過下麵的語法包裝在一個 DOCTYPE 聲明中:
<!DOCTYPE root-element [element-declarations]>
帶有 DTD 的 XML 文檔實例(請在 IE5 以及更高的版本打開,並選擇查看源代碼):
<?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>
<!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 檔,並選擇"查看源代碼"命令。
以上 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" 類型
外部文檔聲明
假如 DTD 位於 XML 原始檔案的外部,那麼它應通過下麵的語法被封裝在一個 DOCTYPE 定義中:
<!DOCTYPE root-element SYSTEM "filename">
這個 XML 文檔和上面的 XML 文檔相同,但是擁有一個外部的 DTD: (點擊打開該檔,並選擇"查看源代碼"命令。)
<?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>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
這是包含 DTD 的 "note.dtd" 檔:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
為什麼使用 DTD?
通過 DTD,您的每一個 XML 檔均可攜帶一個有關其自身格式的描述。
通過 DTD,獨立的團體可一致地使用某個標準的 DTD 來交換數據。
而您的應用程式也可使用某個標準的 DTD 來驗證從外部接收到的數據。
您還可以使用 DTD 來驗證您自身的數據。