W3C

CSS名前空間モジュールLevel 3

W3C Recommendation 29 September 2011, edited in place 20 March 2014

This version:
http://www.w3.org/TR/2014/REC-css-namespaces-3-20140320/
Latest version:
http://www.w3.org/TR/css-namespaces-3/
Editor’s Draft:
http://dev.w3.org/csswg/css-namespaces/
Previous version:
http://www.w3.org/TR/2011/REC-css3-namespace-20110929/
Feedback:
www-style@w3.org with subject line “[css-namespaces] … message topic …”(archives)
Test Suite:
http://test.csswg.org/suites/css3-namespace/20090210/
Editors:
Elika J. Etemad (Invited Expert)
Former Editors:
Anne van Kesteren (Opera Software ASA)
Peter Linss (Netscape Communications)
Chris Lilley (W3C)

発行以降に報告されたエラーや問題に対するエラッタを確認されたい。また翻訳も参照されたい。【訳注:この文書は非公式翻訳です】


概要

このCSS名前空間モジュールは、CSSで名前空間を使用するための構文を定義する。この仕様は、デフォルト名前空間を宣言して、名前空間と名前空間接頭語を結びつけるための@namespace規則を導入する。そして、他の仕様が適切な名前空間名で接頭辞を用いることで採用できる構文を定義する。CSSは、画面、紙、スピーチなどで、(HTMLやXMLなどの)構造化言語のレンダリングを表すための言語である。

この文書の位置づけ

この節は、公開時点におけるこの文書のステータスについて説明する。他の文書がこの文書に取って代わるかもしれない。W3Cが現在公開しているリストとテクニカルレポートの最新版は、W3C technical reports index http://www.w3.org/TR/で見つけることができる。

この文書は、勧告としてCSSワーキンググループによって作成された。

この文書はW3Cメンバー、ソフトウェア開発者、および他のW3Cグループと興味をもつ関係者によってレビューされており、W3C勧告としてディレクターによって承認された。この文書は安定しており、参考資料として用いたり、他の文書から引用してもよい。仕様の勧告においてW3Cの果たす役割とは、仕様に関心を集め、幅広く仕様の普及を促進することである。これにより、ウェブの機能と相互運用性の向上が期待できる。

W3Cは、この仕様を実装するよう人々に奨励する。公開メーリングリストwww-style@w3.orgアーカイブ参加の手引きを参照)にコメントを送ってもよい。メールを送信する際には、“css-namespaces-3”をsubjectに含めてもらいたい。できればこのように: “[css-namespaces-3]…コメントの要約…

この文書は2004年2月6日のW3C特許ポリシーの下で活動するグループによって作成された。W3Cは、グループの成果物に関するあらゆる開示特許の公開リストを管理する。ここには、特許開示にあたっての指示も含まれている。

前のバージョンからの変更に関する詳細は、変更点の節を参照のこと。

Table of Contents

1 導入

この節は非規範的である。

このCSS名前空間モジュールは、CSSで名前空間を使用するための構文を定義する。この仕様は、デフォルト名前空間を宣言し、名前空間と名前空間接頭語を結びつけるための@namespace規則を定義する。この仕様はまた、名前空間修飾名を表す接頭辞を使用するための構文を定義する。この仕様は、そのような名前が妥当な場合またはその名前が何を意味するかを定義しない。その名前はコンテキストに依存し、CSS名前空間モジュールで定義された構文を参照する、セレクタ([SELECT])などのホスト言語によって定義される。

このモジュールをサポートしないCSSクライアントが、名前空間修飾名を利用するすべてのスタイル規則と同様に、(正確にCSSの前方互換の構文解析規則に従う場合)すべての@namespace規則を無視することに注意すること。これらのCSSクライアントが、スタイル規則をもしかしたら不正確に一致させるよりむしろ無視するように、CSSで名前空間接頭辞を区切る構文が故意に選択された。

2 適合性

文書または実装は、CSS名前空間単独で適合することはないが、この仕様を規範的に参照するCSSまたは別のホスト言語を実装する際にこの仕様で適合要求を満たす場合、CSS名前空間に適合するよう要求できる。

CSS名前空間への適合性は、2つのクラスに対して定義される:

スタイルシート
CSSスタイルシート(すなわち、規範的にCSS名前空間を参照する全部一式または別のホスト言語)。
インタープリター
スタイルシートのセマンティックを解釈する人またはもの。(CSSユーザーエージェントはこのカテゴリに分類される。)

適合要件は説明的な主張とRFC2119の用語の組み合わせにより表される。この文書の規範的である部分におけるキーワード"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"は RFC 2119に記述されているとおりに解釈されるものとする。しかし、読みやすさのために、これらの英単語はこの仕様において小文字で表される。非規範的、例、および注として明示的にマークされた節を除いて、この仕様のテキストのすべては規範的である。[RFC2119]

