descendant-or-self

descendant-or-self

[1]XPath descendant-or-self は、その及びその子孫節をあらわしまず。 この軸は順軸です。

省略形 //

[2] /descendant-or-self::node()/ は、略して // と書くことが出来ます。 <http://www.w3.org/TR/xpath#path-abbrev>

[3] 例えば、 //child:p は、 /descendant-or-self::node()/child:p です。文脈節からみて、 文脈節自身か、その子孫節である p 要素が選択されます。

<root>
  <p id="p1">
    <foo>
      <p id="p2"/>
    </foo>
  </p>
  <p id="p3"/>
  <bar><p id="p4"/></bar>
  <p id="p5"/>
</root>

この例では、要素 p1p5 がこの順に結果節集合に入ります。

[4] 仕様書にもありますが、 //child:p/descendant:p の省略ではないのに注意が必要です。 この違いは述部を使って濾過する時に重要になります。

//child:p[2] {p3} が、 /descendant:p[2] {p2} が結果になります。