共用方式為


路徑表示式 (XQuery)

適用於:SQL Server

XQuery 路徑表示式會在檔中找出節點,例如元素、屬性和文字節點。 路徑表達式的結果一律會以文件順序發生,而結果序列中沒有重複的節點。 在指定路徑時,您可以使用未細分或縮寫的語法。 下列資訊著重於未細分的語法。 本主題稍後會說明縮寫語法。

注意

因為本主題中的範例查詢是針對 xml 類型數據行、CatalogDescriptionInstructions 所指定,因此您應該熟悉儲存在這些數據行中之 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)

本節內容

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

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

在路徑表達式步驟中指定述詞
描述在路徑表達式中使用述詞。

在路徑表達式中使用縮寫語法
描述在路徑表達式中使用縮寫語法。