XML文檔類型聲明,俗稱DTD,是一種方式來描述XML語言準確。檢查的DTD對辭彙的適當的XML語言的語法規則的XML文檔的結構和有效性.
一個XML的DTD既可以在文檔中指定的,或者它可以被保存在一個單獨的檔中,並且可以分別連結.
語法
一個DTD的基本語法如下所示:
<!DOCTYPE element DTD identifier
[
declaration1
declaration2
........
]>
在上面的句法
-
DTD開始<!DOCTYPE分隔符號.
-
一個元素告訴解析器來解析從指定的根元素的文檔.
-
DTD識別字是用於文檔類型定義,它可以是路徑到互聯網上的檔系統或URL上的檔。如果DTD是指向外部路徑,它被稱為外部子集.
-
方括號[]括起來的實體聲明稱為內部子集的可選列表.
內部DTD
一個DTD被稱為內部DTD,如果元素的XML檔中聲明。以指它作為內部DTD,XML聲明中的獨立屬性必須設置為yes。這意味著,在聲明的工作獨立於外部源.
句法
內部DTD的句法如下所示:
<!DOCTYPE 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>zaixian</company> <phone>(011) 123-4567</phone> </address>
讓我們通過上面的代碼:
開始聲明 - 開始XML聲明與下麵的語句
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
DTD - 緊接在 XML header 文檔類型 聲明如下, 通常被稱為在DOCTYPE:
<!DOCTYPE address [
TDOCTYPE聲明有一個感嘆號(!)的元素名稱的開始。在DOCTYPE通知一個DTD與此XML文檔相關聯的解析器.
DTD的內容 - DOCTYPE聲明後面是DTD的內容,聲明的元素,屬性,實體和符號:
<!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone_no (#PCDATA)>
許多元素都在這裏聲明補<名稱>文檔的辭彙。 <!元素名稱(#PCDATA)>定義的元素名稱是鍵入“#PCDATA”的。這裏#PCDATA是語法分析的文本數據.
結束聲明 - 最後,DTD中的聲明部分使用的是右括弧和右尖括弧被關閉(]>)。這有效地結束的定義,然後,在XML文檔緊跟.
規則
-
文檔類型聲明必須出現在檔(僅由XML頭之前)的開始 - 它不是在文檔中允許的其他地方。
-
類似的DOCTYPE聲明,該聲明的元素必須以感嘆號.
-
在文檔類型聲明的名稱必須與根元素的元素類型相匹配.
外部DTD
在外部DTD元素的XML檔外聲明。它們是通過指定其可以是法律.dtd檔或一個有效的URL,系統的屬性進行訪問。是指它作為外部DTD,XML聲明standalone屬性必須設置為no。這意味著,聲明中包含從外部源資訊.
句法
以下是句法外部DTD:
<!DOCTYPE root-element SYSTEM "file-name">
其中filename是.dtd擴展名的檔.
示例
下麵的例子顯示外部DTD用法:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <!DOCTYPE address SYSTEM "address.dtd"> <address> <name>Tanmay Patil</name> <company>zaixian</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" [...]>
正如你可以看到它包含的關鍵字系統和URI引用指向該檔的位置.
公共標識
公共識別字提供了一種機制來定位DTD資源和寫入如下:
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
正如你可以看到它開始與關鍵字public,然後由專門的標識。公共識別字被用來標識在一個目錄中的條目。公共標識可以按照任何格式,但是,常用的格式被稱為正式公開識別字,或符,FPI.