由於XML可自訂標籤,所以每個人定義的標籤集都會不同,如果沒有一套標準來規定標籤的定義原則,則應用程式就不能對XML文件進行處理。解決此問題的方案採用DTD,DTD(Document Type Definition,文件類型定義),用於定義XML文件的編寫規則。如哪些元素可出現在文件中,及元素的內容和屬性的要求等。應用程式會利用這個DTD對文檔進行檢驗,符合DTD約束規則的XML文檔稱之為有效文檔,可以進行下一步處理,否則會報錯,應用程式可捕獲該錯誤進行相應的異常處理。檢驗過程是可選,這要視具體應用而定。
文件類型宣告
要使用DTD進行有效性檢驗,就要使用文件類型定義宣告指定DTD。如:
<?xml version="1.0" standalone="no"?> <!DOCTYPE portal SYSTEM > <portal> <name>Jims</name> <email>Jims@163.com</email> <email>Jims@21cn.com</email> </portal>
文件類型宣告位於XML宣告之後,根元素之前。如果dtd文檔位於本機,可用路徑名稱直接指出dtd文檔的位置。 portal.dtd的內容如下:
<!ELEMENT portal (name,email*)> <!ELEMENT name (#PCDATA)> <!ELEMENT email (#PCDATA)>
上面的內容也可直接寫到XML文件內,這種dtd宣告方式叫內部dtd子集,如:
<?xml version="1.0" standalone="no"?> <!DOCTYPE portal [<!ELEMENT portal (name,email*)><!ELEMENT name (#PCDATA)><!ELEMENT email (#PCDATA)>]> <portal> <name>Jims</name> <email>Jims@163.com</email> <email>Jims@21cn.com</email> </portal>
如果dtd位於XML文件外,則叫外部dtd子集。我們可以結合內外dtd,共同組成一個dtd來為XML文檔作驗證。如:
<!DOCTYPE portal SYSTEM "external.dtd" [<!ELEMENT portal (name,email*)><!ELEMENT name (#PCDATA)><!ELEMENT email (#PCDATA)>]>
注意,使用內外dtd時,這兩個dtd要互相相容,不能有衝突。
以上是XML文檔類型聲明的詳細內容。更多資訊請關注PHP中文網其他相關文章!