XML Schema 比 DTD 更強大。
XML Schema 支持數(shù)據(jù)類型
XML Schema 最重要的能力之一就是對數(shù)據(jù)類型的支持。
通過對數(shù)據(jù)類型的支持:
可更容易地描述允許的文檔內(nèi)容
可更容易地驗證數(shù)據(jù)的正確性
可更容易地與來自數(shù)據(jù)庫的數(shù)據(jù)一并工作
可更容易地定義數(shù)據(jù)約束(data facets)
可更容易地定義數(shù)據(jù)模型(或稱數(shù)據(jù)格式)
可更容易地在不同的數(shù)據(jù)類型間轉(zhuǎn)換數(shù)據(jù)
編者注:數(shù)據(jù)約束,或稱 facets,是 XML Schema 原型中的一個術(shù)語,中文可譯為"面",用來約束數(shù)據(jù)類型的容許值。
XML Schema 使用 XML 語法
另一個關(guān)于 XML Schema 的重要特性是,它們由 XML 編寫。
由 XML 編寫 XML Schema 有很多好處:
不必學(xué)習(xí)新的語言
可使用 XML 編輯器來編輯 Schema 文件
可使用 XML 解析器來解析 Schema 文件
可通過 XML DOM 來處理 Schema
可通過 XSLT 來轉(zhuǎn)換 Schema
XML Schema 可保護數(shù)據(jù)通信
當數(shù)據(jù)從發(fā)送方被發(fā)送到接受方時,其要點是雙方應(yīng)有關(guān)于內(nèi)容的相同的"期望值"。
通過 XML Schema,發(fā)送方可以用一種接受方能夠明白的方式來描述數(shù)據(jù)。
一種數(shù)據(jù),比如 "03-11-2004",在某些國家被解釋為11月3日,而在另一些國家為當作3月11日。
但是一個帶有數(shù)據(jù)類型的 XML 元素,比如:<date type="date">2004-03-11</date>,可確保對內(nèi)容一致的理解,這是因為 XML 的數(shù)據(jù)類型 "date" 要求的格式是 "YYYY-MM-DD"。
XML Schema 可擴展
XML Schema 是可擴展的,因為它們由 XML 編寫。
通過可擴展的 Schema 定義,您可以:
在其他 Schema 中重復(fù)使用您的 Schema
創(chuàng)建由標準類型衍生而來的您自己的數(shù)據(jù)類型
在相同的文檔中引用多重的 Schema
形式良好是不夠的
我們把符合 XML 語法的文檔稱為形式良好的 XML 文檔,比如:
它必須以 XML 聲明開頭
它必須擁有唯一的根元素
開始標簽必須與結(jié)束標簽相匹配
元素對大小寫敏感
所有的元素都必須關(guān)閉
所有的元素都必須正確地嵌套
必須對特殊字符使用實體
即使文檔的形式良好,仍然不能保證它們不會包含錯誤,并且這些錯誤可能會產(chǎn)生嚴重的后果。
請考慮下面的情況:您訂購的了 5 打激光打印機,而不是 5 臺。通過 XML Schema,大部分這樣的錯誤會被您的驗證軟件捕獲到。