為什么使用 XML Schema?

2018-02-24 16:42 更新

為什么使用 XML Schemas?

既然 XML Schemas 的作用與 DTD(文檔類型定義)相同,那么為什么要使用 XML Schemas 呢?


XML Schema 比 DTD 更強(qiáng)大。


XML Schema 支持?jǐn)?shù)據(jù)類型

XML Schema 最重要的能力之一就是對(duì)數(shù)據(jù)類型的支持。

通過(guò)對(duì)數(shù)據(jù)類型的支持:

  • 可更容易地描述允許的文檔內(nèi)容
  • 可更容易地驗(yàn)證數(shù)據(jù)的正確性
  • 可更容易地與來(lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù)一并工作
  • 可更容易地定義數(shù)據(jù)約束(data facets)
  • 可更容易地定義數(shù)據(jù)模型(或稱數(shù)據(jù)格式)
  • 可更容易地在不同的數(shù)據(jù)類型間轉(zhuǎn)換數(shù)據(jù)

編者注:數(shù)據(jù)約束,或稱 facets,是 XML Schema 原型中的一個(gè)術(shù)語(yǔ),中文可譯為"面",用來(lái)約束數(shù)據(jù)類型的容許值。


XML Schema 使用 XML 語(yǔ)法

另一個(gè)關(guān)于 XML Schema 的重要特性是,它們由 XML 編寫(xiě)。

由 XML 編寫(xiě) XML Schema 有很多好處:

  • 不必學(xué)習(xí)新的語(yǔ)言
  • 可使用 XML 編輯器來(lái)編輯 Schema 文件
  • 可使用 XML 解析器來(lái)解析 Schema 文件
  • 可通過(guò) XML DOM 來(lái)處理 Schema
  • 可通過(guò) XSLT 來(lái)轉(zhuǎn)換 Schema

XML Schema 可保護(hù)數(shù)據(jù)通信

當(dāng)數(shù)據(jù)從發(fā)送方被發(fā)送到接受方時(shí),其要點(diǎn)是雙方應(yīng)有關(guān)于內(nèi)容的相同的"期望值"。

通過(guò) XML Schema,發(fā)送方可以用一種接受方能夠明白的方式來(lái)描述數(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"。


XML Schema 可擴(kuò)展

XML Schema 是可擴(kuò)展的,因?yàn)樗鼈冇?XML 編寫(xiě)。

通過(guò)可擴(kuò)展的 Schema 定義,您可以:

  • 在其他 Schema 中重復(fù)使用您的 Schema
  • 創(chuàng)建由標(biāo)準(zhǔn)類型衍生而來(lái)的您自己的數(shù)據(jù)類型
  • 在相同的文檔中引用多重的 Schema

形式良好是不夠的

我們把符合 XML 語(yǔ)法的文檔稱為形式良好的 XML 文檔,比如:

  • 它必須以 XML 聲明開(kāi)頭
  • 它必須擁有唯一的根元素
  • 開(kāi)始標(biāo)簽必須與結(jié)束標(biāo)簽相匹配
  • 元素對(duì)大小寫(xiě)敏感
  • 所有的元素都必須關(guān)閉
  • 所有的元素都必須正確地嵌套
  • 必須對(duì)特殊字符使用實(shí)體

即使文檔的形式良好,仍然不能保證它們不會(huì)包含錯(cuò)誤,并且這些錯(cuò)誤可能會(huì)產(chǎn)生嚴(yán)重的后果。

請(qǐng)考慮下面的情況:您訂購(gòu)的了 5 打激光打印機(jī),而不是 5 臺(tái)。通過(guò) XML Schema,大部分這樣的錯(cuò)誤會(huì)被您的驗(yàn)證軟件捕獲到。

在下一節(jié)內(nèi)容中,我們將開(kāi)始學(xué)習(xí)使用 XML Schema。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)