[1] [CITE[CSS Module: Namespaces]] ([[名無しさん]]) [2] [CITE@en[CSS3 Module: Namespace Declarations]] ([CODE[2007-09-27 06:34:33 +09:00]] 版) ([[名無しさん]]) [3] [[Firefox]] 2 では、 [CODE(DOMc)@en[[[UNKNOWN_RULE]]]] として [[CSSOM]]]] に現れます ([CODE(DOMc)@en[[[UNKNOWN_RULE]]]] の項を参照)。 ([[名無しさん]]) [4] [[Opera]] 9 では [[CSSOM]] や [CODE(DOMa)@en[[[cssText]]]] に現れません。 ([[名無しさん]]) [5] [[CSSOM]] [[ED]] では [CODE(DOMc)@en[[[NAMESPACE_RULE]]]] という新しい[[定数]]が定義されています。 ([[名無しさん]]) [6] [[Firefox]] 2 も [[Opera]] 9 も、勝手に[[名前空間URI]]を[[絶対URI参照]]に[[解決]]したりなんてことは''しない''ようです。 [[Opera]] 9 検証用 ([[Firefox]] 2 では [CODE(HTMLe)@en[[[base]]]] が機能しない): - [[絶対URI]] - [[相対参照]] ;; 前者は背景画が描画されるが、後者はされないことでわかる。 ([[名無しさん]]) [7] [CODE(CSS example)@en[@[[namespace]] '';'']] [[Firefox]] 2 では赤色、 [[Opera]] 9 では緑色になります。 [[Firefox]] は[[名前空間URI]]が[[空文字列]]だと指定しなかったのと同義とみなし、 [[Opera]] は[[空文字列]]の[[名前空間URI]]が指定されているとみなすようです。 ([[名無しさん]]) [8] [CODE(CSS example)@en[@namespace x '';'']] [[Opera]] 9 は[[名前空間接頭辞]]が宣言されていないとみなします。 [[Firefox]] 2 は[[名前空間接頭辞]]が[[null名前空間]]と関連付けられているとみなすようです。 [CODE(DOMa)@en[[[selectorText]]]] では[[名前空間接頭辞]]が[[空文字列]]に[[正規化]] ([CODE(CSS example)@en[|p]]) されています。 ([[名無しさん]]) [9] >>8 [[Opera]] は[[名前空間URI]]が[[空文字列]]だと [CODE(CSS)@en[@[[namespace]]]] [[規則]]自体を[[無視]]しているようです。 は [[Firefox]] 2 だと[[null名前空間]]、 [[Opera]] 9 だと [CODE(URI example)[x]] だとみなします。 [10] [[空白]]の扱いのテスト用: - - - - - - - - - - [11] [[Firefox]] 2 は、重複により[[無視]]される [CODE(CSS)@en[@[[namespace]]]] [[規則]]も [[CSSOM]] に出現させます。 [12] >>11 のテスト用: - [[既定名前空間]] - [[名前空間接頭辞]] [13] [[規則集合]]の後の [CODE(CSS)@en[@[[namespace]]]] は[[無視]]しなければなりません。 [14] >>13 のテスト用: - - [15] >>13-14 [[Firefox]] 2 は正しいですが、 [[Opera]] 9 は[[無視]]しないみたいです。 [16] [[大文字]]・[[小文字]]の区別のテスト用: - [[ASCII]] [[大文字]]・[[小文字]]を区別しない - [[Unicode]] [[大文字]]・[[小文字]]を区別しない (その1) - [[Unicode]] [[大文字]]・[[小文字]]を区別しない (その2) - [CODE(charname)@en[[[LATIN CAPITAL LETTER I WITH DOT ABOVE]]]] - [CODE(charname)@en[[[LATIN SMALL LETTER DOTLESS I]]]] [17] >>16 [[Firefox]] 2、[[Opera]] 9 とも、 [[大文字]]・[[小文字]]の扱いは正しいです。 [[Firefox]] 2 は [CODE(CSS)[@[[namespace]]]] の [CODE(DOMa)@en[[[cssText]]]] で[[名前空間接頭辞]]の部分を[[小文字]]に[[正規化]]し、 それを[[参照]]している [CODE(DOMa)@en[[[selectorText]]]] でも[[小文字]]に[[正規化]]するようです。 一方 [[Opera]] 9 は、より後に出てきた [CODE(CSS)@en[@[[namespace]]]] で使われている[[大文字]]・[[小文字]]の使い方を [CODE(DOMa)@en[[[selectorText]]]] で採用するようです。 ;; >>14 のように[[規則集合]]の後から [CODE(CSS)@en[@[[namespace]]]] がある場合、途中で[[大文字]]・[[小文字]]が変化します: [18] >>16-17 [[Firefox]] 2, [[Opera]] 9 とも、 [[Unicode]] の[[大文字]]・[[小文字]]不区別のようです。 ([[名無しさん]]) [19] [[大文字]]・[[小文字]]以外の違いがある、同じ[[名前空間URI]] の[[名前空間接頭辞]] (や[[既定名前空間]]) が複数定義されている場合、 [CODE(DOMa)@en[[[selectorText]]]] で使われるのは、 - [[Opera]] 9 では元々の[[名前空間接頭辞]]。ただし[[既定名前空間]]だったら[[空文字列]]の[[名前空間接頭辞]] ([CODE(CSS)[[[|]]]]) に (これは明らかにバグ)。 - [[Firefox]] 2 では最初の [CODE(CSS)@en[@[[namespace]]]] で定義された[[名前空間接頭辞]] (または[[既定名前空間]]の場合[[名前空間接頭辞]]なし ([[属性名]]でもそうなってしまうのは明らかにバグ))。 ([[名無しさん]]) [20] [[Firefox]] 2 の [CODE(DOMm)@en[[[insertRule]]]]、 [CODE(DOMm)@en[[[deleteRule]]]]、 [CODE(DOMa)@en[[[selectorText]]]]、 [[名前空間接頭辞]]の解釈についての推測 ;; 実験用: - 次の2つの状態を保持している: -- [[名前空間接頭辞]] (この説明中では、[CODE(CSS)[[VAR[p]]|]] または[[空文字列]] = [[既定名前空間]]) から[[名前空間URI]] への[[写像]] -- [[名前空間URI]] から[[名前空間接頭辞]] (同上) の[[並び]]への[[写像]] - [[CSS]] ([[スタイル・シート]]中および [CODE(DOMm)@en[[[insertRule]]]] で指定されたもの) における [CODE(CSS)@en[@[[namespace]]]] の出現順 ([CODE(DOMm)@en[[[insertRule]]]] の挿入点は関係なく、 実行順) にそれぞれ、 -- 指定された[[名前空間接頭辞]]から[[名前空間URI]] への[[写像]]を登録する (指定された[[名前空間接頭辞]]からの[[写像]]が既に登録されていれば、 上書きする) -- 指定された[[名前空間URI]] から[[名前空間接頭辞]]の[[並び]]への[[写像]] (なければ[[空]]の[[並び]]への[[写像]]を新たに作る。) の[[並び]]の末尾に[[名前空間接頭辞]]を追加する -- 指定された[[名前空間URI]] ''以外''から[[名前空間接頭辞]]への[[並び]]の[[写像]]において、 指定された[[名前空間接頭辞]]が含まれていれば、それらをすべて削除する - [CODE(DOMm)@en[[[deleteRule]]]] は上述の2つの[[写像]]に影響しない - [[CSS]] の[[構文解析]]中に[[名前空間接頭辞]]を[[解決]]する必要がある場合、 [[名前空間接頭辞]]から[[名前空間URI]] への[[写像]]を使う -- なので、 [CODE(DOMm)@en[[[deleteRule]]]] で削除された[[名前空間接頭辞]]も[[解決]]できてしまうことがある - [CODE(DOMa)@en[[[selectorText]]]] を得る場合、 [[名前空間URI]] から[[名前空間接頭辞]]の[[並び]]への[[写像]]の当該[[名前空間URI]] に対応する[[並び]]の先頭の[[名前空間接頭辞]]を用いる (ただし、[[並び]]が[[空]]または存在しない場合には、 [[空文字列]]とする) -- なので、 [CODE(DOMm)@en[[[deleteRule]]]] された[[名前空間接頭辞]]が使われることがあるし、 適当な[[名前空間接頭辞]]がなければ勝手に[[既定名前空間]]にされてしまう ([[名無しさん]]) [21] [CITE@en[CSS Namespaces Module]] ([CODE[2008-02-16 03:06:01 +09:00]] 版) ([[名無しさん]]) [22] [[Firefox]] 2 も [[Opera]] 9 も、[[名前空間URI]] の前後の[[空白]]を除去しません (正しい動作)。 ;; ([[名無しさん]]) [23] [CITE@en[CSS Namespaces Module]] ([TIME[2008-05-23 20:34:01 +09:00]] 版) ([[名無しさん]])