XSD(代表:XML Schema Definition)是一種精確描述XML語言的方法。 XSD根據(jù)相應(yīng)XML語言的語法規(guī)則檢查XML文檔的結(jié)構(gòu)和詞匯的有效性。
XML Schema Definition 縮寫.可擴(kuò)展標(biāo)記語言架構(gòu)是以可擴(kuò)展標(biāo)記語言(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)為基礎(chǔ)的,它用于可替代文檔類型定義(外語縮寫:DTD);一份XML schema文件描述了可擴(kuò)展標(biāo)記語言文檔的結(jié)構(gòu)。
定義編輯
它的作用是定義一份XML文檔的合法組件群,就像文檔類型定義(外語縮寫:DTD)的作用一樣,一份XML Schema定義了:
-
可以出現(xiàn)在文檔里的元素;
-
可以出現(xiàn)在文檔里的屬性;
-
哪些元素是子元素;
-
子元素的順序;
-
子元素的數(shù)量;
-
一個(gè)元素應(yīng)是否能包含文本,或應(yīng)該是空的;
-
元素和屬性的數(shù)據(jù)類型;
-
元素和屬性的默認(rèn)值和固定值。
優(yōu)點(diǎn)
XML Schema 比 DTD 更強(qiáng)大。
其優(yōu)勢(shì)包括以下幾點(diǎn):
1、支持?jǐn)?shù)據(jù)類型
XML Schema 最重要的能力之一就是對(duì)數(shù)據(jù)類型的支持。通過對(duì)數(shù)據(jù)類型的支持:
-
可更容易地描述允許的文檔內(nèi)容
-
可更容易地驗(yàn)證數(shù)據(jù)的正確性
-
可更容易地與來自數(shù)據(jù)庫的數(shù)據(jù)一并工作
-
可更容易地定義數(shù)據(jù)約束(data facets)
-
可更容易地定義數(shù)據(jù)模型(或稱數(shù)據(jù)格式)
-
可更容易地在不同的數(shù)據(jù)類型間轉(zhuǎn)換數(shù)據(jù)
2、它使用 XML 語法
另一個(gè)關(guān)于 XML Schema 的重要特性是,它們由 XML 編寫。由 XML 編寫 XML Schema 有很多好處:
-
不必學(xué)習(xí)新的語言
-
可使用 XML 編輯器來編輯 Schema 文件
-
可使用 XML 解析器來解析 Schema 文件
-
可通過 XML DOM 來處理 Schema
-
可通過 XSLT 來轉(zhuǎn)換 Schema
3、可保護(hù)數(shù)據(jù)通信
當(dāng)數(shù)據(jù)從發(fā)送方被發(fā)送到接受方時(shí),其要點(diǎn)是雙方應(yīng)有關(guān)于內(nèi)容的相同的"期望值"。
通過 XML Schema,發(fā)送方可以用一種接受方能夠明白的方式來描述數(shù)據(jù)。
一種數(shù)據(jù),比如 "03-11-2004",在某些國(guó)家被解釋為11月3日,而在另一些國(guó)家為當(dāng)作3月11日。
但是一個(gè)帶有數(shù)據(jù)類型的 XML 元素,比如:<date type="date">2004-03-11</date>,可確保對(duì)內(nèi)容一致的理解,這是因?yàn)?XML 的數(shù)據(jù)類型 "date" 要求的格式是 "YYYY-MM-DD"。
4、可擴(kuò)展性
XML Schema 是可擴(kuò)展的,因?yàn)樗鼈冇?XML 編寫。
通過可擴(kuò)展的 Schema 定義,您可以:
-
在其他 Schema 中重復(fù)使用您的 Schema
-
創(chuàng)建由標(biāo)準(zhǔn)類型衍生而來的您自己的數(shù)據(jù)類型
-
在相同的文檔中引用多重的 Schema
5、可捕獲到錯(cuò)誤
即使文檔的形式良好,仍然不能保證它們不會(huì)包含錯(cuò)誤,并且這些錯(cuò)誤可能會(huì)產(chǎn)生嚴(yán)重的后果。
請(qǐng)考慮下面的情況:您訂購的了 5 打激光打印機(jī),而不是 5 臺(tái)。通過 XML Schema,大部分這樣的錯(cuò)誤會(huì)被您的驗(yàn)證軟件捕獲到。
缺點(diǎn)
雖然被寫入XML是一個(gè)優(yōu)勢(shì),在某些方面也是一個(gè)缺點(diǎn)。W3C XML Schema語言特別是可能非常冗長(zhǎng),而DTD可以簡(jiǎn)潔且相對(duì)容易編輯。
W3C XML Schema沒有實(shí)現(xiàn)大部分提供的數(shù)據(jù)元素到文檔的DTD能力。
繼承性編輯
XML Schema可能很快就會(huì)替代文檔類型定義(外語縮寫:DTD)在大多數(shù)的網(wǎng)絡(luò)應(yīng)用程序中被廣泛使用。
-
針對(duì)將來的額外內(nèi)容是可擴(kuò)展的;
-
內(nèi)容比文檔類型定義(外語縮寫:DTD)豐富,作用也更大;
-
是以XML語言編寫而成的;
-
支持?jǐn)?shù)據(jù)類型;
-
支持名稱空間(外語:namespaces);
本教程將教您XSD的基礎(chǔ)知識(shí),本教程通過相關(guān)示例討論XSD的所有基本組件。