可以使用 XDR(簡化 xml-Data)架構建立關係資料的 XML 視圖。然後可以使用 XPath 查詢來查詢這些檢視。這類似於使用 CREATE VIEW 語句建立視圖並指定對視圖的 SQL 查詢。
XML 架構描述 XML 文件的結構以及對文件中資料的不同約束。當指定對該架構的 XPath 查詢時,傳回的 XML 文件結構由對其執行 XPath 查詢的架構決定。
在 Microsoft® SQL Server™ 2000 中,使用簡化 XML-Data (XDR) 語言建立架構。 XDR 是一種靈活的語言,它克服了用來描述文檔結構的文檔類型定義 (DTD) 的一些限制。與 DTD 不同,XDR 架構使用與 XML 文件相同的語法描述文件結構。 此外,在 DTD 中,所有資料內容均為字元資料。 XDR 語言架構可讓您指定元素或特性的資料類型。
在 XDR 架構中,
最小的 XDR 架構如下:
<?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data"> ... </Schema> <Schema> 元素是从 xml-data 命名空间 (urn:schemas-microsoft-com:xml-data) 派生出的。
說明 本文檔假設您熟悉 XML-Data 語言。
XDR 架構的批註
可以在 XDR 架構中使用對到資料庫的對應進行描述的批次來查詢該資料庫,並以 XML 文件格式傳回結果。 SQL Server 2000 引入了許多批註,可以使用這些批註將 XDR 架構對應到資料庫中的表和列。可以對 XDR 架構所建立的 XML 檢視指定 XPath 查詢,以查詢資料庫並取得 XML 格式的結果。
這是替代更複雜的 SQL 查詢編寫過程的方法,該方法使用 FOR XML EXPLICIT 模式將 XML 文件結構作為查詢的一部分加以描述。有關在 SELECT 查詢中使用 FOR XML EXPLICIT 模式的更多信息,請參閱使用 EXPLICIT 模式。然而,為克服對映射架構上的 XPath 查詢的大多數限制,請使用 FOR XML EXPLICIT 模式的 SQL 查詢傳回 XML 文件格式的結果。
如果擁有公用XDR 架構(如Microsoft BizTalk™ 架構),可以執行下列任一操作:
· 撰寫FOR XML EXPLICIT 模式的查詢,以便產生的資料對公用XDR 架構有效;然而,編寫FOR XML EXPLICIT 查詢可能比較麻煩。
· 製作公用 XDR 架構的專用複本。然後將批註新增至專用複本,從而產生映射架構。可以指定對映射架構的 XPath 查詢。這個查詢所產生的是公用架構命名空間中的資料。與編寫複雜的 FOR XML EXPLICIT 查詢相比,建立具有批註的架構並指定對該架構的 XPath 查詢是一個簡單得多的過程。下圖說明了此過程。
說明 Microsoft BizTalk™ 架構設計為常用商業物件(如合約、訂單和約會)定義標準 XML 格式。這些商業架構複本可以在 http://biztalk.org/BizTalk/default.asp 中找到。
映射架構
在關聯式資料庫的脈絡中,將任意的 XDR 架構對應到關聯式儲存是非常有用的。達到此目的的一個方法是對 XDR 架構進行批註。帶有批註的 XDR 架構稱為"映射架構",它提供瞭如何將 XML 資料映射到關係儲存的資訊。映射架構實際上是關係資料的 XML 視圖。可以使用這些映射檢索 XML 文檔格式的關聯式資料。
Microsoft SQL Server 2000 引入了許多批註,可以在 XDR 架構中使用這些批註,將元素和特性對應到資料庫表和列。可以使用 XPath(XML 路徑)指定對映射架構(XML 視圖)的查詢。映射架構描述了最後所得到的文檔結構。
批註的命名空間
在 XDR 架構中,使用下面的命名空間指定批次:urn:schemas-microsoft-com:xml-sql。
下例顯示指定命名空間最簡單的方法是在
<?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:sql="urn:schemas-microsoft-com:xml-sql" > ........... </Schema>
所使用的命名空間前綴是任意的。 在本文檔中,sql 前綴用於表示批註命名空間和使此命名空間中的批註區別於其它命名空間中的批註。
資料類型的命名空間
XDR 架構讓您得以指定元素或特性的資料類型。使用下面的命名空間指定資料類型: urn:schemas-microsoft-com:datatypes。
以下是具有命名空間宣告的最小 XDR 架構:
<?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns:dt="urn:schemas-microsoft-com:datatypes"> ... </Schema>
所用的命名空间前缀是任意的。 在本文档中,dt 前缀用于表示数据类型命名空间和使此命名空间中的批注区别于其它命名空间中的批注。
XDR 架构示例
下例显示如何将批注添加到 XDR 架构中。XDR 架构由
<?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <ElementType name="Employee" > <AttributeType name="EmpID" /> <AttributeType name="FName" /> <AttributeType name="LName" /> <attribute type="EmpID" /> <attribute type="FName" /> <attribute type="LName" /> </ElementType> </Schema>
现在,将批注添加到此 XDR 架构中,使架构的元素和特性映射到数据库的表和列。 带批注的 XDR 架构如下:
<?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <ElementType name="Employee" sql:relation="Employees" > <AttributeType name="EmpID" /> <AttributeType name="FName" /> <AttributeType name="LName" /> <attribute type="EmpID" sql:field="EmployeeID" /> <attribute type="FName" sql:field="FirstName" /> <attribute type="LName" sql:field="LastName" /> </ElementType> </Schema>
在此映射架构中,使用 sql:relation 批注将
此带批注的 XDR 架构提供关系数据的 XML 视图。使用 Xpath(XML 路径)语言可以查询该 XML 视图。Xpath 查询返回 XML 文档形式的结果,而不是 SQL 查询所返回的行集。
说明 在映射架构中,指定的关系值(如表名和列名)区分大小写。
以上就是使用带批注的 XDR 架构创建 XML 视图的内容,更多相关内容请关注PHP中文网(www.php.cn)!