#?SuikaWiki/0.9 [4] [DFN[XML 名前空間]] ([DFN[XML namespace]]): [[URI参照]]により識別される、 XML 文書において要素型及び属性の名前として使用される名前の[RUBYB[集成] [collection]]。 () - [3] ''Namespaces in XML'' - [8] [[QName]] [SAMP(XML)[foo:xmlbar]] は予約されていませんが、 QName [SAMP(XML)[xmlbar]] は ([[XML]] で) 予約されている関係上、最初の例の如き名前 (つまり、 [[LocalName]] が [CODE(ABNF)["XML"]] で始まる名前。) は使わないことを errata は勧めています。 - [9] Errata は仕様書にはない[[名前空間整形式]], [[名前空間妥当]]という2つの重要な用語を定義しています。 - [10] このほかにも errata には重要な修正があります。修正に気づいてない人も少なくないでしょうから、とっとと [[SE]] を出して欲しいところですが、担当 [[WG]] は第1.1版出して誤魔化す気かな? - [11] ''Namespaces in XML 1.1'' - [12] >>11 は [[XML1.1]] と併用することを想定したものです。 - [13] ''XML名前空間の簡単な説明'' - [15] ''XML-NS Table of Contents'' : [[JIS-TR]] X 0023:1999。 - [16] ''XMLネームスペース'' : >>15 の訳の方がまだまし。 [[#comment]] *構文 [5] 厳密には仕様書 (>>3) の記述を参照して下さい。 -NSAttName = PrefixedAttName / DefaultAttName -PrefixedAttName = 'xmlns:' prefix ;; NSC: Leading "XML" -prefix = (NCName -("XML" NCName)) / "XML" NCName -DefaultAttName = 'xmlns' -NCName = (xml.Letter | '_') (NCNameChar)* ;; xml.Name -":" -NCNameChar = xml.Letter / xml.Digit / "." / "-" / "_" / xml.CombiningChar / xml.Extender - [6] 「Leading “XML”」 [[NSC]]: 接頭辞で最初の3文字が [CODE(ABNF)["XML"]] である (大文字・小文字の組合せは任意。) ものは、 XML 及び周辺仕様が使用するのに予約しています。 -- 参照 [[#comment]] *属性の唯一性 [7] [[SGML]]/[[XML]] では、同じ名前の属性を一つの要素に複数指定することはできませんでした。 × XML 名前空間を利用する場合は更に制限が加えられ、 [[修飾名]] ([[QName]]) が異なっていても[[名前空間名]]が同じであるなら、同じ local name の属性を一つの要素に指定することはできません。 × ただし、名前空間無しの属性とありの属性や名前空間名の異なる属性で local name が同じであるものは、もちろん問題ありません。 ○ [14] [PRE[ [INS[...]] ]PRE] は[[名前空間妥当]]だろうか? とふと思ったけど、[[妥当性を検証する処理系]]はまず省略属性を補って、その上で名前空間を知っている処理系は名前空間を処理するのが建前だろうから、やっぱり名前空間非妥当だろうなあ。 [[#comment]] * メモ [18] XML 名前空間 1.0 Errata の概要: - NE01 (編集上) -- [Q[an an]] は [Q[an]] の誤り。 - NE02 (編集上) -- [Q[>]] は [Q[/>]] の誤り。 - NE03 (編集上) -- 例示中で[[属性値表記]]の引用符が抜けている。 - NE04 -- 文の追加: [Q[名前空間宣言での相対 URI 参照の使用は非推奨である。将来の W3C 仕様書はその解釈を定めない。]] -- 参考: - NE05 -- 名前空間制約「接頭辞が宣言されていること」を削除。 -- 名前空間制約「先導 『XML』」を削除。 -- 名前空間制約「予約接頭辞・名前空間名」 を追加。概要: --- 接頭辞 [CODE(XML)[[[xml]]]] は [CODE(URI)[http://www.w3.org/XML/1998/namespace]] に、接頭辞 [CODE(XML)[[[xmlns]]]] は [CODE(URI)[http://www.w3.org/2000/xmlns/]] に束縛されており、前者は宣言しても良いがその必要はなく (may, need not)、後者は宣言してはならない (must not)。両名前空間名を他の接頭辞に束縛してはいけない (may not)。 --- [CODE(XML)[xml]] で始まる接頭辞 (大文字・小文字を問わない。) は予約する。 ---- 利用者は勝手に使用するべきではない (should not)。 --- 処理器は致命的誤りとしてはならない (must not)。 - NE06 -- NE05 の新しい制約に追加: [CODE(XML)[xml]] (大文字・小文字問わず) で始まる[[局所名]]は予約ではないが、すすめられない (inadvisable)。接頭辞なしだと予約名になってしまう。 - NE07 -- 名前空間宣言が、その有効範囲内の属性にも適用されることを明記。 - NE08 -- 適合性の章を修正。概要: --- [INS[名前空間仕様書は XML 1.0 に適用する。文書は XML 1.0 整形式でなければならない。]] --- 名前空間仕様書に適合する XML 文書は、すべての[[要素型名]]と[[属性名]]が [CODE(ABNF)[[[QName]]]] に一致し、名前空間制約を満足しなければならない。 --- 名前空間仕様書に適合する XML 文書では、 XML 仕様書に適合するために必要なその他の [CODE(ABNF)[Name]] の個所が [CODE(ABNF)[NCName]] に一致する。 --- [INS[名前空間仕様書に適合する文書は[DFN[[[名前空間整形式]]]]である。]] --- [INS[すなわち、名前空間整形式文書は、]]全ての要素型名および属性名は零個又は一個のコロンを含み、[[実体名]], [[処理指令]][[対象名]], [[記法名]]はコロンを含まない。 --- [INS[名前空間整形式文書は、次の時、[DFN[[[名前空間妥当]]]]である。]] ---- [INS[XML 1.0 [[妥当]]である。]] ---- [INS[XML 1.0 で妥当なために必要な、要素型名と属性名以外の全ての [CODE(ABNF)[Name]] が [CODE(ABNF)[NCName]] である。]] --- [DEL[厳密には [CODE(XML)[[[ID]]]], [CODE(XML)[[[IDREF]]]], [CODE(XML)[[[IDREFS]]]], [CODE(XML)[[[ENTITY]]]], [CODE(XML)[[[ENTITIES]]]], [CODE(XML)[[[NOTATION]]]] 属性値は名前だからコロンなしであるべきだ。しかし[[マーク宣言]]を読まないといけないから、名前空間仕様書適合のために属性値が検査されている保証はない。]] --- [INS[すなわち、名前空間妥当文書は[CODE(XML)[ID]], [CODE(XML)[IDREF]], [CODE(XML)[IDREFS]], [CODE(XML)[ENTITY]], [CODE(XML)[ENTITIES]], [CODE(XML)[NOTATION]] 属性値がコロンを含まない。]] - NE09 -- URI 参照が空文字列ではいけないことが明確化された。 -- NE04 の修正を明確化して、同じ文書中の参照も非推奨とされた。 - NE10 -- QName はコロンを[Q[1個含む]]としていたところを[Q[1個含むかもしれない]]に修正された。 - NE11 -- [[外部解析実体]]を読まない処理器のために名前空間宣言は[[タグ]]または[[内部部分集合]]になければならない (must) の前提が、[Q[そのような応用での正しい操作のため]]から[Q[そのような応用で正しい操作が必要なら]]に変更された。 - NE12 -- XML の属性値[[正規形]]が使われることが明確化された。 [17] XML 名前空間 1.0 と 1.1 の差異の概略: - 1.0 Errata の統合 - 編集上の種々の修正 - [[RFC2119]] 見出し語の採用 - 「タグ」, 「要素」, 「要素型」の用語の使い方の整理 - [[URI参照]]から [[IRI参照]]に変更 - 新用語[DFN[展開名]]: 名前空間名と局所名の組。 - 空文字列の IRI 参照の禁止、相対 IRI 参照の非推奨を明記。 (前者は前からちょこっとは書いてあった。後者は Errata に書いてあった。 1.1 では一節をもうけてちゃんと書いてある。) - 例示に [CODE[example.[VAR[*]]]] を使うようになった。 (謎の [CODE(URI)[[[urn:loc.gov]]]] は相変わらず。) - IRI 参照の比較方法が一節を割いて説明されるようになった。 - 生成規則の定義が XML 1.1 に合わせて改められた。 - [SAMP(XML)[xmlns:foo=""]] が認められるようになった (これが最大の変更点)。 これは名前空間束縛の無効化を行う。 - 適用対象が XML 1.1 文書に変更された。 例示の XML 宣言も修正された。 - 処理器の適合性の章 (8) が追加された。概要: -- [[名前空間整形式]]性違反を報告しなければ'''ならない'''。 -- 妥当な IRI であることは検査する'''必要'''はない (not REQUIRED)。 -- XML 名前空間 1.1 仕様書に適合する妥当性検証 XML 処理器は[[名前空間妥当]]性も加えて報告するなら[DFN[名前空間妥当性検証]](処理器)である。 - IRI についての章 (9) が追加された。概要: -- IRI はまだ作業中。必要な範囲で定義する。 RFC が出たらこの章は置き換える。 -- IRI RFC が出て対応ソフトウェアが広く使われるまで名前空間名は URI の限定するのがいい (advise)。 -- 実装は認られる文字に関して、原案での違反を拒絶しないほうがいい (advise)。 -- IRI 原案 5 で認られる[DFN[追加文字]]は: --- [CODE(Char)[U+00A0]]〜[CODE(char)[U+D7FF]], [CODE(char)[U+F900]]〜[CODE(char)[U+FDCF]], [CODE(char)[U+FDF0]]〜[CODE(char)[U+FFEF]], [CODE(char)[U+10000]]〜[CODE(char)[U+1FFFD]], ..., [CODE(char)[U+D0000]]〜[CODE(char)[U+DFFFD]], [CODE(char)[U+E1000]]〜[CODE(char)[U+EFFFD]] --- IRI 原案 3 では ASCII の範囲の非 URI 文字も認めていた。 -- [DFN[IRI 参照]]は、次の手順で URI 参照に変換できる文字列である。 --= ホスト名部があれば、 [[RFC3490]] 4.1 の [CODE[[[ToASCII]]]] ([CODE[[[UseSTD3ASCIIRules]]]] := [CODE[TRUE]], [CODE[[[AllowUnassigned]]]] := [CODE[TRUE]]) 操作で変換。 --= 追加文字を次の手順で逃避 --== 追加文字を [[UTF-8]] に変換。 --== それを [[URI符号化]]。 --== 元の文字を URI 符号化列で置き換える。 --- IRI 原案 5 には[[正規化]]の手順も含まれるが、なにが IRI 参照であるかには関わらない。 - 附属書 A が削除された。 - 参考文献に修正多々。 - 附属書 D (変更点) が追加された。概要: -- この版は2002年12月6日付け 1.0 errata を取込んでいる。 -- 接頭辞宣言解除の機構を加えた。 -- URI から IRI にした。 -- 編集上他にも色々いじくった。 -- 附属書 A はあぼーんした、 1.0 は Errata で大きく修正されている上に 1.1 で更にかき回していて、そのためか差分版も提供されていなくて、 1.0 と 1.1 で何が変わったのか、ぱっと見では分からなくてまことに困ったものです。