在位置路徑中指定節點測試 (SQLXML 4.0)
節點測試會指定位置步驟所選取的節點類型。 每個軸 (child、parent、attribute 或 self) 都有一個主要節點類型。 若為 attribute 軸,主要節點類型會是 <attribute>。 若為 parent、child 和 self 軸,主要節點類型會是 <element>。
[!附註]
不支援萬用字元節點測試 * (例如 child::*)。
節點測試:範例 1
位置路徑 child::Customer 會選取內容節點的 <Customer> 元素子系。
在此範例中,child 為軸,而 Customer 為節點測試。 child 軸的主要節點類型是 <element>。 因此,如果 <Customer> 節點是 <element> 節點,節點測試就是 TRUE。 若內容節點沒有 <Customer> 子系,則會傳回空的節點集。
節點測試:範例 2
位置路徑 attribute::CustomerID 會選取內容節點的 CustomerID 屬性。
在此範例中,attribute 為軸,而 CustomerID 為節點測試。 attribute 軸的主要節點類型為 <attribute>。 因此,如果 CustomerID 是 <attribute> 節點,節點測試就是 TRUE。 若內容節點沒有 CustomerID,則會傳回空的節點集。
[!附註]
在這個 Xpath 實作中,如果位置步驟參考未在此結構描述中宣告的 <element> 或 <attribute> 類型,則會產生錯誤。 這與 MSXML 中的 XPath 實作不同,該實作會傳回空的節點集。
軸的縮寫語法
位置路徑的以下縮寫語法有受到支援:
attribute:: 可縮寫成 @。
位置路徑 Customer[@CustomerID="ALFKI"] 與 child::Customer[attribute::CustomerID="ALFKI"] 相同。
位置步驟中可省略 child::。
因此,child 是預設軸。 位置路徑 Customer/Order 與 child::Customer/child::Order 相同。
self::node() 可以縮寫成一個句號 (.),而 parent::node() 可縮寫成兩個句號 (..)。