仕様書の概要
概要
“CSS Namespaces Module”はCSSにおける名前空間の使用について定義している仕様書です。
“@namespace”ルールによる名前空間を表す接頭辞の定義の方法や、接頭辞の使用方法などについて定義されています。
用語など
この項は他の記事から用語の意味などを参照するためのものであり、仕様書の完全な翻訳版ではありません。
名前空間
“名前空間(Namespaces)”は文書の中に記述されたタグがどのマークアップ言語のものなのかを判別するための仕組みで、複数のマークアップ言語が混在する文書で名前が重複するタグを区別するために使用されます。
XML文書は複数のマークアップ言語を組み合わせて組み立てることができるので、“xmlns”属性によって名前空間を宣言して要素や属性がどのマークアップ言語で定義されているものなのかを区別します。
HTML文書では一般の要素は“xmlns”属性がなくてもHTML名前空間に属しているものとして扱われるので意識される場面はあまりありませんが、SVGやMathMLなどの要素を含むと複数の名前空間の要素が混在することになります。
HTMLの仕様にある要素はHTML名前空間に属していますが、属性は名前空間に属しません。
CSSでは“@namespace”ルールを使用して定義し、名前空間に関連付けた接頭辞をタイプ・セレクタや属性セレクタに付加することによってこれらのセレクタが選択する対象を特定の名前空間に属する要素や属性に限定することができます。
CSS適合名
属する名前空間が明示された要素名や属性名は“CSS適合名(CSS qualified name)”となります。CSS適合名は縦線(U+007C、“|”)を挟んだ定義済みの名前空間の接頭辞とローカル名からなります。接頭辞はローカル名が属する名前空間を表します。
“ローカル名”は要素名や属性名のことです。
接頭辞の省略は名前空間に属さないことを表します。また、アスタリスク(U+002A、“*”)は名前空間がない場合も含めてすべての名前空間を表します。
特定の名前空間に属する“〚要素名〛”
〚名前空間〛|〚要素名〛 { ... }
どの名前空間にも属さない“〚要素名〛”
|〚要素名〛 { ... }
名前空間にかかわらず“〚要素名〛”という名前の要素
*|〚要素名〛 { ... }
既定の名前空間に属する“〚要素名〛”
〚要素名〛 { ... }
特定の名前空間に属する“〚属性名〛”
[〚名前空間〛|〚属性名〛] { ... }
スタイルシートで“@namespace”ルールによる名前空間の定義がされていない場合には接頭辞のないタイプ・セレクタは名前空間にかかわらず要素を選択します。つまり“*|〚要素名〛”と同じです。
CSS適合名はCSSのセレクタやプロパティの値として使用されます。正しく定義されない接頭辞の扱いについてはそれぞれのプロパティの仕様に依ります。