述詞
述詞是指可篩選與座標軸相關的節點集並產生新節點集的 XPath 運算式。在此篩選程序中,會對節點集內的每個節點持續進行述詞的評估。每當對節點評估述詞時:
內容節點即為目前正在評估的節點。
內容大小即為正在評估之節點集內的節點數。
內容位置即為節點集內之內容節點的位置。
在節點集內的內容節點上,所謂最後的內容,是相對於位置步驟中所指定的座標軸在巡覽文件樹狀結構時所使用的方向。座標軸通常會以順向或反向來巡覽樹狀結構:
所謂順向座標軸,是指含有內容節點、或在內容節點後含有節點的座標軸。
child::
、descendant::
、descendant-or-self::
、following::
和following-sibling::
座標軸是順向軸。這些順向軸會以文件順序為節點集內的節點編號,以 1 開始做為第一個位置。所謂反向座標軸,是指含有內容節點、或在內容節點前含有節點的座標軸。
ancestor::
、ancestor-or-self::
、preceding::
和preceding-sibling::
座標軸是反向軸。這些反向座標軸會以反向文件順序為節點集內的節點編號,以 1 開始做為第一個位置。
至於其餘的座標軸,self::
與 parent::
軸只會傳回單一節點。因此對這兩種座標軸而言,指定順向或反向並沒有意義。attribute::
與 namespaces::
這兩種座標軸並未定義順序,因此它們也不屬於順向軸或反向軸。
選取節點
述詞運算式會評估為數值或布林值。
若述詞產生了某個數字,XPath 會將該數字與內容節點的內容位置進行比較。若數字與位置兩者相同 (也就是說,內容節點在樹狀結構中位於適當的位置),述詞就會評估為 True,且內容節點會納入新的節點集內。否則,內容節點就會排除在新的節點集之外。
若述詞並未產生數字,XPath 會使用 boolean
函式,將結果轉換為布林值。例如,述詞 [genre='Computer']
會產生一個節點集。若內容節點具有 <genre>
子項目,而且其中含有 Computer
內容,則此述詞會評估為 True,且內容節點會納入新的節點集內。否則,內容節點就會排除在新的節點集之外。
注意: |
---|
數值述詞 [x] 等同於布林述詞 [position()=x] 。
|