1 |
wakaba |
1.1 |
[1]
|
2 |
|
|
[[名前空間URI]] [DFN[<[CODE(URI)@en[http://www.w3.org/2000/xmlns/]]>]]
|
3 |
|
|
は、[[XML名前空間]]において[[名前空間接頭辞]]を[[宣言]]するための[[属性]]で使われる特別な[[名前空間接頭辞]]
|
4 |
|
|
[CODE(XML)@en[[[xmlns]]]] と関連付けられている[[名前空間名]]です。
|
5 |
|
|
|
6 |
|
|
[CODE(XMLa)@en[[[xmlns]]:]] で始まる名前の[[属性]]
|
7 |
|
|
[WEAK[([[名前空間接頭辞]]を宣言するもの)]] と、
|
8 |
|
|
[[修飾名]]全体が [CODE(XMLa)@en[[[xmlns]]]] である[[属性]]
|
9 |
|
|
[WEAK[([[既定名前空間]]を宣言するもの)]]
|
10 |
|
|
の[CODE(InfoProp)[[[名前空間名]]]] (だけ) が
|
11 |
|
|
[CODE(URI)@en[[[http://www.w3.org/2000/xmlns/]]]]
|
12 |
|
|
となると定義されています。
|
13 |
|
|
|
14 |
|
|
[6] 仕様書:
|
15 |
|
|
- [DOM2] <IW:DOM2:"Core/core.html#Namespaces-Considerations">
|
16 |
|
|
- [DOM3] <IW:DOM3:"Core/core.html#Namespaces-Considerations">
|
17 |
|
|
|
18 |
|
|
@@書きかけ
|
19 |
|
|
|
20 |
|
|
* XML 構文との関係
|
21 |
|
|
|
22 |
|
|
@@書きかけ
|
23 |
|
|
|
24 |
|
|
[3] [[名前空間接頭辞]]として [CODE(XML)@en[[[xmlns]]]] を使うときは、
|
25 |
|
|
この接頭辞と[[名前空間URI]] と関連付ける宣言
|
26 |
|
|
[CODE(XML bad example)[xmlns:xmlns="http://www.w3.org/2000/xmlns/"]]
|
27 |
|
|
を[[要素]]の[[属性]]として記述しては'''なりません'''。
|
28 |
|
|
|
29 |
|
|
[[#comment]]
|
30 |
|
|
|
31 |
|
|
* XML 情報集合との関係
|
32 |
|
|
|
33 |
|
|
@@書きかけ
|
34 |
|
|
|
35 |
|
|
[[#comment]]
|
36 |
|
|
|
37 |
|
|
* DOM との関係
|
38 |
|
|
|
39 |
|
|
[8]
|
40 |
|
|
[[DOM]] では、[[名前空間属性]]も通常の[[属性]]と同じように[[要素]]の
|
41 |
|
|
[CODE(DOMa)@en[[[attributes]]]] [CODE(DOMi)@en[[[NamedNodeMap]]]]
|
42 |
|
|
に含まれていて、 [CODE(DOMi)@en[[[Attr]]]] [[節点]]として表されます。
|
43 |
|
|
そして、その [CODE(DOMa)@en[[[namespaceURI]]]]
|
44 |
|
|
[[属性]]の値が [CODE(URI)@en[[[http://www.w3.org/2000/xmlns/]]]]
|
45 |
|
|
となります。[[既定名前空間]]のための[[修飾名]]が [CODE(XMLa)@en[[[xmlns]]]]
|
46 |
|
|
の[[属性]]についても、そうです。 [CODE(DOMm)@en[[[getAttributeNS]]]]
|
47 |
|
|
などの[[属性]]にアクセスする[[メソッド]]類や [CODE(DOMm)@en[[[createAttributeNS]]]]
|
48 |
|
|
のような[[属性節点]]を作成する[[メソッド]]も、
|
49 |
|
|
正しい[[名前空間属性]]の扱いに関して他の[[属性]]と区別はありません。
|
50 |
|
|
|
51 |
|
|
[9]
|
52 |
|
|
ただし、 [CODE(DOMm)@en[[[setAttributeNS]]]] や [CODE(DOMm)@en[[[createAttributeNS]]]]
|
53 |
|
|
のような[[属性]]を作成する[[メソッド]]では、[[名前空間URI]]
|
54 |
|
|
と[[修飾名]]をチェックして、不整合があると[[例外]] [CODE(DOM)@en[[[NAMESPACE_ERR]]]]
|
55 |
|
|
が発生することになっています。とはいえ、
|
56 |
|
|
そのチェックは全組合わせが仕様書 [SRC[DOM2, DOM3]]
|
57 |
|
|
で規定されているわけではなく、この[Q[漏れ]]が意図的なのか誤りなのかはよくわかりません。
|
58 |
|
|
|
59 |
|
|
仮に仕様書の漏れが誤りであるなら、あるいは誤りとみなして独自にチェックを行う実装では、
|
60 |
|
|
[[属性節点]]に関する処理で[[名前空間URI]] と[[修飾名]]が整合していることを暗黙の過程として処理できます。
|
61 |
|
|
例えば [CODE(DOMa)@en[[[prefix]]]]
|
62 |
|
|
[[属性]]を見るだけである[[属性]]が[[名前空間接頭辞]]を定義するための[[属性]]かどうかを判断できます。
|
63 |
|
|
[WEAK[([[既定名前空間]]のための[[属性]]の扱いには注意。)]]
|
64 |
|
|
|
65 |
|
|
仕様書の漏れが意図的なもので、[[名前空間URI]]
|
66 |
|
|
と[[修飾名]]が不整合な内部状態が可能だとすると、
|
67 |
|
|
[[名前空間]]に関する実装の内部処理が煩雑化する可能性もあります。
|
68 |
|
|
|
69 |
|
|
@@書きかけ
|
70 |
|
|
|
71 |
|
|
[[#comment]]
|
72 |
|
|
|
73 |
|
|
* XPath 1.0 データ・モデルとの関係
|
74 |
|
|
|
75 |
|
|
@@書きかけ
|
76 |
|
|
|
77 |
|
|
[[#comment]]
|
78 |
|
|
|
79 |
|
|
* XML 以外の名前空間機構における扱い
|
80 |
|
|
|
81 |
|
|
@@書きかけ
|
82 |
|
|
|
83 |
|
|
[[#comment]]
|
84 |
|
|
|
85 |
|
|
* 歴史
|
86 |
|
|
|
87 |
|
|
[5] この [[URI]] は、はじめ [[DOM水準2]]
|
88 |
|
|
で[[名前空間属性]]の [CODE(DOMa)@en[[[namespaceURI]]]]
|
89 |
|
|
[[属性]]の[[値]]として定義されました。
|
90 |
|
|
|
91 |
|
|
- [2] この名前空間名 [[URI]] は当初の仕様では規定されておらず、接頭辞 [CODE(XML)[xmlns]] は名前空間名には対応しない特殊なものとされていたが、 errata でこの URI と関連付けられた。
|
92 |
|
|
|
93 |
|
|
- [4] XML 名前空間 1.1 もこの名前空間名 URI を引き続き使用するようだ (<http://www.w3.org/TR/xml-names11/#xmlReserved>)。属性値 (名前空間名) が URI から [[IRI]] に変更されていたり細かい点で色々違いがあるはずなのだが、基本的には上位互換だから同じ名前空間でもよいということか。
|
94 |
|
|
|
95 |
|
|
[[#comment]]
|
96 |
|
|
|
97 |
|
|
* 関連
|
98 |
|
|
|
99 |
|
|
[7]
|
100 |
|
|
同様に特別な扱いがなされる[[名前空間URI]]
|
101 |
|
|
として [CODE(URI)@en[<[[http://www.w3.org/XML/1998/namespace]]>]]
|
102 |
|
|
([[名前空間接頭辞]] [CODE(XML)@en[[[xml]]]]) があります。
|
103 |
|
|
|
104 |
|
|
[[#comment]]
|
105 |
|
|
|
106 |
|
|
* メモ
|