[Pre-Class] XML Schema

"XML Schema 是什麼?
他是用來定義描述 XML 的 schema language 的一種, 而他本身也是一個 XML 文件.

相對於 DTD, 他可以作更細微的定義及描述.

好, 說完.
(怎可能 XDD")

在很久之前, 還沒有一種用來定義及描述 XML 的一套標準,
因此當時出現了很多不同的 schema language 來定義他.

其中有: (引用 http://en.wikipedia.org/wiki/XML_schema)
Document Definition Markup Language (DDML)
Document Schema Definition Languages (DSDL)
Document Structure Description (DSD)
Document Type Definition (DTD)
Namespace Routing Language (NRL)
RELAX NG and its predecessors RELAX and TREX
SGML
Schema for Object-Oriented XML (SOX)
Schematron
XML-Data Reduced (XDR)
XML Schema (W3C) (WXS or XSD)

看到的可能會有點眼傻: 是不是多了點?
對, 當期時就是這個樣子. 原因可能有很多,
如 需求不一, 功能成熟程度, 使用難易度等.

早期 Microsoft 所使用的那一套是 XDR, 也就是我們課本上說的 Microsoft XML Schema,
http://www.w3.org/TR/1998/NOTE-XML-data-0105/
http://www.ltg.ed.ac.uk/~ht/XMLData-Reduced.htm (輕量版 XML Data)

而在 W3C 還沒完全成為標準時, 其推行的 schema 叫 XML Schema(S必須大寫).

在 Dongwon Lee 及 Wesley W. Chu 發表的一文當中, 對當時6種的 XML Schema Languages 作出了一些比較和分析
Comparative Analysis of Six XML Schema Languages
http://www.cobase.cs.ucla.edu/tech-docs/dongwon/ucla-200008.html
http://dret.net/biblio/reference/lee00

在該功能對比表上我們可以看出 XML Schema 其實已經是滿成熟的了.

而由 語意及網路服務研究中心 總結出的結論是:
引用自: http://www.ws.org.tw/sws/index.php?option=com_content&task=view&id=36&Itemid=48
a. 由容易使用的觀點:由於XML Schema支援廣泛的功能,與其他Schema Languages相較,最不容易使用。
b. 由Language的觀點:XML Schema較易寫出更好的查詢,且更容易偵錯。
c. 由資料庫的觀點:XML Schema支援很多內建的Domain Types,但不能表達SQL check或assert clause。
d. 由表達能力的觀點:XML Schema為展現表達能力最強的規範之一。

在此提一下, 當時能與 XML Scheam 決一高下的可以說是 RELAX NG 了.
http://www.xml.org.tw/function/Fglossary1.asp?key=RELAX%20NG

而在 MSXML 更新到 4.0 時, 微軟從使用 XDR 改為使用 XML Schema 了.
在 XML Schema 成為標準後, 其他的 schema language 也續漸被人所淡忘了.

所以到今天說 XML Schema 基本上已經是範指 W3C 的那一套.

只可惜我們所用的課本比較舊, Microsoft XML Schema 佔的部份很多, W3C 的就很少... (翻座)
相信這點對熱愛知識的我們是不會介意的. (笑)

又某一個日出.

延伸文章
Schema 成就 XML 資料描述
http://2tigers.net/html/tiger_column/article4.html

XML Specifications
http://msdn.microsoft.com/XML/Understanding/XMLSpecs/default.aspx

"