在位置路徑中指定選取述詞 (SQLXML 4.0)
述詞會根據座標軸篩選節點集(類似於 SELECT 語句中的 WHERE 子句)。 述詞是在括弧之間指定。 針對要篩選之節點集中的每個節點,述詞表達式會以該節點作為內容節點進行評估,並將節點集中的節點數目評估為內容大小。 如果述詞表達式評估為該節點的 TRUE,則節點會包含在產生的節點集中。
XPath 也允許位置型篩選。 評估為數位的述詞表達式會選取該序數節點。 例如,位置路徑 Customer[3]
會傳回第三個客戶。 不支援這類數值述詞。 只支援傳回布爾結果的述詞表達式。
注意
如需 XPath 實作的限制及其與 W3C 規格之間的差異的相關信息,請參閱 使用 XPath 查詢簡介 (SQLXML 4.0) 。
選取述詞:範例 1
下列 XPath 運算式 (位置路徑) 會從目前內容節點<中選取具有 ALFKI 值的 CustomerID 屬性值的所有 Customer> 元素子系:
/child::Customer[attribute::CustomerID="ALFKI"]
在此 XPath 查詢中, child
和 attribute
是軸名稱。 Customer
是節點測試 (如果 Customer
是<項目節點>,則為TRUE,因為 <元素>是座標軸的child
主體節點類型)。 attribute::CustomerID="ALFKI"
是述詞。 在述詞中,attribute
是座標軸,而且CustomerID
是節點測試(如果 CustomerID 是內容節點的屬性,則為 TRUE,因為 <屬性>是屬性座標軸的主要節點類型)。
使用縮寫語法,XPath 查詢也可以指定為:
/Customer[@CustomerID="ALFKI"]
選取述詞:範例 2
下列 XPath 運算式 (位置路徑) 會從目前內容節點中選取具有 SalesOrderID 屬性且值為 1 的 <Order> 孫子系:
/child::Customer/child::Order[attribute::SalesOrderID="1"]
在此 XPath 運算式中, child
和 attribute
是座標軸名稱。 Customer
、 Order
和 SalesOrderID
是節點測試。 attribute::OrderID="1"
是述詞。
使用縮寫語法,XPath 查詢也可以指定為:
/Customer/Order[@SalesOrderID="1"]
選取述詞:範例 3
下列 XPath 運算式 (位置路徑) 會從目前內容節點中選取具有一或多個 <ContactName> 子系的所有< Customer> 子系:
child::Customer[child::ContactName]
此範例假設 ContactName> 是 XML 檔中 Customer> 元素的<子元素,這稱為批注式 XSD 架構中的元素中心對應。<
在此 XPath 運算式中, child
是座標軸名稱。 Customer
是節點測試 (如果 Customer
是項目>節點,則為<TRUE,因為<元素>是座標軸的主要child
節點類型)。 child::ContactName
是述詞。 在述詞中,child
是座標軸,而且ContactName
是節點測試(如果 ContactName
為元素>節點則為 <TRUE)。
此表達式只會<傳回具有< ContactName> 元素子系之內容節點的 Customer> 元素子系。
使用縮寫語法,XPath 查詢也可以指定為:
Customer[ContactName]
選取述詞:範例 4
下列 XPath 表達式會<選取沒有< ContactName> 元素子系之內容節點的 Customer> 元素子系:
child::Customer[not(child::ContactName)]
本範例假設 <ContactName> 是 XML 檔中 Customer> 元素的<子元素,而且資料庫中不需要 ContactName 字段。
在此範例中, child
是座標軸。 Customer
是節點測試(如果 Customer
為項目>節點則為<TRUE)。 not(child::ContactName)
是述詞。 在述詞中,child
是座標軸,而且ContactName
是節點測試(如果 ContactName
為元素>節點則為 <TRUE)。
使用縮寫語法,XPath 查詢也可以指定為:
Customer[not(ContactName)]
選取述詞:範例 5
下列 XPath 運算式會從目前內容節點中選取具有 CustomerID 屬性的所有 <Customer> 子系:
child::Customer[attribute::CustomerID]
在此範例中,child
是座標軸,而且Customer
是節點測試(如果 Customer
為項目>節點則為 <TRUE)。 attribute::CustomerID
是述詞。 在述詞中,attribute
是座標軸,而且CustomerID
是述詞(如果 CustomerID
是屬性>節點則為 <TRUE)。
使用縮寫語法,XPath 查詢也可以指定為:
Customer[@CustomerID]
選取述詞:範例 6
Microsoft SQLXML 4.0 包含 XPath 查詢的支援,其中包含述詞中的跨產品,如下列範例所示:
Customer[Order/@OrderDate=Order/@ShipDate]
此查詢會選擇所有客戶,其中OrderDate
ShipDate
任何 Order
的客戶等於任何 Order
。