可擴展標示語言(eXtensible Markup Language,XML)是由全球資訊網標準制 定組織(W3C)於 1988 年 2 月正式制定而成的標記語言,W3C 的 data format model 如圖 2. 6:
圖 2. 6 W3C Data Format Model
XML 自標準通用標示語言(Standard Generalized Markup Language,SGML) 演化而來[10,11],成為資料儲存或資料交換的格式,其簡化了 SGML 的語法複 雜度,並解決過去 HTML 設計結構無法因應需求擴充的詬病,發展出各領域皆 可套用的通用規則, XML 本身具有下列幾種特性:
Well-formed:舉凡 XML 標記必定成對,具有高度的語法檢視標準,不 同於 HTML 對語法要求較為鬆散,使文件內容能在各瀏覽器間正確呈現。
易於擴充:XML 語法極具彈性,可由程式設計者自行命名標記名稱,
並自行定義標記內容的註解,依照其需求量身打造 XML 架構,提升 XML 文件 可讀性。
自我描述性(self-describing):可在特定領域利用一組 DTD 來定義相關 標籤及文件結構,讓電腦與設計者能夠容易閱讀 XML 檔案。
樹狀結構:XML 文件是以樹狀結構的方式排列,由根節點開始產生分 支,每個標記都可視為一個節點,使 XML 文件結構清晰明確。
XML 基於上述優越的特性,已在各領域發展出豐沛的應用,以電子商務領 域為例,SOAP(Simple Object Access Protocol)通訊協定即是以 XML 做為電子資 料交換的標準,在數位學習平台方面,制定了 SCORM(Sharable Content Object Reference Model)標準作為 e-learning 的核心技術,在各式電子資訊領域皆能發揮 XML 特性優勢拓展各種應用。
2.3.1 eXist 資料庫
eXist[10]是由 Wolfgang Meier 在 2000 年所建立出來的一套 XML 資料庫系統,
從 2006 年的 Version 1.0 和 1.1 版本,現在已經發展到 Version 1.4 了,在 2006 年 更被譽為最佳的 XML 資料庫。
eXist 為一個公開原始碼的 XML 原生資料庫,其內容包含 XPath 搜尋過程、
關鍵字搜尋、支援 XUpdate 並且與其他 XML 開發工具緊密整合。該資料庫軟體 由 Java 所寫成,可以單獨執行,也能夠整合至其他應用中。在資料庫引擎的設 計方面,eXist 提供了 HTTP、XML-RPC、SOAP 和 WebDAV 等多種介面給應用 開發者。其支援技術如下:
XQuery 1.0 / XPath 2.0 / XSLT 1.0 (using Apache Xalan) or XSLT 2.0 (optional with Saxon).
HTTP interfaces: REST, WebDAV, SOAP, XMLRPC, Atom Publishing Protocol.
XML database specific: XMLDB, XUpdate, XQuery update extensions (to be aligned with the new XQuery Update Facility 1.0).
eXist 的優點有以下幾點:
允許軟體開發者不必去撰寫額外的中介介面,就可以儲存 XML 的原始 資料。
遵守 W3C 的標準,並且提供 W3C 中所規定的 XML 的技術應用。
支援 REST 的介面,以方便處理 AJAX 型態的 Web 介面。
2.3.2 XQuey 簡介
XQuery 全名為 XML Query,由 W3C XML Query Working Group 所開發制定 的 XML 資料查詢語言,XQuery Version 1.0 是自 XPath Version 2.0 延伸而來[11],
XQuery 與 XML 資料查詢語言的關係,如同關聯式資料庫所提供的標準 SQL 查 詢語言一般,除了可供 XML 文件資料查詢之外,也可以透過 XQuery 語言來檢 索其他資料庫引擎所建立的資料庫,如 SQL server、Oracle 等,XQuery 語言和 其他 XML 相關技術的關係如圖所示:
圖 2. 7 XQuery 與 XML 相關技術之關聯(w3schools)
eXist 採用 XQuery 作為存取的語言,XQuery 語言主要架構分為三個部分,
分別為命名空間與其聲明、函數定義和最重要的查詢表達式,其表示方法主要由 下列組成:
路徑表示法:即由 XPath 2.0 語法表示查詢路徑。
數學運算與布林運算:提供基本的數學運算與布林運算,並可使用一些 內部提供的數學函數。
FLWOR 表示法:主要由 for、let、where、order by 和 return 五個關鍵字 所組成的查詢與表示法。
條件表示法:由 if、then、else 所組成的表達式,用於控制輸出結果。
元素與屬性建構器(element constructors):建構輸出的元素與屬性。