国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

深入探討SQL Server 2000對XML的支持(四)

2019-11-18 14:47:24
字體:
來源:轉載
供稿:網友

  XPath查詢 架構和模板

  XPath查詢也可以被內嵌進一個xml模板文件中,下面的代碼是一個包含XPath查詢的簡單的XML模板文件。

<Northwind xmlns:sql=
"urn:schemas-microsoft-com:
xml-sql">
<sql:xpath-query mapping-schema=
"file4.xdr">
/Customer[@CustomerID=
'ALFKI']/Order
</sql:xpath-query>
</Northwind>


  這個查詢使用了一個架構(schema)返回CustomerID號為ALFKI的用戶的所有的訂單,假如想要使XPath語句運行,必須使用一個XDR架構文件映射不同的XML元素和屬性到相應的數據庫表和字段名。下面給出了這個架構文件。

<?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="Customer" sql:relation="Customers">
<AttributeType name="CustomerID" dt:type="id" />
<AttributeType name="CompanyName" />
<AttributeType name="ContactName" />
<AttributeType name="City" />
<AttributeType name="Fax" />
<AttributeType name="Orders" dt:type=
"idrefs" sql:id-
<attribute type="CustomerID" />
<attribute type="CompanyName" />
<attribute type="ContactName" />
<attribute type="City" />
<attribute type="Fax" />
<attribute type="Orders" sql:relation=
"Orders" sql:field="OrderID">
<sql:relationsh
ip
key-relation="Customers"
key="CustomerID"
foreign-relation="Orders"
foreign-key="CustomerID" />
</attribute>

<element type="Order">
<sql:relationship
key-relation="Customers"
key="CustomerID"
foreign-relation="Orders"
foreign-key="CustomerID" />
</element>
</ElementType>

<ElementType name="Order" sql:relation="Orders">
<AttributeType name="OrderID" dt:type=
"id" sql:id-prefix="Ord-" />
<AttributeType name="EmployeeID" />
<AttributeType name="OrderDate" />
<AttributeType name="RequiredDate" />
<AttributeType name="ShippedDate" />

<attribute type="OrderID" />
<attribute type="EmployeeID" />
<attribute type="OrderDate" />
<attribute type="RequiredDate" />
<attribute type="ShippedDate" />

<element type="OrderDetail">
<sql:relationship
key-relation="Orders"
key="OrderID"
foreign-relation="[Order Details]"
foreign-key="OrderID" />
</element>
<element type="Employee">
<sql:relationship
key-relation="Orders"
key="EmployeeID"
foreign-relation="Employees"
foreign-key="EmployeeID" />
</element>
</ElementType>

<ElementType name="OrderDetail" sql:relation=
"[Order Details]"
sql:key-fields="OrderID ProdUCtID">
<AttributeType name="ProductID" dt:type="idref"
sql:id-prefix="Prod-" />
<AttributeType name="UnitPrice"/>
<AttributeType name="Quantity" />

<attribute type="ProductID" />
<attribute type="UnitPrice"/>
<attribute type="Quantity" />

<element type="Discount" sql:field="Discount"/>
</ElementType>

<ElementType name="Discount" dt:type="string"
sql:relation="[Order Details]"/>

<ElementType name="Employee" sql:relation="Employees">
<AttributeType name="EmployeeID" dt:type="idref"
sql:id-prefix="Emp-" />
<AttributeType name="LastName" />
<AttributeType name="FirstName" />
<AttributeType name="Title" />
<attribute type="EmployeeID"/>

<attribute type="LastName" />
<attribute type="FirstName" />
<attribute type="Title" />
</ElementType>
</Schema>


  假如您想深入了解架構文件的話,請參看SQL Server 2000的用戶文檔或等待我的以后的文章。

  和內嵌在XML模板文件中的SQL查詢語句一樣,XPath查詢語句使用urn:schemas-microsoft-com:xml-sql和sql作為前綴,共同標示用在模板中的自定義元素和屬性,對于XPath查詢而言,我們使用一個名為xpath-query的元素來標識查詢語法,這個元素也有一個名為mapping-schema的屬性,用來標示相應用以映射表和字段到特定的XML項目的架構文件所在的路徑。

  下面的代碼給出了另一個使用更復雜XPath查詢的模板文件。


<Northwind xmlns:sql=
"urn:schemas-microsoft-com:xml-sql">
<sql:xpath-query mapping-schema=
"listing4.xdr">
/Customer[@CustomerID=
'ALFKI']/Order/
Employee[@LastName='Suyama']
</sql:xpath-query>
</Northwind>


  當執行這個模板文件時,XPath查詢返回與某個客戶簽下訂單的雇員(employee)的姓名,結果如下:

<Northwind xmlns:sql=
"urn:schemas-microsoft-com:xml-sql">
<Employee EmployeeID="Emp-6"
LastName="Suyama"
FirstName="Michael"
Title="Sales
Representative"/>
</Northwind>


  模板文件中使用的XPath查詢也可以使用參數,處理過程很象在XSL樣式表中使用參數一樣。象XSL一樣,使用$指定一個變量。下面的代碼說明了如何在一個包含XPath查詢的模板文件中整合變量。


<Northwind xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:header>
<sql:param name="ID"/>
</sql:header>
<sql:xpath-query mapping-schema="listing4.xdr"> {{should this be "listing6.xdr"?}}
/Customer/Order[@OrderID=$ID]
</sql:xpath-query>
</Northwind>


  通過在URL中傳遞參數名和相應的參數值,我們就可以完成把參數傳遞到模板中的操作。結果如下:


<Northwind xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order OrderID="Ord-10643" EmployeeID=
"6" OrderDate="1997-08-25T00:00:00" RequiredDate=
"1997-09-22T00:00:00" ShippedDate=
"1997-09-02T00:00:00">
<Employee EmployeeID="Emp-6" LastName=
"Suyama" FirstName="Michael" Title=
"Sales Representative" />
<OrderDetail ProductID="Prod-28" UnitPrice=
"45.6" Quantity="15">
<Discount>0.25</Discount>
</OrderDetail>
<OrderDetail ProductID="Prod-39" UnitPrice=
"18" Quantity="21">
<Discount>0.25</Discount>
</OrderDetail>
<OrderDetail ProductID="Prod-46" UnitPrice=
"12" Quantity="2">
<Discount>0.25</Discount>
</OrderDetail>
</Order>
</Northwind>



  小結

  通過使用上面我介紹的幾種技術,我們可以直接從SQL Server 2000數據庫中直接取得XML數據。如我所介紹,URL查詢、XML模板文件、XDR架構和XPath查詢提供了強大的功能,從SQL Server 2000中直接獲得XML數據。除此之外,還有很多重要的概念,由于篇幅有限在本文中不可能詳述,如FOR XML EXPLICIT查詢和OPENXML這些技術,我會在以后的文章中進一步進行討論,請大家等待。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正定县| 汝州市| 囊谦县| 时尚| 贵德县| 乡宁县| 化州市| 霍林郭勒市| 云林县| 延庆县| 沅陵县| 金乡县| 青神县| 内黄县| 新乡市| 寻甸| 嘉禾县| 光泽县| 丰宁| 沁阳市| 安康市| 芜湖县| 常德市| 察雅县| 县级市| 永安市| 丰顺县| 岳池县| 凯里市| 盐边县| 九龙县| 渑池县| 方山县| 蒲城县| 汕头市| 永新县| 朝阳区| 涞源县| 桐庐县| 辽源市| 朝阳区|