在 XPath 查詢中指定座標軸 (SQLXML 4.0)
下列範例示範如何在 XPath 查詢中指定座標軸。
這些範例中的 XPath 查詢會針對包含在SampleSchema1.xml中的對應架構來指定。 如需此範例架構的相關信息,請參閱 XPath 範例的範例 XSD 架構範例(SQLXML 4.0)。
範例
A. 擷取內容節點的子專案
下列 XPath 查詢會選取內容節點的所有 <Contact> 子元素:
/child::Contact
在查詢中,child
是座標軸,而且Contact
是節點測試(如果 Contact
為<項目>節點,則為 TRUE,因為<元素>是與child
座標軸相關聯的主要節點類型)。
座標 child
軸是預設值。 因此,查詢可以撰寫為:
/Contact
若要針對對應架構測試 XPath 查詢
複製範例架構程序代碼,並將它貼到文本檔中。 將檔案儲存為SampleSchema1.xml。
建立下列範本 (XPathAxesSampleA.xml),並將它儲存在儲存SampleSchema1.xml的目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact </sql:xpath-query> </ROOT>
針對對應架構指定的目錄路徑 (SampleSchema1.xml) 相對於儲存範本的目錄。 您也可以指定絕對路徑,例如:
mapping-schema="C:\MyDir\SampleSchema1.xml"
建立並使用 SQLXML 4.0 測試腳本 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱使用 ADO 執行 SQLXML 4.0 查詢。
以下是範本執行的部分結果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1" LastName="Achong" FirstName="Gustavo" Title="Mr." />
<Contact ContactID="2" LastName="Abel" FirstName="Catherine" Title="Ms." />
<Contact ContactID="3" LastName="Abercrombie" FirstName="Kim" Title="Ms." />
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
...
</ROOT>
B. 擷取內容節點的孫子
下列 XPath 查詢會選取內容節點之< Customer> 元素子系的所有 <Order> 元素子系:
/child::Customer/child::Order
在查詢中,child
是座標軸,而且Order
是節點測試(如果 Customer 和 Customer
Order 是元素>節點,則這些節點測試為 TRUE,因為<元素>節點是<子軸的主要節點)。 針對符合客戶的>每個節點<,會將符合<訂單的>節點新增至結果。 結果集中只會傳回 Order>。<
子軸是預設值。 因此,查詢可以指定為:
/Customer/Order
若要針對對應架構測試 XPath 查詢
複製範例架構程序代碼,並將它貼到文本檔中。 將檔案儲存為SampleSchema1.xml。
建立下列範本 (XPathAxesSampleB.xml),並將它儲存在目錄中,其中:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order </sql:xpath-query> </ROOT>
針對對應架構指定的目錄路徑 (SampleSchema1.xml) 相對於儲存範本的目錄。 您也可以指定絕對路徑,例如:
mapping-schema="C:\MyDir\SampleSchema1.xml"
建立並使用 SQLXML 4.0 測試腳本 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱使用 ADO 執行 SQLXML 4.0 查詢。
以下是範本執行的部分結果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</ROOT>
如果 XPath 查詢指定為 Customer/Order/OrderDetail
,則從符合< Customer> 的每個節點,查詢會巡覽至其 <Order> 元素。 針對每個符合 Order> 的節點,查詢會將 OrderDetail> 節點<新增至結果。< 結果集中只會傳回 OrderDetail>。<
C. 用。。 指定父軸
下列查詢會擷取具有 CustomerID 屬性值為 1 之父< Customer> 元素的所有< Order> 元素。 查詢會使用述詞中的子軸來尋找 Order> 元素的<父系。
/child::Customer/child::Order[../@CustomerID="1"]
子軸是預設座標軸。 因此,查詢可以指定為:
/Customer/Order[../@CustomerID="1"]
XPath 查詢相當於:
/Customer[@CustomerID="1"]/Order.
注意
XPath 查詢/Order[../@CustomerID="1"]
會傳回錯誤,因為沒有 Order> 的父代<。 雖然對應架構中可能有包含 Order> 的專案,但 XPath 並未從其中任何項目開始;因此,<Order> 會被視為檔中的最上層元素類型。<
若要針對對應架構測試 XPath 查詢
複製範例架構程序代碼,並將它貼到文本檔中。 將檔案儲存為SampleSchema1.xml。
建立下列範本 (XPathAxesSampleC.xml),並將它儲存在目錄中,其中:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[../@CustomerID="1"] </sql:xpath-query> </ROOT>
針對對應架構指定的目錄路徑 (SampleSchema1.xml) 相對於儲存範本的目錄。 您也可以指定絕對路徑,例如:
mapping-schema="C:\MyDir\SampleSchema1.xml"
建立並使用 SQLXML 4.0 測試腳本 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱使用 ADO 執行 SQLXML 4.0 查詢。
以下是範本執行的部分結果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</Order>
</ROOT>
D. 指定屬性軸
下列 XPath 查詢會選取具有 CustomerID 屬性值 1 之內容節點的所有< Customer> 子元素:
/child::Customer[attribute::CustomerID="1"]
在述 attribute::CustomerID
詞中, attribute
是座標軸,而且 CustomerID
是節點測試(如果 CustomerID
是節點測試的屬性,則為TRUE,因為 <屬性> 節點是座標軸的主要節點 attribute
)。
可以指定座標軸 (@) 的 attribute
快捷方式,因為 child
是預設座標軸,所以可以從查詢中省略它:
/Customer[@CustomerID="1"]
若要針對對應架構測試 XPath 查詢
複製範例架構程序代碼,並將它貼到文本檔中。 將檔案儲存為SampleSchema1.xml。
建立下列範本 (XPathAxesSampleD.xml),並將它儲存在儲存SampleSchema1.xml的目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> child::Customer[attribute::CustomerID="1"] </sql:xpath-query> </ROOT>
針對對應架構指定的目錄路徑 (SampleSchema1.xml) 相對於儲存範本的目錄。 您也可以指定絕對路徑,例如:
mapping-schema="C:\MyDir\SampleSchema1.xml"
建立並使用 SQLXML 4.0 測試腳本 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱使用 ADO 執行 SQLXML 4.0 查詢。
以下是範本執行的部分結果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customer CustomerID="1" SalesPersonID="280"
TerritoryID="1" AccountNumber="1"
CustomerType="S" Orders="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
...
</Order>
...
</Customer>
</ROOT>