1 |
|
2 |
|
3 |
* XML名前空間 (仕様) |
4 |
|
5 |
- [3] ''Namespaces in XML'' <http://www.w3.org/TR/REC-xml-names> |
6 |
|
7 |
[8] [[QName]] [SAMP(XML)[foo:xmlbar]] は予約されていませんが、 |
8 |
QName [SAMP(XML)[xmlbar]] は ([[XML]] で) 予約されている関係上、 |
9 |
最初の例の如き名前 (つまり、 [[LocalName]] が [CODE(ABNF)["XML"]] |
10 |
で始まる名前。) は使わないことを errata <http://www.w3.org/XML/xml-names-19990114-errata#NE06> |
11 |
は勧めています。 |
12 |
|
13 |
[9] Errata は仕様書にはない[[名前空間整形式]], |
14 |
[[名前空間妥当]]という2つの重要な用語を定義しています。 |
15 |
|
16 |
[10] このほかにも errata には重要な修正があります。 |
17 |
修正に気づいてない人も少なくないでしょうから、とっとと |
18 |
[[SE]] を出して欲しいところですが、担当 [[WG]] |
19 |
は第1.1版出して誤魔化す気かな? |
20 |
|
21 |
[19] 名前空間 1.1 は、 XML 1.1 |
22 |
と併用する物だと仕様書に書いてありますが、無印名前空間は、 |
23 |
単に XML としか書かれていません。だとすると XML 1.1 + |
24 |
無印名前空間も可能かも、 |
25 |
だとするといろいろ不整合が出てきて都合が悪いよなあ、 |
26 |
と思ってよく調べてみると、ちゃんと無印 Errata で手は打ってあって、 |
27 |
XML 1.0 に適用すると修正されていました。 |
28 |
|
29 |
[[#comment]] |
30 |
|
31 |
|
32 |
* 構文 |
33 |
|
34 |
[5] 厳密には仕様書 (>>3) の記述を参照して下さい。 |
35 |
|
36 |
- NSAttName = PrefixedAttName / DefaultAttName |
37 |
- PrefixedAttName = 'xmlns:' prefix ;; NSC: Leading "XML" |
38 |
- prefix = (NCName -("XML" NCName)) / "XML" NCName |
39 |
- DefaultAttName = 'xmlns' |
40 |
- NCName = (xml.Letter | '_') (NCNameChar)* ;; xml.Name -":" |
41 |
- NCNameChar = xml.Letter / xml.Digit / "." / "-" / "_" / xml.CombiningChar / xml.Extender |
42 |
|
43 |
- [6] 「Leading “XML”」 [[NSC]]: 接頭辞で最初の3文字が [CODE(ABNF)["XML"]] である (大文字・小文字の組合せは任意。) ものは、 XML 及び周辺仕様が使用するのに予約しています。 |
44 |
-- <http://www.w3.org/TR/REC-xml-names#xmlReserved> 参照 |
45 |
[[#comment]] |
46 |
|
47 |
|
48 |
* 属性の唯一性 |
49 |
|
50 |
[7] [[SGML]]/[[XML]] では、同じ名前の属性を一つの要素に複数指定することはできませんでした。 |
51 |
|
52 |
[PRE[ |
53 |
×<element attribute="value" attribute="value"/> |
54 |
]PRE] |
55 |
|
56 |
XML 名前空間を利用する場合は更に制限が加えられ、 |
57 |
[[修飾名]] ([[QName]]) が異なっていても[[名前空間名]]が同じであるなら、同じ local name |
58 |
の属性を一つの要素に指定することはできません。 |
59 |
|
60 |
[PRE[ |
61 |
×<element xmlns:ns1="http://ns.example/" |
62 |
xmlns:ns2="http://ns.example/" |
63 |
ns1:foo="bar" ns2:foo="BAR"/> |
64 |
]PRE] |
65 |
|
66 |
ただし、名前空間無しの属性とありの属性や名前空間名の異なる属性で |
67 |
local name が同じであるものは、もちろん問題ありません。 |
68 |
|
69 |
[PRE[ |
70 |
○<element xmlns="http://ns.example/1" |
71 |
xmlns:ns1="http://ns.example/1" |
72 |
xmlns:ns2="http://ns.example/2" |
73 |
foo="bar" ns1:foo="bar" ns2:foo="BAR"/> |
74 |
]PRE] |
75 |
|
76 |
[14] |
77 |
[PRE[ |
78 |
<!ATTLIST foo |
79 |
ns:foo CDATA 'default' |
80 |
xmlns:ns CDATA #FIXED 'http://uri.example'> |
81 |
[INS[...]] |
82 |
<foo ns2:foo="nondefault" |
83 |
xmlns:ns2="http://uri.example"/> |
84 |
]PRE] |
85 |
|
86 |
は[[名前空間妥当]]だろうか? とふと思ったけど、[[妥当性を検証する処理系]]はまず省略属性を補って、その上で名前空間を知っている処理系は名前空間を処理するのが建前だろうから、やっぱり名前空間非妥当だろうなあ。 |
87 |
|
88 |
[23] |
89 |
>>14 でも <IW:XMLNames:"#uniqAttrs"> には [Q@en[no tag may contain]] |
90 |
としか書いてなくて、[[既定属性]]の話は出てこないぞ。。。 |
91 |
([[名無しさん]]) |
92 |
|
93 |
[24] |
94 |
少なくともその宣言が内部サブセットにあって、別途 xmlns:ns2 と ns2:foo が宣言されていれば名前空間妥当だと思うけど。 |
95 |
([[名無しさん]] [WEAK[2006-02-18 05:29:08 +00:00]]) |
96 |
|
97 |
[[#comment]] |
98 |
|
99 |
|
100 |
* XML 名前空間 (1.0) の修正 |
101 |
|
102 |
→[[XML名前空間 1.0]] |
103 |
|
104 |
|
105 |
* XML 名前空間 1.1 |
106 |
|
107 |
→ [[XML名前空間 1.1]] |
108 |
|
109 |
|
110 |
* 参考文献 |
111 |
|
112 |
- [13] ''XML名前空間の簡単な説明'' <http://www.kanzaki.com/docs/sw/names.html> |
113 |
- [15] ''XML-NS Table of Contents'' <http://www.y-adagio.com/public/standards/tr_xml_ns/toc.htm>: |
114 |
[[JIS TR]] X 0023:1999。 |
115 |
- [16] ''XMLネームスペース'' <http://www.doraneko.org/xml/namespace/namespace.html>: >>15 の訳の方がまだまし。 |
116 |
[[#comment]] |
117 |
|
118 |
|
119 |
** メモ |
120 |
|
121 |
[20] |
122 |
[[要素型名]]が [CODE(XMLe)@en[[[xmlns]]]] とか |
123 |
[CODE(XMLe)@en[[[xmlns]]:[VAR[*]]]] になることは禁止されていない?? |
124 |
|
125 |
[25] |
126 |
>>20 わかりにくいけど禁止はされているらしい。 |
127 |
|
128 |
[CITE[Re: Namespaces in XML 1.x test suite contribution from Richard Tobin on 2005-12-19 (xml-names-editor@w3.org from December 2005)]] |
129 |
<http://lists.w3.org/Archives/Public/xml-names-editor/2005Dec/0002.html> |
130 |
|
131 |
([[名無しさん]]) |
132 |
|
133 |
|
134 |
[26] |
135 |
[CITE@en[Re: porno on w3.org]] ([[Ian B. Jacobs]] 著, [TIME[2008-03-13 01:25:03 +09:00]] 版) <http://lists.w3.org/Archives/Public/w3c-translators/2008JanMar/0163.html> |
136 |
([[名無しさん]]) |
137 |
|
138 |
|
139 |
[[#comment]] |
140 |
|
141 |
|
142 |
* XML名前空間 (一般名詞) |
143 |
|
144 |
[4] |
145 |
|
146 |
> [定義:] [DFN[XML[RUBY[名前空間] [なまえくうかん] @en[namespace]]]]は、 |
147 |
[[XML文書]]中で[[要素型名]]や[[属性名]]として使われる[[名前]]の[[集成]]であり、 |
148 |
[[URI参照]][SRC@en[[[RFC 2396]]]]によって[[識別]]される。 |
149 |
[SRC[XML名前空間 1.0]] |
150 |
|
151 |
[21] |
152 |
|
153 |
> [定義: [DFN[XML[RUBY[名前空間] [なまえくうかん] @en[namespace]]]]は[[IRI参照]]によって[[識別]]される。 |
154 |
[[要素名]]と[[属性名]]はこの仕様書で説明する方法によって[[XML名前空間]]中に置くことができる。] |
155 |
[SRC[XML名前空間 1.1]] |
156 |
|
157 |
[22] |
158 |
仕様書: |
159 |
- [[XML名前空間]] |
160 |
-- <IW:XMLNames:"#dt-namespace"> |
161 |
|
162 |
[[#comment]] |
163 |
|
164 |
|
165 |
* メモ |