共用方式為


在位置路徑中指定選取述詞 (SQLXML 4.0)

適用於:SQL ServerAzure SQL 資料庫

述詞會根據座標軸篩選節點集(類似於 SELECT 語句中的 WHERE 子句)。 述詞是在括弧之間指定。 針對要篩選之節點集中的每個節點,述詞表達式會以該節點作為內容節點進行評估,並將節點集中的節點數目評估為內容大小。 如果述詞表達式評估為該節點的 TRUE,則節點會包含在產生的節點集中。

XPath 也允許位置型篩選。 評估為數位的述詞表達式會選取該序數節點。 例如,位置路徑 Customer[3] 會傳回第三個客戶。 不支援這類數值述詞。 只支援傳回布爾結果的述詞表達式。

注意

如需 XPath 實作的限制及其與 W3C 規格之間的差異的相關信息,請參閱 使用 XPath 查詢簡介 (SQLXML 4.0)

選取述詞:範例 1

下列 XPath 運算式 (位置路徑) 會從目前內容節點<中選取具有 ALFKI 值的 CustomerID 屬性值的所有 Customer> 元素子系:

/child::Customer[attribute::CustomerID="ALFKI"]  

在此 XPath 查詢中, childattribute 是軸名稱。 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 運算式中, childattribute 是座標軸名稱。 CustomerOrderSalesOrderID 是節點測試。 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]  

此查詢會選擇所有客戶,其中OrderDateShipDate任何 Order 的客戶等於任何 Order

另請參閱

批注式 XSD 架構簡介 (SQLXML 4.0)
用戶端 XML 格式設定 (SQLXML 4.0)