<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 【<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XPath</anchor>】 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">軸</anchor> 
<code class="XPath">descendant-or-self</code>
は、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節</anchor>及びその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">子孫節</anchor>をあらわしまず。
この軸は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">順軸</anchor>です。</p><section><h1>省略形 //</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <code class="XPath">/descendant-or-self::<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">node</anchor>()/</code>
は、略して <code class="XPath">//</code> と書くことが出来ます。
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/xpath#path-abbrev">http://www.w3.org/TR/xpath#path-abbrev</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 例えば、 <code class="XPath">//<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">child</anchor>:p</code>
は、 <code class="XPath">/descendant-or-self::node()/child:p</code>
です。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈節</anchor>からみて、
<code>文脈節自身か、その子孫節である <code class="XML">p</code> 要素</code>が選択されます。</p><pre>&lt;root&gt;
  &lt;p id=&quot;p1&quot;&gt;
    &lt;foo&gt;
      &lt;p id=&quot;p2&quot;/&gt;
    &lt;/foo&gt;
  &lt;/p&gt;
  &lt;p id=&quot;p3&quot;/&gt;
  &lt;bar&gt;&lt;p id=&quot;p4&quot;/&gt;&lt;/bar&gt;
  &lt;p id=&quot;p5&quot;/&gt;
&lt;/root&gt;</pre><p>この例では、要素 <code class="XML">p1</code>〜<code class="XML">p5</code>
がこの順に結果<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節集合</anchor>に入ります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 仕様書にもありますが、 <samp class="XPath">//child:p</samp> は
<samp class="XPath">/descendant:p</samp> の省略<em>ではない</em>のに注意が必要です。
この違いは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">述部</anchor>を使って濾過する時に重要になります。</p><p><samp class="XPath">//child:p[2] </samp>
は <code class="math">{<code class="XML">p3</code>}</code>
が、 <samp class="XPath">/descendant:p[2] </samp>
は <code class="Math">{<code class="XML">p2</code>}</code>
が結果になります。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パターン</anchor>では、 <code class="XPath">descendant-or-self</code> が使えないくせに <code class="XPath">//</code> が使えたりします。</li></ul></p></section></body></html>