位置路徑 (XPath)
位置路徑是 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() |
.. |
本節內容
下列主題詳細說明了位置路徑中各項目的語法和使用方式。