- DTD 有用資源
- DTD - 快速指南
- DTD - 有用資源
DTD - 語法
XML DTD 可以指定在文件內部,也可以儲存在單獨的文件中,然後將文件連結到 DTD 文件以使用它。
語法
DTD 的基本語法如下:
<!DOCTYPE element DTD identifier [ declaration1 declaration2 ........ ]>
在上述語法中:
DTD 以 <!DOCTYPE 分隔符開頭。
元素 告訴解析器從指定的根元素開始解析文件。
DTD 識別符號 是文件型別定義的識別符號,可以是系統上檔案的路徑或網際網路上檔案的 URL。如果 DTD 指向外部路徑,則稱為外部子集。
方括號 [ ] 包含一個可選的實體宣告列表,稱為內部子集。
內部 DTD
如果元素在 XML 檔案中宣告,則 DTD 被稱為內部 DTD。要將其引用為內部 DTD,XML 宣告中的standalone 屬性必須設定為yes。這意味著宣告獨立於外部源工作。
語法
內部 DTD 的語法如下所示:
<!DOCTYPE root-element [element-declarations]>
其中root-element 是根元素的名稱,element-declarations 是宣告元素的地方。
示例
以下是一個內部 DTD 的簡單示例:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?> <!DOCTYPE address [ <!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone (#PCDATA)> ]> <address> <name>Tanmay Patil</name> <company>TutorialsPoint</company> <phone>(011) 123-4567</phone> </address>
讓我們看一下上面的程式碼:
開始宣告 - 使用以下語句開始 XML 宣告。
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
DTD - 在 XML 頭之後,緊跟著文件型別宣告,通常稱為 DOCTYPE:
<!DOCTYPE address [
DOCTYPE 宣告在元素名稱的開頭有一個感嘆號 (!) 。DOCTYPE 通知解析器與該 XML 文件關聯了一個 DTD。
DTD 主體 - DOCTYPE 聲明後跟著 DTD 的主體,您可以在其中宣告元素、屬性、實體和符號:
<!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone_no (#PCDATA)>
這裡聲明瞭幾個元素,它們構成了<name>文件的詞彙表。<!ELEMENT name (#PCDATA)> 定義元素name 的型別為 "#PCDATA"。這裡 #PCDATA 表示可解析的文字資料。
結束宣告 - 最後,DTD 的宣告部分使用右括號和右尖括號 (]>) 關閉。這有效地結束了定義,此後,XML 文件緊隨其後。
規則
文件型別宣告必須出現在文件的開頭(僅在 XML 頭之前) - 不允許在文件中的任何其他位置出現。
與 DOCTYPE 宣告類似,元素宣告必須以感嘆號開頭。
文件型別宣告中的名稱必須與根元素的元素型別匹配。
外部 DTD
在外部 DTD 中,元素在 XML 檔案外部宣告。它們透過指定系統屬性來訪問,這些屬性可以是合法的.dtd 檔案或有效的 URL。要將其引用為外部 DTD,XML 宣告中的standalone 屬性必須設定為no。這意味著宣告包含來自外部源的資訊。
語法
以下是外部 DTD 的語法:
<!DOCTYPE root-element SYSTEM "file-name">
其中file-name 是副檔名為.dtd 的檔案。
示例
以下示例顯示了外部 DTD 的用法:
<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?> <!DOCTYPE address SYSTEM "address.dtd"> <address> <name>Tanmay Patil</name> <company>TutorialsPoint</company> <phone>(011) 123-4567</phone> </address>
DTD 檔案address.dtd的內容如下所示:
<!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone (#PCDATA)>
型別
您可以透過使用系統識別符號或公共識別符號來引用外部 DTD。
系統識別符號
系統識別符號使您能夠指定包含 DTD 宣告的外部檔案的位置。語法如下:
<!DOCTYPE name SYSTEM "address.dtd" [...]>
如您所見,它包含關鍵字 SYSTEM 和指向文件位置的 URI 引用。
公共識別符號
公共識別符號提供了一種查詢 DTD 資源的機制,並按如下方式編寫:
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
如您所見,它以關鍵字 PUBLIC 開頭,後跟一個專門的識別符號。公共識別符號用於標識目錄中的條目。公共識別符號可以遵循任何格式,但是,一種常用的格式稱為正式公共識別符號或 FPI。