分享方式:


路徑運算式 (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)

本節內容

在路徑運算式步驟中指定軸
描述在路徑運算式中使用座標軸步驟。

在路徑運算式步驟中指定節點測試
描述在路徑運算式中使用節點測試。

在路徑運算式步驟中指定述詞
描述在路徑運算式中使用述詞。

在路徑運算式中使用縮寫語法
描述在路徑運算式中使用縮寫語法。