位置步驟
位置步驟可選取一組相對於內容節點的節點 (節點集)。
定位步驟分為三部分:選擇性的座標軸、節點測試,以及選擇性的述詞。 位置步驟的語法是在座標軸名稱之後加上雙冒號、接著是節點測試,最後是零或其他述詞,每個述詞都會以方括弧括起來。 此語法最基本的形式如下:
axis::nodetest[predicate]
axis
指定內容節點與位置步驟所要選取的節點之間的樹狀結構關聯性。 換句話說,座標軸可指出從內容節點開始執行位置步驟的一般方向。 在位置步驟中,座標軸是選擇性項目。 若將其省略,座標軸會預設為 child::。 此外,有數個座標軸具有捷徑形式;例如連字號 (@) 字元即為屬性軸的捷徑。nodetest
指定位置步驟最初要選取之節點的節點型別或展開名稱。 基本上,節點測試可指出在指定座標軸上所有節點之中,應將哪些節點視為位置步驟的候選項目,也就是可能的相符項目。predicate
使用 XPath 運算式 (要符合的條件) 可進一步精準化位置步驟所選取的節點集。 述詞是一種篩選條件,可指定選取準則以進一步縮小候選節點的清單。 述詞為選用項目。 位置步驟中若沒有述詞,就不會有方括弧 ([ 與 ])。
選取節點
位置步驟所選取的節點集,乃是根據座標軸與節點測試之間的關聯性所產生的初始節點集,經過每個述詞依序對其進行篩選之後,所獲致的節點集。
初始節點集所含的節點符合以下兩個準則:
這些節點對座標軸所指定的內容節點具有關聯性。
這些節點具有節點測試所指定的節點型別與展開名稱。
XPath 接著會使用位置步驟中的第一個述詞來篩選初始節點集,以產生新的節點集。 然後,XPath 會使用第二個述詞來篩選第一個述詞所產生的節點集。 這項篩選程序會重複執行,直到 XPath 完成所有述詞的評估為止。 套用了所有述詞後所產生的節點集,即為位置步驟所選取的節點集。
![]() |
---|
由於座標軸會影響每個述詞的運算式評估,因此必須定義關於指定座標軸的述詞語意。 |
下表列出某些使用完整語法的範例位置步驟。
位置步驟 |
描述 |
---|---|
child::*[position()=1] |
尋找內容節點的第一個子節點。 |
ancestor-or-self::book[@catdate="2000-12-31"] |
尋找內容節點之任何 <book> 子系的所有祖系,以及 <book> 子系本身,前提是,前述的項目具有 catdate 屬性,且其值為 "2000-12-31"。 |
//parent::node()[name()="book"] | descendant::node()[name()="author"] |
尋找文件中任何父節點名為 "book" 的節點,或任何繼承自 "author" 內容節點的節點。 |