Share via


位置路徑

位置路徑是 XPath 運算式之一,可用來選取內容節點相對的一組節點。評估位置路徑運算式會得到節點集,其包含位置路徑所指定的節點。位置路徑可遞迴包含用來篩選節點集的運算式。

在語法上,位置路徑包含一或多個位置步驟,而且每一個位置步驟都是以正斜線 (/) 分隔:

locationstep/locationstep/locationstep

每個位置步驟會按照順序選取一組與內容節點 (亦即前一個位置步驟所選取的節點) 相對的節點。以這種方式表示的位置路徑是相對位置路徑。絕對位置路徑會從根項目起始:

/locationstep/locationstep/locationstep

在位置路徑中,會從左到右評估位置步驟。最左側的位置步驟會選取與內容節點相對的一組節點。於是,這些節點就會成為可用來處理下一個位置步驟的內容。內容節點的步驟和更新會反覆進行,直到完成所有位置步驟的處理為止。

位置路徑可以縮寫或不縮寫。

在不縮寫的位置路徑中,位置步驟的語法如下:

axis::node-test[predicate]

在這個語法中,axis 會指定位置步驟選取的節點與內容節點的相關性;node-test 會指定位置步驟選取之節點的節點型別和擴充名稱;predicate 則是篩選條件運算式,可進一步精簡位置步驟中選取的節點。述詞是選擇性項目。在此情況下,位置步驟只會包含 axis::node-test。下表提供一些範例。

不縮寫的位置路徑 說明

child::para[last()]

選取內容節點的最後一個 <para> 項目。

parent::para

選取內容節點之父代的 <para> 項目。

child::text()

選取內容節點的所有文字節點子系。

child::div/child::para

選取 <div> 項目 (其為內容節點的子系) 的 <para> 子項目。

在縮寫的位置路徑中,座標軸規範 axis:: 並不會在路徑步驟中明確表示,而是以一組捷徑隱含表示。下表提供一些範例。

縮寫的位置路徑 說明

para

選取內容節點的 <para> 項目。

../para

選取內容節點之父代的 <para> 項目。

text()

選取內容節點的所有文字節點子系。

./div/para

選取內容節點之 <div> 項目子系的 <para> 項目子系。

以下是部分縮寫的摘要:

不縮寫 縮寫

child::*

*

attribute::*

@*

/descendant-or-self::node()

//

self::node()

.

parent::node()

..

本節內容

下列主題詳細說明了位置路徑中各項目的語法和使用方式。