* xmlns() scheme (XPointer)
[1] [[XPointer]] の [[scheme]] である
[CODE(XPointerScheme)[xmlns]] の[[指示子部分]]を使うと、
[[名前空間接頭辞]]に[[名前空間名]]を束縛できます。
[3] 構文 :
- [CODE(ABNF)[[DFN[xmlns 指示子部分]] := 'xmlns(' xmlns scheme データ ")" ]]
- [CODE(ABNF)[[DFN[xmlns scheme データ]] := 名前空間接頭辞 *xml.[[S]] "=" *xml.S escape された名前空間名]]
- [CODE(ABNF)[[DFN[名前空間接頭辞]] := [[NCName]]]]
- [CODE(ABNF)[[DFN[escape された名前空間名]] := *[[EscapedData]]]]
[4] 例:
- [SAMP(XPointer)[[CODE(XPointerScheme)[xmlns]](foo = http://foo.example/)]]
[5] [[XPointer枠組み]]の規定により、
[[名前空間束縛文脈]]の変更はその指示子部分より後ろの指示子部分に影響を与えます。
[CODE(XPointerScheme)[xmlns]] scheme の指示子部分は、
接頭辞と名前の束縛を新たに行い、以降の指示子部分で使えるようにします。
既に接頭辞が束縛されていれば、古い束縛は上書きされて新しい束縛になります。
名前空間名は空文字列になることもあり得ますが、
どう解釈するべきかは仕様書に書かれていません。
また、束縛を削除する方法も [CODE(XPointerScheme)[xmlns]]
scheme にはないようです。
[6] XPointer 枠組みによれば [CODE(XML)[xml]]
と [CODE(XML)[xmlns]] の接頭辞・名前は規定の通りにしかできませんで、
それ以外に [CODE(XPointerScheme)[xmlns]] scheme
で無理に束縛しようとしても、単に無視されます。
また、 >>3 の構文に一致しないときも無視されます。
[WEAK[(誤りにはなりません。)]]
- [2] ''XPointer xmlns() Scheme''
- [7] 名前空間名に U+0000〜U+10FFFF までなんでも使えるというのがまた素晴らしいよねえ(w
- [8] >>7 [[Unicoder]] が何も言わなかったのかな? 不思議なことだ。
[9]
>>7-8 名前空間名は XPointer framework の [CODE(ABNF)[[[EscapedData]]]] に丸投げしているので主としてそちらの問題なのですけど (無批判に流用したのも問題ですけど)、 [CODE(char)[U+0000]] が使えることに [[C]] 氏んじゃが何も言わなかったのかということがもっと不思議じゃないでしょうか。 Unicoder より C 氏んじゃの方が多そうなものですが。
([[名無しさん]])
[[#comment]]
* メモ
[10]
[CITE[The problems with namespaces in text/html (Was: MathML-in-HTML5)]]
Namespaces in HTML を実装すると既存の Web 頁との互換性が失われる。実装しようとした vendor もあったが、互換性の問題で断念した。
([[名無しさん]] [WEAK[2006-10-05 23:09:27 +00:00]])
[11]
[CITE@en[xmlns attributes...]] ([[Shane McCarron]] 著, [CODE[2007-04-28 12:45:45 +09:00]] 版)
([[名無しさん]])
[12]
[CITE[Bug 800 - xmlns attribute for XML namespace not allowed]] ([CODE[2007-05-07 20:06:59 +09:00]] 版)
([[名無しさん]])
[13]
>>11-12
絶対受け入れられるはずがないだろと思ったらあっさりおkが出るという斜め上。
([[名無しさん]] [WEAK[2007-05-07 11:19:05 +00:00]])