路徑運算式 (XQuery)
適用於:SQL Server
XQuery 路徑運算式會在檔中找出節點,例如元素、屬性和文位元組點。 路徑運算式的結果一律會以檔順序發生,而結果序列中沒有重複的節點。 在指定路徑時,您可以使用未細分或縮寫的語法。 下列資訊著重于未細分的語法。 本主題稍後會說明縮寫語法。
注意
因為本主題中的範例查詢是針對 xml 類型資料行、 CatalogDescription 和 Instructions 所指定,因此您應該熟悉儲存在這些資料行中 之 XML 檔的內容和結構。
路徑運算式可以是相對或絕對的。 以下是這兩者的描述:
相對路徑運算式是由一或兩個斜線(/ 或 //) 分隔的一或多個步驟所組成。 例如,
child::Features
是相對路徑運算式,其中Child
只參考內容節點的子節點。 這是目前正在處理的節點。 運算式會 < 擷取內容節點的 Features > 元素節點子系。絕對路徑運算式會以一或兩個斜線標記 (/ 或 //) 開頭,後面接著選擇性的相對路徑。 例如,運算式
/child::ProductDescription
中的初始斜線標記,表示它是絕對路徑運算式。 由於運算式開頭的斜線標記會傳回內容節點的檔根節點,因此運算式會傳回檔根目錄的所有 < ProductDescription > 元素節點子系。如果絕對路徑以單一斜線標記開頭,它可能或可能不會後面接著相對路徑。 如果您只指定單一斜線標記,運算式會傳回內容節點的根節點。 如果是 XML 資料類型,這是其檔節點。
典型的路徑運算式是由步驟所組成。 例如,絕對路徑運算式 /child::ProductDescription/child::Summary
包含兩個步驟,並以斜線標記分隔。
第一個步驟會 < 擷取檔根目錄的 ProductDescription > 元素節點子系。
第二個步驟會 < 針對每個擷 < 取的 ProductDescription > 元素節點擷取 Summary > 元素節點子系,而此節點又會變成內容節點。
路徑運算式中的步驟可以是軸步驟或一般步驟。
軸步驟
路徑運算式中的軸步驟具有下列部分。
軸
定義移動的方向。 路徑運算式中的軸步驟,從內容節點開始,並巡覽至可透過座標軸所指定方向觸達的節點。
節點測試
指定要選取的節點類型或節點名稱。
零個或多個選擇性述詞
選取一些節點並捨棄其他節點,以篩選節點。
下列範例會在路徑運算式中使用 軸步驟 :
絕對路徑運算式
/child::ProductDescription
只包含一個步驟。 它會指定軸 (child
) 和節點測試 (ProductDescription
)。相對路徑運算式
child::ProductDescription/child::Features
包含兩個步驟,以斜線標記分隔。 這兩個步驟都會指定子軸。 ProductDescription 和功能是節點測試。相對路徑運算式
child::root/child::Location[attribute::LocationID=10]
包含兩個步驟,並以斜線標記分隔。 第一個步驟會指定軸 (child
) 和節點測試 (root
)。 第二個步驟會指定座標軸步驟的所有三個元件:軸(子系)、節點測試(Location
)和述詞([attribute::LocationID=10]
)。
如需軸步驟元件的詳細資訊,請參閱 在路徑運算式步驟 中指定座標軸、 在路徑運算式步驟 中指定節點測試,以及在 路徑運算式步驟 中指定述詞。
一般步驟
一般步驟只是必須評估為節點序列的運算式。
SQL Server 中的 XQuery 實作支援一般步驟,做為路徑運算式的第一個步驟。 以下是使用一般步驟的路徑運算式範例。
(/a, /b)/c
id(/a/b)
如需 id 函式的詳細資訊, 請參閱 id 函式 (XQuery) 。
本節內容
在路徑運算式步驟中指定軸
描述在路徑運算式中使用座標軸步驟。
在路徑運算式步驟中指定節點測試
描述在路徑運算式中使用節點測試。
在路徑運算式步驟中指定述詞
描述在路徑運算式中使用述詞。
在路徑運算式中使用縮寫語法
描述在路徑運算式中使用縮寫語法。