XML的兩種模式描述

在XML使用過程中,往往需要對XML的有效性進行驗證。

 

只要不違反XML格式良好的規則,就可以自由選取標記的名字,用自己習慣的方式描述事物。這就意味着用XML描述相同的事物時,不同的編寫者可能寫出含有不同標記名、採用不同結構的XML文檔,這對於數據的統一處理極爲不利。所以需要一種機制指定應該如何構造描述同一事物的文檔。DTD和XML Schema就是使用最爲廣泛的用來進行XML文檔有效性驗證的兩種機制[16]17]。

DTD(Document Type Definition,文檔類型定義)是一套關於標記符的語法規則,詳細描述一組XML文檔的結構,最初是爲SGML開發的,它可以是XML文檔的一部分,但是它通常是一份單獨的文檔或者一系列文檔。DTD說明在文檔中可以使用哪些標記,哪些標記可以出現在其它標記中,哪些標記具有屬性,使用的標記應按什麼順序出現等。XML本身並沒有一個通用的DTD,想使用XML進行數據交換的行業或組織可以自行定義它們自己的DTD,DTD規定了一個語法分析器用於解釋一個“有效的”XML文檔所需要知識的所有規則的細節。一個DTD可以是內部的,包含在一個“格式良好”的XML文檔中,也可以是外部的,作爲一個外部文檔被引用。DTD標記聲明可以是元素類型聲明,屬性聲明,實體聲明,或符號聲明。作爲XML1.0規範的重要組成部分,DTD對於XML文檔的結構起到很好的描述作用,是近幾年來XML技術領域所使用的最廣泛的一種用於XML文檔有效性驗證的機制。

隨着XML技術的廣泛使用,DTD也逐漸顯出其自身的一些不足與缺點,比如採用了非XML的語法規則,不支持多種多樣的數據類型,擴展性較差,不支持名稱空間等等。於是,W3C於2001年5月正式推薦XML Schema作爲XML的標準模式。XML Schema本身就是一個符合XML語法結構的XML文檔,可以用通用的XML解析器進行解析。它如同DTD一樣,負責定義和描述XML文檔的結構和內容模式。XML Schema可以定義XML文檔中存在哪些元素和元素之間的關係,並且可以定義元素和屬性的數據類型。


與DTD相比,XML Schema具有以下一些優點:
①一致性。Schema本身就是XML文檔,使得對XML的定義不必再利用一種特定的形式化語言,而是直接藉助XML自身的特性,使得XML達到從內到外的完美統一。
②擴展性。Schema對DTD進行了擴充,從而使其具有較強的可擴展性,比如引入了數據類型、命名空間等。
③互換性。用戶可以根據需要設計適合自己應用的Schema,並且可以同其他人交換彼此的Schema。通過映射機制,可以將不同的Schema進行轉換,實現更高層次的數據交換。
④規範性。同DTD一樣,Schema也提供了一套完整的機制以約束XML文檔中標記的使用,相比之下,Schema更具規範化,它定義了XML文檔的整體結構,元素間的關係等。


總的來說,不能簡單的評價DTD與XML Schema哪一個絕對好。它們各有各自的應用場合。相對於DTD,XML Schema可應用的範圍更廣一些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章