[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]] の前後の[[空白]]を除去しません (正しい動作)。
;;
([[名無しさん]])