the XMLNS Namespace

XMLNS 名前空間 (XML)

[1] 名前空間URI <http://www.w3.org/2000/xmlns/> は、XML名前空間において名前空間接頭辞宣言するための属性で使われる特別な名前空間接頭辞 xmlns と関連付けられている名前空間名です。

xmlns: で始まる名前の属性 (名前空間接頭辞を宣言するもの) と、 修飾名全体が xmlns である属性 (既定名前空間を宣言するもの)名前空間名 (だけ) が http://www.w3.org/2000/xmlns/ となると定義されています。

[6] 仕様書:

書きかけ

XML 構文との関係

書きかけ

[3] 名前空間接頭辞として xmlns を使うときは、 この接頭辞と名前空間URI と関連付ける宣言 xmlns:xmlns="http://www.w3.org/2000/xmlns/"要素属性として記述してはなりません

XML 情報集合との関係

書きかけ

DOM との関係

[8] DOM では、名前空間属性も通常の属性と同じように要素attributes NamedNodeMap に含まれていて、 Attr 節点として表されます。 そして、その namespaceURI 属性の値が http://www.w3.org/2000/xmlns/ となります。既定名前空間のための修飾名xmlns属性についても、そうです。 getAttributeNS などの属性にアクセスするメソッド類や createAttributeNS のような属性節点を作成するメソッドも、 正しい名前空間属性の扱いに関して他の属性と区別はありません。

[9] ただし、 setAttributeNScreateAttributeNS のような属性を作成するメソッドでは、名前空間URI修飾名をチェックして、不整合があると例外 NAMESPACE_ERR が発生することになっています。とはいえ、 そのチェックは全組合わせが仕様書 DOM2, DOM3 で規定されているわけではなく、この漏れが意図的なのか誤りなのかはよくわかりません。

仮に仕様書の漏れが誤りであるなら、あるいは誤りとみなして独自にチェックを行う実装では、 属性節点に関する処理で名前空間URI修飾名が整合していることを暗黙の過程として処理できます。 例えば prefix 属性を見るだけである属性名前空間接頭辞を定義するための属性かどうかを判断できます。 (既定名前空間のための属性の扱いには注意。)

仕様書の漏れが意図的なもので、名前空間URI修飾名が不整合な内部状態が可能だとすると、 名前空間に関する実装の内部処理が煩雑化する可能性もあります。

書きかけ

XPath 1.0 データ・モデルとの関係

書きかけ

XML 以外の名前空間機構における扱い

書きかけ

歴史

[5] この URI は、はじめ DOM水準2名前空間属性namespaceURI 属性として定義されました。

関連

[7] 同様に特別な扱いがなされる名前空間URI として <http://www.w3.org/XML/1998/namespace> (名前空間接頭辞 xml) があります。

メモ

[10] XSL Transformations (XSLT) Version 3.0 () <https://www.w3.org/TR/2017/REC-xslt-30-20170608/#err-XTDE0835>

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