この仕様における例は、単語"たとえば"で始められる、または次のようにclass="example"を伴い規範的なテキストとは別に設定される:

これは有益な例の一例である。

有益な注は、単語"注"で始まり、次のようにclass="note"を伴って規範的テキストとは別に設定される:

注、これは有益な注である。

2.1 用語

この仕様によって導入される用語のほかにも、CSS名前空間モジュールは、XML 1.0で名前空間を定義される用語を使用する。[XML-NAMES] しかし、ここで定義される構文は、XML要素および属性名を表すのに限らず、ホスト言語によって定義されるように他の種類の名前空間を表してもよい。

CSS名前空間で空文字列からなる名前空間名は、空の名前空間または名前空間がないことを表現するために取られる。

たとえば、名前空間宣言を与える:
  @namespace empty "";
  @namespace "";

型セレクタelem|elemおよびempty|elemは等価である。

3 名前空間を宣言する:@namespace規則

@namespace @規則は、名前空間接頭辞を宣言し、与えられた名前空間名(文字列)と接頭辞を関連付ける。この名前空間接頭辞は、下記で定義されるCSS修飾名のような名前空間修飾名において使用できる。

  @namespace "http://www.w3.org/1999/xhtml";
  @namespace svg "http://www.w3.org/2000/svg";

最初の規則は、デフォルト名前空間http://www.w3.org/1999/xhtmlを宣言する。これは、明示的に名前空間コンポーネントを持たないすべての名前に適用されるべきである。

2番目の規則は、名前空間接頭辞svgを宣言する。この接頭辞は、svg名前接頭辞が使用される名前空間http://www.w3.org/2000/svgを適用するために使用される。

CSS名前空間において、XML 1.0における名前空間内のように、接頭辞は単なる構文の構造体である。これは、拡張名(ローカル名と名前空間名の組)を意味する。 このように、接頭辞がデフォルトであろうとなかろうと、CSSスタイルシートで使用される実際の接頭辞は、マークアップおよび接頭辞間がデフォルトかどうかに関わらず使用される名前空間接頭語から独立している。

たとえば、次のXML文章を与える:
  <qml:elem xmlns:qml="http://example.com/q-markup"></qml:elem>

そして次の@namespaceがCSSファイルの先頭で宣言する:

  @namespace Q "http://example.com/q-markup";
  @namespace lq "http://example.com/q-markup";

そのCSSファイルにおけるセレクタQ|elemおよびlq|elemはどちらも、要素<qml:elem>とマッチする。

(CSS名前空間はCSSで宣言される接頭辞のみを認識し、文書言語によって宣言されないため、セレクタqml|elemは妥当でない。)

3.1 構文

@namespace規則のための構文は次の通りである(CSS2.1の付録文法による記法を使用 [CSS21]):

  namespace
    : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S*
    ;
  namespace_prefix
    : IDENT
    ;

新しいトークンで:

@{N}{A}{M}{E}{S}{P}{A}{C}{E} {return NAMESPACE_SYM;}

すべての@namespace規則は、すべての@charsetと@import規則の後に続き、他の無視されない@規則とスタイルシートにおけるスタイル規則の前に置かなければならない。CSS構文に対して、これは、stylesheet文法で[ import [S|CDO|CDC]* ]*の直後に[ namespace [S|CDO|CDC]* ]*を追加する。

構文的に妥当でない@namespace規則(不正な形式かあるいは誤った位置にあるもの)は無視しなければならない。妥当でない@namespace規則を含むCSSスタイルシート妥当なスタイルシートでない。

URI構文から構文解析されたURI文字列は、リテラルな文字列として扱わなければならない。STRING構文をもつので、一切のURI特有の正規化は適用されない。

すべての文字列―空文字列を含み、妥当でないURIを表す文字列―は、@namespace宣言において妥当な名前空間名である。

3.2 範囲

名前空間接頭辞は、@namespace規則が現れるスタイルシート内でのみ宣言される。接頭辞は、インポートするまたはそのスタイルシートによってインポートされるスタイルシートにおいて宣言されず、文書に適用する他のスタイルシートにもない。

3.3 接頭辞を宣言する

一度宣言された名前空間接頭辞は、名前空間が宣言され、名前空間修飾名の名前空間を示すために使用できる名前空間を表す。名前空間接頭辞は、CSSカウンタ名のように、大文字・小文字区別である。

