<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:">名前空間URI</anchor> <dfn>&lt;<code class="URI" xml:lang="en">http://www.w3.org/2000/xmlns/</code>&gt;</dfn>
は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML名前空間</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>するための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>で使われる特別な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間接頭辞</anchor>
<code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlns</anchor></code> と関連付けられている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間名</anchor>です。</p><p><code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlns</anchor>:</code> で始まる名前の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<anchor>名前空間接頭辞</anchor>を宣言するもの)</weak> と、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">修飾名</anchor>全体が <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlns</anchor></code> である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<anchor>既定名前空間</anchor>を宣言するもの)</weak>
の<code class="InfoProp"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間名</anchor></code> (だけ) が
<code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http://www.w3.org/2000/xmlns/</anchor></code>
となると定義されています。</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> 仕様書:<ul><li>[DOM2] <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="DOM2:&quot;Core/core.html#Namespaces-Considerations&quot;">IW:DOM2:&quot;Core/core.html#Namespaces-Considerations&quot;</anchor-external></li><li>[DOM3] <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="DOM3:&quot;Core/core.html#Namespaces-Considerations&quot;">IW:DOM3:&quot;Core/core.html#Namespaces-Considerations&quot;</anchor-external></li></ul></p><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">書きかけ</ed><section><h1>XML 構文との関係</h1><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">書きかけ</ed><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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間接頭辞</anchor>として <code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlns</anchor></code> を使うときは、
この接頭辞と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間URI</anchor> と関連付ける宣言
<code class="XML bad example">xmlns:xmlns=&quot;http://www.w3.org/2000/xmlns/&quot;</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>として記述しては<strong>なりません</strong>。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>XML 情報集合との関係</h1><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">書きかけ</ed><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>DOM との関係</h1><p><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>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</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>と同じように<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の
<code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">attributes</anchor></code> <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NamedNodeMap</anchor></code>
に含まれていて、 <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Attr</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節点</anchor>として表されます。
そして、その <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">namespaceURI</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の値が <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http://www.w3.org/2000/xmlns/</anchor></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>が <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlns</anchor></code>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>についても、そうです。 <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">getAttributeNS</anchor></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>類や <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">createAttributeNS</anchor></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>の扱いに関して他の<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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end>
ただし、 <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setAttributeNS</anchor></code> や <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">createAttributeNS</anchor></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:">名前空間URI</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> <code class="DOM" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NAMESPACE_ERR</anchor></code>
が発生することになっています。とはいえ、
そのチェックは全組合わせが仕様書 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">DOM2, DOM3</src>
で規定されているわけではなく、この<q>漏れ</q>が意図的なのか誤りなのかはよくわかりません。</p><p>仮に仕様書の漏れが誤りであるなら、あるいは誤りとみなして独自にチェックを行う実装では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性節点</anchor>に関する処理で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間URI</anchor> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">修飾名</anchor>が整合していることを暗黙の過程として処理できます。
例えば <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">prefix</anchor></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>を定義するための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>かどうかを判断できます。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<anchor>既定名前空間</anchor>のための<anchor>属性</anchor>の扱いには注意。)</weak></p><p>仕様書の漏れが意図的なもので、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間URI</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><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">書きかけ</ed><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>XPath 1.0 データ・モデルとの関係</h1><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">書きかけ</ed><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>XML 以外の名前空間機構における扱い</h1><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">書きかけ</ed><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>歴史</h1><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> この <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor> は、はじめ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM水準2</anchor>
で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間属性</anchor>の <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">namespaceURI</anchor></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>として定義されました。</p><ul><li><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:">URI</anchor> は当初の仕様では規定されておらず、接頭辞 <code class="XML">xmlns</code> は名前空間名には対応しない特殊なものとされていたが、 errata でこの URI と関連付けられた。</li></ul><ul><li><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> XML 名前空間 1.1 もこの名前空間名 URI を引き続き使用するようだ (<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/xml-names11/#xmlReserved">http://www.w3.org/TR/xml-names11/#xmlReserved</anchor-external>)。属性値 (名前空間名) が URI から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor> に変更されていたり細かい点で色々違いがあるはずなのだが、基本的には上位互換だから同じ名前空間でもよいということか。</li></ul><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>関連</h1><p><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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間URI</anchor>
として <code class="URI" xml:lang="en">&lt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http://www.w3.org/XML/1998/namespace</anchor>&gt;</code>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間接頭辞</anchor> <code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xml</anchor></code>) があります。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>メモ</h1><figure class="quote"><figcaption><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> <cite xml:lang="EN">XSL Transformations (XSLT) Version 3.0</cite>
(<time>2017-06-06 21:59:56 +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://www.w3.org/TR/2017/REC-xslt-30-20170608/#err-XTDE0835">https://www.w3.org/TR/2017/REC-xslt-30-20170608/#err-XTDE0835</anchor-external></figcaption><blockquote><p>It is a dynamic error if the effective value of the namespace attribute is not in the lexical space of the xs:anyURI datatype or if it is the string http://www.w3.org/2000/xmlns/.</p></blockquote></figure></section></body></html>