一、簡介
可擴展標記語言 (XML) 作為一種與平台無關的數據表示形式已被廣泛采用。它對於在松散耦合且完全不同的系統,以及各種企業到企業 (B2B) 應用和工作流范疇內交換信息是很有用的。數據交換已成為 XML 技術的主要驅動力之一。.
XML 在企業應用程序中的使用正日益廣泛,它主要用於對半結構化和非結構化數據進行建模。文檔管理就是這樣的一種應用程序。像電子郵件這樣的文檔是半結構化性質的。如果文檔以 XML 的形式存儲在數據庫服務器中,就可以開發功能強大的應用程序來根據文檔內容檢索文檔、查詢部分內容(例如查找標題包含單詞“背景”的部分),以及查詢文檔聚合。如果存在能夠生成和使用 XML 的應用程序,則這樣的方案就變得可行了。例如,Microsoft Office 2003 系統允許用戶以 XML 標記的形式生成 Word、Excel、Visio 和 Infopath 文檔。
將 XML 數據存儲在關系數據庫中會給數據管理和查詢處理帶來好處。SQL Server 提供了強大的查詢和修改關系數據的能力,而且已經擴展到查詢和修改 XML 數據。這使得可以利用在過去的版本上所進行的投資,就如同基於成本的優化和數據存儲領域一樣。例如,關系數據庫中的索引技術已經廣為人知,而且已經擴展到用於索引 XML 數據,這樣就可以使用基於成本的決策來優化查詢。
•XML 數據可以與現有的關系數據和 SQL 應用程序進行互操作,這樣就可以在需要進行數據建模而又不破壞現有的應用程序的系統中引入 XML。數據庫服務器還提供了管理功能來管理 XML 數據(例如備份、恢復和復制)。
•這些功能促進了對 SQL Server 2005 中的原生 XML 支持的需求,從而解決了不斷增加的 XML 使用的問題。SQL Server 2005 中的 XML 支持將給企業應用程序開發帶來好處。
•下面幾部分將概述 SQL Server 2000 和 2005 中的 XML 支持,描述一些推動 XML 使用的方案,並且詳細討論服務器端和客戶端的 XML 功能集。
這一部分簡要概述了 SQL Server 2000 中的 XML 支持,以及隨後發布的 SQLXML 客戶端編程平台 Web 版,它提供了豐富的支持來將關系數據映射到 XML 數據或將 XML 數據映射到關系數據。
在服務器上,XML 數據可以從表生成,並通過在 SELECT 語句中使用 FOR XML 子句來查詢結果。這對於數據交換和 Web 服務應用程序是很理想的。FOR XML 的逆函數是一個名為 OpenXML 的關系行集合生成器函數;它通過求 XPath 1.0 表達式的值來從 XML 數據提取值,並將其放到行集合的列中。應用程序使用 OpenXML 來“切碎”傳入 XML 數據,並將其存放到表中,或者用於通過 T-SQL 語言進行的查詢。
SQL Server 2000 對客戶端編程的支持稱為 SQLXML。這項技術的核心是 XML 視圖,它是 XML 架構和關系表之間的雙向映射。SQL Server 2000 只支持 XDR 架構的映射,盡管在後續的 Web 版中增加了對 XSD 的支持。XML 視圖允許使用 XPath 1.0 的一個子集來進行查詢,其中,可以使用映射將路徑表達式轉換成底層表中的 SQL 查詢,並且將查詢結果打包成 XML 結果。
SQLXML 還支持您創建 XML 模板,這使得您可以創建帶有動態部分的 XML 文檔。在 XML 文檔中,您可以嵌入 FOR XML 查詢和/或映射查詢之上的 XPath 1.0 表達式。在執行 XML 模板時,可以用查詢的結果來替換查詢塊。通過這種方式,您可以創建帶有某些靜態內容和某些數據驅動的動態內容的 XML 文檔。
在SQL Server 2000 中,有兩種訪問 SQLXML 功能的主要方法:
•SQLXMLOLEDB Provider。SQLXMLOLEDB Provider 是一個 OLE DB 提供程序,它通過 ADO 公開 Microsoft SQLXML 功能。
•HTTP 訪問。SQL Server 2000 中的 SQLXML 功能也可以使用 SQLXML ISAPI 過濾器通過 HTTP 進行訪問。