XML DTD既可以在文件中指定,也可以儲存在單獨的文件中,然後可以將文件連結到DTD文件以使用它。
語法
DTD的基本語法如下 -
<!DOCTYPE element DTD identifier
[
declaration1
declaration2
........
]>
在上面的語法中 -
DTD
以<!DOCTYPE
分隔符開頭。[]
包含一個稱為內部子集的可選實體宣告列表。如果在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 Su</name>
<company>Yiibai Yiibai</company>
<phone>(086) 123-4567-789</phone>
</address>
下面來看看上面的程式碼 -
開始宣告 - 使用以下語句開始XML宣告。
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
DTD
- 緊跟在XML檔頭之後,文件型別宣告如下,通常稱為DOCTYPE
-
<!DOCTYPE address [
DOCTYPE
宣告在元素名稱的開頭有一個感嘆號(!
)。 DOCTYPE
通知解析器DTD與此XML文件相關聯。
DTD主體 - DOCTYPE
宣告後跟DTD的主體,可以在主體中宣告元素,屬性,實體和符號 -
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>
這裡宣告了幾個元素,它們構成了<name>
文件的詞彙表。 <!ELEMENT name(#PCDATA)>
將元素名稱定義為「#PCDATA」
型別。這裡#PCDATA
表示可解析的文字資料。
結束宣告 - 最後,DTD的宣告部分使用右括號和閉合角括號 - ]>
關閉。 這有效地結束了定義,此後就是XML文件的內容。
規則
DOCTYPE
宣告類似,元素宣告必須以感嘆號開頭。Name
必須與根元素的元素型別匹配。在外部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 Su</name>
<company>Yiibai Yiibai</company>
<phone>(086) 123-4567789</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參照。
PUBLIC識別符號
PUBLIC
識別符號提供了一種定位DTD資源的機制,如下所示 -
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
如上所見,它以關鍵字PUBLIC
開頭,後跟專用識別符號。 PUBLIC
識別符號用於標識目錄中的條目。 PUBLIC
識別符號可以遵循任何格式,但是,常用的格式稱為PUBLIC
公共識別符號或FPI。