名前空間宣言において名前空間接頭辞が省略される場合、そのように宣言される名前空間はデフォルト名前空間である。デフォルト名前空間は、明示的な名前空間接頭辞を持たない名前を適用してもよい。名前空間接頭辞を用いるモジュールは、どのコンテキストでデフォルト名前空間が適用するかを定義しなければならない。たとえば、[XML-NAMES]に従い、セレクタ[SELECT]において、デフォルト名前空間は型セレクタを適用する―しかし、これは属性セレクタに適用しない。デフォルト名前空間に規定値は存在しない。不適当な名前をデフォルト名前空間に割り当てるモジュールは、デフォルト名前空間が一切宣言されない場合、このような不適当な名前が解釈される方法を定義しなければならない。

注:型セレクタと組み合わせて、デフォルト名前空間を使用することは、別々にセレクタを解釈するために、デフォルト名前空間をサポートするユーザーエージェントとデフォルト名前空間をサポートしないユーザーエージェントをもたらすかもしれないに注意すること。

名前空間接頭辞またはデフォルト名前空間が1度より多く宣言される場合、最後の宣言のみが使用されるものとする。1度よりも多い名前空間接頭辞またはデフォルト名前空間の宣言は非適合である。

4 CSS修飾名

CSS修飾名とは、(関連付けられた)名前空間の中で明示的に位置づけられた名前である。CSS構文で修飾名を構成するために、範囲の中で宣言された名前空間接頭辞は(要素や属性名のような)ローカル名の先頭に追加され、"縦棒"(|、U+007C) によって切り離される。宣言された名前空間を表す、接頭辞は、ローカル名の名前空間を示す。修飾名の接頭辞は、名前が名前空間に属さないもの、すなわち、拡張名の名前空間名の部分に値がないことを示すために省略されてもよい。(ホスト言語によって定義されるように)一部のコンテキストは、一切の名前空間を含まない、任意の名前空間において名前を示すためにワイルドカード接頭辞としてアスタリスク(*、U+002A)を使用できる。

名前空間宣言を与えると:
  @namespace toto "http://toto.example.org";
  @namespace "http://example.com/foo";

デフォルト名前空間が適用されるコンテキストで

toto|A
http://toto.example.org名前空間における名前Aを表す。
|B
いずれの名前空間にも属さない名前Bを表す。
*|C
名前空間を一切含まない、任意の名前空間で名前Cを表す。
D
http://example.com/foo名前空間における名前Dを表す。

ローカル名の前にCSS修飾名の部分の構文は、以下のとおり、ワイルドカード接頭辞を許可する修飾名(wqname)とワイルドカード接頭辞を禁止する修飾名(qname)両方である。(構文は、CSS2.1の付録文法からの表記を使用する。[CSS21] これはコメントを意味するが、空白を意味せず、暗黙のうちにトークン間で許可されることに注意する):

  qname_prefix
    : namespace_prefix? '|'
    ;
  wqname_prefix
    : [ namespace_prefix? | '*' ] '|'
    ;
  qname
    : qname_prefix? ident
    ;
  wqname
    : wqname_prefix? ident
    ;
  wqwname
    : wqname_prefix? [ ident | '*' ]
    ;

他のモジュールで説明されるように、CSS修飾名は、(たとえば)セレクタやプロパティ値で使用できる。このモジュールは、適切に宣言されていない名前空間接頭辞の処理を定義しなければならない。このような取り扱いは、セレクタや宣言(など)を、CSSにおいて無視される妥当でないと見なされる構文解析エラーとして宣言されない名前空間接頭辞を扱うべきである。

たとえば、セレクタモジュール[SELECT]は、妥当でないセレクタとして宣言されない名前空間接頭辞とともに型セレクタを定義し、CSS[CSS21]は、完全に無視される妥当でないセレクタでスタイルルールを要求する。

変更点

2011年9月29日の勧告からの変更:

謝辞

This draft borrows heavily from earlier drafts on CSS namespace support by Chris Lilley and by Peter Linss and early (unpublished) drafts on CSS and XML by Håkon Lie and Bert Bos, and XML Namespaces and CSS by Bert Bos and Steven Pemberton. Many current and former members of the CSS Working Group have contributed to this document. Discussions on www-style@w3.org and in other places have also contributed ideas to this specification. Special thanks goes to L. David Baron, Karl Dubost, Ian Hickson, Björn Höhrmann, and Lachlan Hunt for their comments.

参考文献

規範文書

[CSS21]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 7 June 2011. W3C Recommendation. URL: http://www.w3.org/TR/2011/REC-CSS2-20110607
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. URL: http://www.ietf.org/rfc/rfc2119.txt
[XML-NAMES]
Tim Bray; et al. Namespaces in XML 1.0 (Third Edition). 8 December 2009. W3C Recommendation. URL: http://www.w3.org/TR/2009/REC-xml-names-20091208/

参照情報

[SELECT]
Tantek Çelik; et al. Selectors Level 3. 29 September 2011. W3C Recommendation. URL: http://www.w3.org/TR/2011/REC-css3-selectors-20110929/

索引

プロパティ索引

プロパティは定義されない。