指定位置路徑 (SQLXML 4.0)
XPath 查詢會以運算式的形式指定。運算式有各種不同的類型。位置路徑是一個運算式,可用來選取相對於內容節點的一組節點。評估位置路徑的結果為節點集。
位置路徑的類型
位置路徑可以是下列其中一個形式:
絕對位置路徑
絕對位置路徑會從文件的根節點開始。其中包含一條斜線 (/),後面選擇性地加上一個相對位置路徑。斜線 (/) 會選取文件的根節點。
相對位置路徑
相對位置路徑會從文件中的內容節點開始。位置路徑包含一或多個位置步驟的序列,而且每個位置步驟都以斜線 (/) 分隔。每個步驟都會選取相對於內容節點的一組節點。步驟的初始序列會選取一組相對於內容節點的節點。該集合中的每個節點都會當做下列步驟的內容節點使用。系統會加入由該步驟識別的節點集合。例如,child::Order/child::OrderDetail 會選取內容節點之 <Order> 元素子系的 <OrderDetail> 元素子系。
[!附註]
在 XPath 的 SQLXML 4.0 實作中,即使 XPath 明顯地不是絕對的,每個 XPath 查詢都會從根內容開始。例如,系統會將 "Customer" 開頭的 XPath 查詢視為 "/Customer"。在 XPath 查詢 Customer[Order] 中,Customer 會從根內容開始,但是 Order 會從 Customer 內容開始。如需詳細資訊,請參閱<使用 XPath 查詢的簡介 (SQLXML 4.0)>。
位置步驟
位置路徑 (絕對或相對) 是由包含三個部分的位置步驟所組成:
軸
軸會指定位置步驟與內容節點所選取之節點間的樹狀結構關聯性。系統支援 parent、child、attribute 和 self 軸。如果在位置路徑中指定 child 軸,查詢所選取的所有節點都是內容節點的子系。如果指定 parent 軸,選取的節點為內容節點的父節點。如果指定 attribute 軸,選取的節點為內容節點的屬性。
節點測試
節點測試會指定位置步驟所選取的節點類型。每個軸 (child、parent、attribute 和 self) 都有一個主體節點類型。對於 attribute 軸,主體節點類型為 <attribute>。對於 parent、child 和 self 軸,主體節點類型為 <element>。
例如,如果位置路徑指定 child::Customer,就會選取內容節點的 <Customer> 元素子系。child 軸擁有 <element> 當做其主體節點類型,因此,如果 Customer 是一個 <element> 節點,節點測試 Customer 為 TRUE。
選取述詞 (零或其他)
述詞會針對軸篩選節點集。在 XPath 運算式中指定選取述詞類似於在 SELECT 陳述式中指定 WHERE 子句。述詞是在方括號之間指定的。套用在選取述詞中指定的測試會篩選由節點測試傳回的節點。對於節點集內要篩選的每一個節點,該節點會當做內容節點,而且節點集內的節點數目會當做內容大小,評估述詞運算式。如果述詞運算式評估該節點為 TRUE,則產生的節點集會包含該節點。
位置步驟的語法是軸名稱之後加上雙冒號 (::)、接著是節點測試,最後是零或其他述詞,每個述詞都會以方括弧括起來。例如,XPath 運算式 (位置路徑) child::Customer[@CustomerID='ALFKI'] 會選取內容節點的所有 <Customer> 元素子系。接著,述詞中的測試會套用到節點集,僅傳回 <Customer> 元素節點與其 CustomerID 屬性的屬性值 'ALFKI'。
本節內容
指定軸 (SQLXML 4.0)
提供指定軸的範例。在位置路徑中指定節點測試 (SQLXML 4.0)
提供指定節點測試的範例。在位置路徑 (SQLXML 4.0) 中指定選取述詞
提供指定選取述詞的範例。