使用具有批註的 XDR 架構建立 XML 視圖

黄舟
發布: 2017-03-01 16:44:33
原創
1586 人瀏覽過

可以使用 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 語言中,所有元素聲明都必須包含在 元素中。 
最小的 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。 
下例顯示指定命名空間最簡單的方法是在 標記中指定它。 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 前缀用于表示数据类型命名空间和使此命名空间中的批注区别于其它命名空间中的批注。
元素来源于 xml-data 命名空间:urn:schemas-microsoft-com:xml-data。
XDR 架构示例
下例显示如何将批注添加到 XDR 架构中。XDR 架构由 元素和 EmpID、Fname 及 Lname 特性组成。

<?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 批注将 元素映射到 Employees 表。使用 sql:field 批注将特性 EmpID、Fname 和 Lname 映射到 Employees 表中的 EmployeeID、FirstName 和 LastName 列。 
此带批注的 XDR 架构提供关系数据的 XML 视图。使用 Xpath(XML 路径)语言可以查询该 XML 视图。Xpath 查询返回 XML 文档形式的结果,而不是 SQL 查询所返回的行集。 
  
说明  在映射架构中,指定的关系值(如表名和列名)区分大小写。

以上就是使用带批注的 XDR 架构创建 XML 视图的内容,更多相关内容请关注PHP中文网(www.php.cn)!


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板