<html xmlns="http://www.w3.org/1999/xhtml" a0:Name="SuikaWiki" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:Version="0.9"><head></head><body><p><a0:anchor-end a0:anchor="1">[1]</a0:anchor-end> 【<a0:anchor>XPath</a0:anchor>】 <dfn>節検査</dfn> (node test,
<a0:anchor-external a0:resParameter="http://www.w3.org/TR/xpath#node-tests" a0:resScheme="URI">http://www.w3.org/TR/xpath#node-tests</a0:anchor-external>)
は、<a0:anchor>位置段階</a0:anchor>の必須の部分で、
<a0:anchor>節</a0:anchor>の種類や名前が一致するかを検査します。</p><ul><li><code class="ABNF"><dfn>節検査</dfn> := 名前検査 / 節検査関数</code></li><li><code class="ABNF"><dfn>名前検査</dfn> := [ <a0:anchor>WSP</a0:anchor> <title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"> <a0:anchor>名前空間接頭辞</a0:anchor> &quot;:&quot; ] (<a0:anchor>局部名</a0:anchor> / &quot;*&quot;) [WSP] </title></code></li><li><code class="ABNF">節検査関数 := 節検査関数名 [WSP] &quot;(&quot; [引数並び] &quot;)&quot; [WSP] </code>
<a0:anchor-end a0:anchor="2">[2]</a0:anchor-end> 名前検査は、型が<a0:anchor>主要節型</a0:anchor>である節のうち、
名前が一致する節の場合に<a0:anchor>真</a0:anchor>となります。
接頭辞がある場合、その<a0:anchor>文脈</a0:anchor>で解決した<a0:anchor>名前空間URI</a0:anchor>
と節の名前空間 URI の一致をみます。
接頭辞が無い場合は、 <code>null</code> 名前空間とみなされます。
局部名が <code class="XPath"><a0:anchor>*</a0:anchor></code> の場合は、
名前空間 URI が一致する全ての節が真となります。</li></ul><p>名前検査が <code class="XPath">*</code> で接頭辞が無い時は、
その型が主要節型である全ての節と一致します。</p><p>接頭辞を解決できない場合は<a0:anchor>誤り</a0:anchor>とします。</p><p><a0:anchor-end a0:anchor="3">[3]</a0:anchor-end> 節検査関数は、次のものが定義されています。<table><tbody><tr><td>関数</td><td>一致する節</td></tr><tr><td><code class="XPath"><a0:anchor>[comment</a0:anchor> ()</code></td><td><a0:anchor>注釈節</a0:anchor></td></tr><tr><td><code class="XPath"><a0:anchor>[node</a0:anchor> ()</code></td><td>全ての節</td></tr><tr><td><code class="XPath"><a0:anchor>[processing-instruction</a0:anchor> ( [ <var><a0:anchor>表記</a0:anchor></var> ] )</code></td><td>[ <a0:anchor>対象名</a0:anchor>が引数と一致する ] <a0:anchor>処理指令節</a0:anchor></td></tr><tr><td><code class="XPath"><a0:anchor>text</a0:anchor> ()</code></td><td><a0:anchor>文節</a0:anchor></td></tr></tbody></table></p><p><a0:anchor-end a0:anchor="4">[4]</a0:anchor-end> <a0:anchor-internal a0:anchor="3">&gt;&gt;3</a0:anchor-internal> つまらないことに <code class="XPath">processing-instruction</code>
の引数は表記であって任意の文字列じゃないのね。</p><p><a0:anchor-end a0:anchor="5">[5]</a0:anchor-end> 例:<ul><li><samp class="XPath">foo</samp><ul><li>真 <samp class="XML">foo</samp></li><li>偽 <samp class="XML">{http://ns.example/}:foo</samp></li></ul></li><li><samp class="XPath">foo:bar</samp> (<samp class="XML"><a0:anchor>xmlns</a0:anchor>:foo=&quot;http://ns.example/&quot;</samp>)<ul><li>偽 <samp class="XML">bar</samp></li><li>真 <samp class="XML">foo:bar</samp> (<samp class="XML">xmlns:foo=&quot;http://ns.example/&quot;</samp>)</li><li>偽 <samp class="XML">foo:bar</samp> (<samp class="XML">xmlns:foo=&quot;ftp://ns.example/&quot;</samp>)</li><li>真 <samp class="XML">baz:bar</samp> (<samp class="XML">xmlns:baz=&quot;http://ns.example/&quot;</samp>)</li></ul></li><li><samp class="XPath">baz:bar</samp> (<samp class="XML">xmlns:baz</samp> = ??)<ul><li>誤り</li></ul></li><li><samp class="XML">*</samp><ul><li>真 <samp class="XML">foo</samp></li><li>真 <samp class="XML">bar</samp></li><li>真 <samp class="XML">foo:bar</samp></li></ul></li><li><samp class="XML">foo:*</samp> (<samp class="XML">xmlns:foo=&quot;http://ns.example/&quot;</samp>)<ul><li>偽 <samp class="XML">foo</samp></li><li>真 <samp class="XML">foo:bar</samp> (<samp class="XML">xmlns:foo=&quot;http://ns.example/&quot;</samp>)</li><li>偽 <samp class="XML">foo:bar</samp> (<samp class="XML">xmlns:foo=&quot;ftp://ns.example/&quot;</samp>)</li><li>真 <samp class="XML">bar:bar</samp> (<samp class="XML">xmlns:bar=&quot;http://ns.example/&quot;</samp>)</li></ul></li></ul></p><p><a0:anchor-end a0:anchor="6">[6]</a0:anchor-end> <code class="XPath">*:foo</code> みたいな書き方は出来ないわけですね。
まあこんなもの役に立つとは思えませんが。</p></body></html>