[1]
[[名前空間URI]] [DFN[<[CODE(URI)@en[http://www.w3.org/2000/xmlns/]]>]]
は、[[XML名前空間]]において[[名前空間接頭辞]]を[[宣言]]するための[[属性]]で使われる特別な[[名前空間接頭辞]]
[CODE(XML)@en[[[xmlns]]]] と関連付けられている[[名前空間名]]です。

[CODE(XMLa)@en[[[xmlns]]:]] で始まる名前の[[属性]]
[WEAK[([[名前空間接頭辞]]を宣言するもの)]] と、
[[修飾名]]全体が [CODE(XMLa)@en[[[xmlns]]]] である[[属性]]
[WEAK[([[既定名前空間]]を宣言するもの)]]
の[CODE(InfoProp)[[[名前空間名]]]] (だけ) が
[CODE(URI)@en[[[http://www.w3.org/2000/xmlns/]]]]
となると定義されています。

[6] 仕様書:
- [DOM2] <IW:DOM2:"Core/core.html#Namespaces-Considerations">
- [DOM3] <IW:DOM3:"Core/core.html#Namespaces-Considerations">

@@書きかけ

* XML 構文との関係

@@書きかけ

[3] [[名前空間接頭辞]]として [CODE(XML)@en[[[xmlns]]]] を使うときは、
この接頭辞と[[名前空間URI]] と関連付ける宣言
[CODE(XML bad example)[xmlns:xmlns="http://www.w3.org/2000/xmlns/"]]
を[[要素]]の[[属性]]として記述しては'''なりません'''。

[[#comment]]

* XML 情報集合との関係

@@書きかけ

[[#comment]]

* DOM との関係

[8]
[[DOM]] では、[[名前空間属性]]も通常の[[属性]]と同じように[[要素]]の
[CODE(DOMa)@en[[[attributes]]]] [CODE(DOMi)@en[[[NamedNodeMap]]]]
に含まれていて、 [CODE(DOMi)@en[[[Attr]]]] [[節点]]として表されます。
そして、その [CODE(DOMa)@en[[[namespaceURI]]]]
[[属性]]の値が [CODE(URI)@en[[[http://www.w3.org/2000/xmlns/]]]]
となります。[[既定名前空間]]のための[[修飾名]]が [CODE(XMLa)@en[[[xmlns]]]]
の[[属性]]についても、そうです。 [CODE(DOMm)@en[[[getAttributeNS]]]]
などの[[属性]]にアクセスする[[メソッド]]類や [CODE(DOMm)@en[[[createAttributeNS]]]]
のような[[属性節点]]を作成する[[メソッド]]も、
正しい[[名前空間属性]]の扱いに関して他の[[属性]]と区別はありません。

[9]
ただし、 [CODE(DOMm)@en[[[setAttributeNS]]]] や [CODE(DOMm)@en[[[createAttributeNS]]]]
のような[[属性]]を作成する[[メソッド]]では、[[名前空間URI]]
と[[修飾名]]をチェックして、不整合があると[[例外]] [CODE(DOM)@en[[[NAMESPACE_ERR]]]]
が発生することになっています。とはいえ、
そのチェックは全組合わせが仕様書 [SRC[DOM2, DOM3]]
で規定されているわけではなく、この[Q[漏れ]]が意図的なのか誤りなのかはよくわかりません。

仮に仕様書の漏れが誤りであるなら、あるいは誤りとみなして独自にチェックを行う実装では、
[[属性節点]]に関する処理で[[名前空間URI]] と[[修飾名]]が整合していることを暗黙の過程として処理できます。
例えば [CODE(DOMa)@en[[[prefix]]]] 
[[属性]]を見るだけである[[属性]]が[[名前空間接頭辞]]を定義するための[[属性]]かどうかを判断できます。
[WEAK[([[既定名前空間]]のための[[属性]]の扱いには注意。)]]

仕様書の漏れが意図的なもので、[[名前空間URI]] 
と[[修飾名]]が不整合な内部状態が可能だとすると、
[[名前空間]]に関する実装の内部処理が煩雑化する可能性もあります。

@@書きかけ

[[#comment]]

* XPath 1.0 データ・モデルとの関係

@@書きかけ

[[#comment]]

* XML 以外の名前空間機構における扱い

@@書きかけ

[[#comment]]

* 歴史

[5] この [[URI]] は、はじめ [[DOM水準2]]
で[[名前空間属性]]の [CODE(DOMa)@en[[[namespaceURI]]]]
[[属性]]の[[値]]として定義されました。

- [2] この名前空間名 [[URI]] は当初の仕様では規定されておらず、接頭辞 [CODE(XML)[xmlns]] は名前空間名には対応しない特殊なものとされていたが、 errata でこの URI と関連付けられた。

- [4] XML 名前空間 1.1 もこの名前空間名 URI を引き続き使用するようだ (<http://www.w3.org/TR/xml-names11/#xmlReserved>)。属性値 (名前空間名) が URI から [[IRI]] に変更されていたり細かい点で色々違いがあるはずなのだが、基本的には上位互換だから同じ名前空間でもよいということか。

[[#comment]]

* 関連

[7]
同様に特別な扱いがなされる[[名前空間URI]]
として [CODE(URI)@en[<[[http://www.w3.org/XML/1998/namespace]]>]]
([[名前空間接頭辞]] [CODE(XML)@en[[[xml]]]]) があります。

[[#comment]]

* メモ


[FIG(quote)[
[FIGCAPTION[
[10] [CITE@EN[XSL Transformations (XSLT) Version 3.0]]
([TIME[2017-06-06 21:59:56 +09:00]])
<https://www.w3.org/TR/2017/REC-xslt-30-20170608/#err-XTDE0835>
]FIGCAPTION]

> 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/.

]FIG]
