路徑表示式 (XQuery)
適用於:SQL Server
XQuery 路徑表示式會在檔中找出節點,例如元素、屬性和文字節點。 路徑表達式的結果一律會以文件順序發生,而結果序列中沒有重複的節點。 在指定路徑時,您可以使用未細分或縮寫的語法。 下列資訊著重於未細分的語法。 本主題稍後會說明縮寫語法。
注意
因為本主題中的範例查詢是針對 xml 類型數據行、CatalogDescription 和 Instructions 所指定,因此您應該熟悉儲存在這些數據行中之 XML 檔的內容和結構。
路徑表達式可以是相對或絕對的。 以下是這兩者的描述:
相對路徑表達式是由一或兩個斜線(/ 或 //或)分隔的一或多個步驟所組成。 例如,
child::Features
是相對路徑表達式,其中Child
只參考內容節點的子節點。 這是目前正在處理的節點。 表達式會 <擷取內容節點的Features> 元素節點子系。絕對路徑表達式會以一或兩個斜線標記 (/ 或 /111)開頭,後面接著選擇性的相對路徑。 例如,表達式
/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) 。
本節內容
在路徑表達式步驟中指定軸
描述在路徑表達式中使用座標軸步驟。
在路徑表達式步驟中指定節點測試
描述在路徑表達式中使用節點測試。
在路徑表達式步驟中指定述詞
描述在路徑表達式中使用述詞。
在路徑表達式中使用縮寫語法
描述在路徑表達式中使用縮寫語法。