[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
が使えないくせに //
が使えたりします。