述語

述語 (XPath 1.0)

[1] 述部 (predicate; <http://www.w3.org/TR/xpath#predicates>) は、位置段階の末尾に零個以上つけることができます。 述部は、位置段階の前の部分、すなわち節検査の結果で得た節集合濾過して更に絞り込むのに使います。

述部は複数記述できますが、前の述部から順に濾過します。

例えば、 child:foo [ expr1 は、まず child:foo を評価して得た節集合を、 まず expr1 で濾過し、次に expr2 で濾過して、この結果を全体の評価結果の節集合とします。

[2]

[3] 述部式は、次のように評価します。

  1. まず、式を評価します。
  2. 評価結果が数値である場合、 文脈位置との比較の真偽を結果とします。 例えば、述部 [3] は、 [ position() = 3 ] と等価です。
  3. それ以外の場合、 boolean( $述部式 ) を結果とします。

結果が真ならその節は濾過結果の節集合に入れられ、 偽であれば位置段階中でのその節の評価はそこでおしまいです。

[4]

<context>
  <foo>
     <p id="p1"/>
     <p id="p2"/>
  </foo>
  <p id="p3"/>
  <bar>
    <p id="p4"/>
    <p id="p5"/>
  </bar>
</context>
で、 descendant:p[position()=2] は要素 p2 です。

[5] 164822 – XPath expressions .[foo] and ..[foo] shouldn't work ( ( 版)) <https://bugzilla.mozilla.org/show_bug.cgi?id=164822>