<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="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <dfn><code class="XPointerScheme" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">element()</anchor></code></dfn> は、
<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:">XPointer scheme</anchor> です。</p><section><h1>代替</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> この <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XPointer scheme</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>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ID</f> を使うのが一般的です。</p></section><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><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> <em>XPointer element() Scheme</em> <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/xptr-element/">http://www.w3.org/TR/xptr-element/</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <cite xml:lang="en">RFC 7303 - XML Media Types</cite> (<time>2014-07-07 20:56:43 +09:00</time> 版) <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://tools.ietf.org/html/rfc7303#section-5">http://tools.ietf.org/html/rfc7303#section-5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite xml:lang="en">RFC 7303 - XML Media Types</cite> (<time>2014-07-07 20:56:43 +09:00</time> 版) <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://tools.ietf.org/html/rfc7303#section-9.6.1">http://tools.ietf.org/html/rfc7303#section-9.6.1</anchor-external></li></ul></refs></section><section><h1>実装</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7303</anchor> に従う <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>の実装は、 <code class="XPointerScheme" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">element()</anchor></code>
に対応しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;14</anchor-internal></src>。 <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+xml</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>はこれを禁止しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 実装がこれに従っているのかは、大変疑わしいです。</comment-p></section><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> 何に使うのかがよく分からない。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XPath</anchor> つかう <code class="XPointerScheme"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xpointer</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">scheme</anchor>
の簡易版のつもりなのかなあ。</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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> まあそんなもんです。むしろ、従来の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ID</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>法の
scheme 版とでも言うか。でも大して用途があるとは思えないんだよなあ。
<samp class="XPointer"><code class="XPointerScheme">xmlns</code>(<ins>...</ins>) <code class="XPointerScheme"><var>something</var></code>(<ins>...</ins>) <code class="XPointerScheme"><var>something</var></code>(<ins>...</ins>) <ins>...</ins> <code class="XPointerScheme">element</code>(id-of-element)</samp>
って感じで fallback として使うことが目的なのかな。
確かにこのためだけに XPath を実装するのは重いかも。</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> 構文:<ul><li><code class="ABNF"><dfn>element 指示子部分</dfn> := 'element(' element scheme データ ')'</code></li><li><code class="ABNF"><dfn>element scheme データ</dfn> := 識別子 [子連] / 子連</code></li><li><code class="ABNF"><dfn>識別子</dfn> := <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NCName</anchor> ;; <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">速記</anchor>で使うのと同じ意味での要素の識別子</code></li><li><code class="ABNF"><dfn>子連</dfn> := 1*(&quot;/&quot; &lt;[1-9]&gt; *<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DIGIT</anchor>)</code></li></ul></p><p><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> 例:<dl><dt><samp class="XPointer"><code class="XPointerScheme">element</code>(foo)</samp></dt><dd>識別子 <samp>foo</samp> の要素</dd><dt><samp class="XPointer"><code class="XPointerScheme">element</code>(foo/1)</samp></dt><dd>識別子 <samp>foo</samp> の要素の最初の子要素</dd><dt><samp class="XPointer"><code class="XPointerScheme">element</code>(foo/2/15)</samp></dt><dd>識別子 <samp>foo</samp> の要素の2番目の子要素の15番目の子要素</dd><dt><samp class="XPointer"><code class="XPointerScheme">element</code>(/1)</samp></dt><dd><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>。)</dd><dt><samp class="XPointer"><code class="XPointerScheme">element</code>(/2)</samp></dt><dd>根節の下の2番目の要素 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部解析実体</anchor>対象のときには存在する可能性がある)</dd></dl></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 一致する要素が見つからなかった場合は単に一致なしで、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指示子</anchor>全体としてみたときに次の指示子部分があれば、
そちらに処理が移ります。 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">もちろん、最後の指示子部分だったとすればその指示子は該当なしということに。</weak>
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> の仕様書、すごいですねぇ。実に半分が前書き。
残り半分のさらに半分くらいは引用規格。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <em>XPointer xpointer() Scheme</em> <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/xptr-xpointer/#document-order-notation">http://www.w3.org/TR/xptr-xpointer/#document-order-notation</anchor-external> で <code class="XPointerScheme">element</code> scheme を (XPointer scheme としてではありませんが) 微妙に拡張して再定義してたりします。</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> は、範囲選択の記法の説明の中に登場するのですが、微妙に拡張というより、<code class="ABNF">子列</code>の一番最初の <code>/</code> を省略して、 <samp class="XPointer"><code class="XPointerScheme">element</code>(1/2)</samp> のように書いています。 (何かの間違いでしょう。)
(<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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML名前空間</anchor> 1.0 の <code class="ABNF">NCName</code> を参照しているので、このままでは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML 1.1</anchor> で (必ずしも) 使えません。今のところ errata にも修正ありませんけど、どうするのでしょう?
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2004-05-03 00:13:06 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end>
<cite>Bug 235409 &amp;#8211; XPointer element scheme doesn't work with XHTML media type</cite> (<time>2007-02-10 14:44:51 +09:00</time> 版) <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="https://bugzilla.mozilla.org/show_bug.cgi?id=235409">https://bugzilla.mozilla.org/show_bug.cgi?id=235409</anchor-external></p></section></body></html>