XML DTD(XML的文檔類型定義)是近幾年來XML技術領域所使用的最廣泛的一種模式。但是,由於XML DTD並不能完全滿足XML自動化處理的要求,例如不能很好實現應用程序不同模塊間的相互協調,缺乏對文檔結構、屬性、數據類型等約束的足夠描述等等,所以W3C於2001年5月正式推薦XML Schema為XML 的標准模式。顯然,W3C希望以XML Schema來作為XML模式描述語言的主流,並逐漸代替XML DTD。那么XML Schema與XML DTD相比有哪些優勢呢,XML DTD是否真的會在XML的模式描述領域中逐漸消失呢?
先說XML,XML是一種可擴展標記語言,用於標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 可擴展標記語言是標准通用標記語言的子集,非常適合 Web 傳輸。可擴展標記語言提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。
再看Schame和DTD:

XML Schema的作用是定義一份XML文檔的合法組件群,就像文檔類型定義(外語縮寫:DTD)的作用一樣,一份XML Schema定義了可以出現在文檔里的元素和屬性的相關內容。文檔類型定義(DTD)可定義合法的XML文檔構建模塊。它使用一系列合法的元素來定義文檔的結構。
比如說:
以下是XML Schema定義關於一個郵件的一個結構:

此結構下的郵件內容:

以下是DTD的結構和內容:

比較這幾張圖,發現Schame和DTD還是有不少區別:
第一:XML Schema是XML文檔,而DTD有自己的特殊語法。這樣,只需要懂得XML的語法規則就可以編寫Schema,無須學習其他的語法規則;XML文件與XML Schema文件可以用相同的解析器進行解析,無須兩套解析器;
第二:XML Schema有強大、易用的擴展性。
第三:XML Schema利用命名空間將文檔中的特殊的節點與Schema說明相聯系,一個XML文件可以有多個Schema,而對於DTD一個XML只能有一個相對應的DTD。
第四:DTD只能把內容類型定義為一個字符串,而XML Schema允許把內容類型定義為整形、浮點型、布爾型等等,而無須重定義。
通過這些區別,可以看出,XML Schema比XML DTD具有更強的表現力,能夠更好的滿足不同領域應用的需求。那么,是不是可以說XML DTD會很快被XML Schema替代並最終消失呢。XML Schema雖然在大多數的應用領域都有替代XML DTD的趨勢,但是XML DTD仍然有它的適用范圍,那最終會不會被替代掉呢?看以后的發展吧。。。。。。。
