CSS3

@規則

@namespace

  編集:2022.07.14 by T.A.

mdn

名前空間。

@namespace <namespace-prefix>? [<string> | <url>] ;
<namespace-prefix>
<ident>

以下のCSSが組み込んであります:

<testn:test>テスト</testn:test><BR>

<string>
@namespace lq "http://example.com/q-markup";
<url>
@namespace lq url(http://example.com/q-markup);

@namespace at‐規則は、名前空間 接頭辞を宣言し、それを その宣言に与えられた名前空間名(名前空間を表現する文字列)に結び付ける。 この名前空間 接頭辞は、名前空間修飾付きの名前 ― 以下に定義する CSS 有修飾名など ― に利用できるようになる。

@namespace "http://www.w3.org/1999/xhtml";
@namespace svg "http://www.w3.org/2000/svg";
【接頭辞が省略された】 1 個目の規則は、既定の名前空間として http://www.w3.org/1999/xhtml を宣言する。この名前空間は、明示的な名前空間成分がない名前に適用されることになる。

2 個目の規則は、名前空間 接頭辞として svg を宣言し、名前空間 接頭辞に svg を利用している所には、名前空間 http://www.w3.org/2000/svg をあてがう。

CSS Namespaces においては、接頭辞は ― [XML-NAMES] と同様に ― 単なる構文構成子に過ぎず、有意になるのは 展開名(局所名と名前空間名の組)である†。したがって、CSS スタイルシートにおいて[[利用される実際の接頭辞]/[所与の名前に 既定の名前空間があてがわれるかどうか]]は、マークアップにおいて[[利用される名前空間 接頭辞]/[所与の名前に 既定の名前空間があてがわれるかどうか]]とは、独立になる。

【† すなわち、接頭辞は、それを宣言する名前空間 宣言に与えられた名前空間を参照するための,別名として機能し、展開名を介して,スタイルシートを成す構成子(選択子など)と文書マークアップを成す構成子(要素名など)が関連付けられる。 文書マークアップを成す構成子の展開名は、その文書言語により(あるいは [XML-NAMES] の利用を通して)定義される。】

例えば次の XML 文書:

<qml:elem xmlns:qml="http://example.com/q-markup"></qml:elem>
が与えられていて、CSS ファイルの冒頭に次の @namespace 宣言があるとする:
@namespace Q "http://example.com/q-markup";
@namespace lq "http://example.com/q-markup";

その CSS ファイルの中の選択子 Q|elem、lq|elem のいずれも、要素 qml:elem に合致することになる。

しかしながら、選択子 qml|elem は無効になる ― CSS における名前空間は、文書言語により宣言されたものではなく、CSS の中で宣言された接頭辞のみを認識するので。

@namespace 規則は、スタイルシート内において、どの[@charset@import]規則よりも後続し、どの[無視されない他の at‐規則やスタイル規則 ]よりも先行していなければならない†。これは、CSS 構文CSS 2.1 の文法においては、生成規則 stylesheet 内の [ import [S|CDO|CDC]* ]* の直後に [ namespace [S|CDO|CDC]* ]* を追加することを意味する。

構文上は無効な @namespace 規則(不正形であったり、誤った場所に置かれているなど)は、無視するものとする†。無効な @namespace 規則を包含している CSS スタイルシート は、妥当なスタイルシート†† ではない。

【† 妥当な @namespace に @import が後続している場合、前者は有効のままにされた上で、後者のみが無視されることになるであろう ― 構文解析に際しては、先頭から走査され、妥当でない構文に遭遇した所でそれを破棄するのが自然なふるまいと考えられるので( @import の方が誤った場所に置かれたものと解釈される)。同じ論法により、妥当でない @namespace に後続する @import は、他の部分がすべて妥当であれば)有効になるであろう。】
【†† スタイルシートが妥当でないからと言って、全体が無効にされるわけではない ― 通例的には、妥当でない部分が無視され、残りの部分は機能することになる。】

文法記号 <url> から構文解析される URI 文字列は、リテラルとして扱うものとする ― <string> 同様に、URI に特有な正規化は適用されない。

空文字列や無効な URI を表現している文字列も含め、@namespace 宣言における文字列は、どのようなものでも、名前空間名として妥当である。


テスト
HTML:

ここに表示
HTML:

ここに表示
スクリプト:


スクリプト:



表示内容:
表示内容: