[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>この例では、要素 p1〜p5
がこの順に結果節集合に入ります。
[4] 仕様書にもありますが、 //child:p は /descendant:p の省略ではないのに注意が必要です。 この違いは述部を使って濾過する時に重要になります。
//child:p[2]
は {
が、 /descendant:p[2]
は p3}{
が結果になります。p2}
descendant-or-self が使えないくせに // が使えたりします。