W3C

CSS モジュール: 名前空間

W3C ワーキングドラフト 2006-08-26

このバージョン(原文):
http://www.w3.org/TR/2006/WD-css3-namespace-20060828/
最新のバージョン:
http://www.w3.org/TR/css3-namespace
前のバージョン:
http://www.w3.org/1999/06/25/WD-css3-namespace-19990625/
編者:
Elika J. Etemad
前の編者:
Peter Linss, Netscape Communications
Chris Lilley, W3C

概要

このCSSモジュールはCSSで名前空間を使用するための構文を定義します。 この仕様は、デフォルト名前空間を宣言し、名前空間と名前空間接頭語を結びつけるための@namespace規則を導入します。そして、他の仕様を適切な名前空間名で接頭語を用いることで借用可能な構文を定義します。

この文書の位置づけ

この節は発行時点でのこの文章の位置づけについて説明します。 他の文章はこの文章に取って代わるかもしれません。http://www.w3.org/TR/ のW3C技術報告書インデックスで現在のW3C刊行物のリストとこの技術報告書の最新の改正を見つけることができます。

草案としての発行はW3Cメンバーによる保証を意味しません。この文書は草案であり、更新されるかもしれないし、いつでも他の文書によって廃止、変更されるかもしれません。 この文章をW3Cの勧告として引用するのは適当ではありません。

この仕様は公開メーリングリストwww-style@w3.org (instructions参照)で議論されたい (アーカイブ)。メール送信の際は、題名に “css3-namespace” を入れてください。“[css3-namespace] …コメントの概要…” とするのが望ましいです。

この文章は CSSワーキンググループ (Style Activityの一部)によって製作されました。

この文章は2004年2月5日 W3C特許ポリシーの元で管理するグループによって製作されました。 W3Cはグループの提供したものに関連するすべての特許開示の公表リストを維持します。 また、そのページは特許を明らかにするための指示を含んでいます。 W3C特許ポリシーの6章によると、個人が重要な権利を含むと信じている特許に関する実際の知識を持っている個人は情報を明らかにしなければなりません。

これはCSS (Cascading Style Sheets)のモジュールの草案です。 この草案は、1999年よりCSSワーキンググループは何年間も合意しており、すでにユーザエージェントで実行されるCSS3名前空間拡張構文提案から最小限の変化で受け継がれたものです。 その提案からの材料は[SELECT][CSS3SYN]、および[CSS3VAL]の草稿に届きました。 現在、[SELECT]は勧告候補です。 不運にも、[CSS3SYN]はこのモジュールと他のすべてのCSS3モジュールに(潜在的に)依存を持っており、加えてCSS2.1にも影響を与え、このことがこの仕様の有用性を遅らせました。 依存の鎖を断ち切るために、そしてより早い勧告にいたるステップを進むために、現在のモジュールは分割されました。 この仕様は[SVG12]や現実には[CSS21]を参照していますが、本来CSSモジュールとして意図されています。

目次

1. 序論

この章は情報を提供します。

この仕様はCSSで名前空間を使用するための構文を定義します。この仕様は、デフォルト名前空間を宣言し、名前空間と名前空間接頭語を結びつけるための@namespace規則を導入します。この仕様も、適切な名前空間名で接頭語を使用するための構文を定義しますが、その名前が妥当であるかどうか、また、その意味がどのようなものであるのかを定義しません。この仕様で使用される用語は[XML-NAMES11]のものです。本当にこの文は必要?

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

2. 適合

文章または実装が、単独でこの仕様に従うことができませんが、規範的な参照であるCSSか別のホスト言語をこの仕様を与えることでこの仕様による適合要求を満たすなら、この仕様に適合するよう要求することができます。

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

3. 名前空間の宣言: @namespace規則

@namespaceは@規則として、名前空間接頭語を宣言し、与えられた名前空間(文字列)と接頭語を関連付けます。 この名前空間接頭語は、セレクタモジュール[SELECT]または値と単位モジュール[CSS3VAL]で表された適切な名前空間名において使用することができます。

@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名前空間 [REC-XML-NAMES]のように、ローカルな接頭語は単なる構文の構造体です。つまり、拡張名前 (ローカル名と名前空間のデータ) を意味します。 したがって、CSS名前空間がデフォルトかどうかに関わらず、CSSスタイルシート中で使用される実際の接頭語は、マークアップや、CSS名前空間がデフォルトかどうかに関わらず使用される名前空間接頭語から独立しています。

3.1. 構文

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

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

新しいトークンで

"@namespace"              {return NAMESPACE_SYM;}

すべての@namespace規則は、すべての@charsetと@import規則の後に続き、他の無視されない@規則とスタイルシートの規則セットの前に置かなければなりません。 CSS構文のために、stylesheet文法中に、[ import [S|CDO|CDC]* ]*のすぐ後に[ namespace [S|CDO|CDC]* ]*を加えます。

構文的に不正な@namespace(不格好な、あるいは見当違いなもの)は無視しなければなりません。 不正な@namespace規則を含むスタイルシートは非適合です。

url()構文から構文解析されたURI文字列は、文字列そのものとして扱わなければなりません。つまり、URI特有の正規化を適用してはなりません。この理由から文字列構文が推奨され、url()構文は妨げられ非難され?ます。

3.2. 範囲

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

3.3. 接頭語の宣言

一度宣言された名前空間接頭語は、名前空間が適切な名前空間名で宣言され、使用可能であることを示します。

名前空間宣言において名前空間接頭語が省略されるなら、そのように宣言された名前空間はデフォルト名前空間です。 デフォルト名前空間は明白な名前空間接頭語を持っていない名前に適用されます。 名前空間接頭語が使われるモジュールは、デフォルト名前空間がどの文脈で適用されるかを定義しなければなりません。 例えば、次の述べるXML名前空間[REC-XML-NAMES]、セレクタ[SELECT]では、デフォルト名前空間はタイプセレクタに当てはまります—しかし、属性セレクタには当てはまりません。 デフォルト名前空間に初期値はありません。不適当な名前をデフォルト名前空間に割り当てるモジュールは、デフォルト名前空間が一切宣言されないとき、このような不適当な名前が解釈される方法を定義しなければなりません。

名前空間接頭語は、CSSプロパティ名のように、大文字・小文字を問いません。

名前空間接頭語かデフォルト名前空間が一度より多く宣言されるなら、最後の宣言だけが使用されるものとします。

4. 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の適切な名前を使用することができます。 それらのモジュールは、セレクタや宣言(など)を不正または無視されることを考慮させる構文解析エラーとして、適切に宣言されていない名前空間接頭語の使用を定義するべきです。

謝辞

この草稿は、CSS名前空間の以前のドラフトであるChris LilleyとPeter Linss[CSS3NAMESPACE]、CSSとXMLにおける初期の(未発表の)ドラフトのHakon LieとBert Bos、XML名前空間とCSSのBert Bos とSteven Pembertonによるサポートを大いに取り入れました。 CSSワーキンググループの多くの、現在の、そして、元メンバーがこのドキュメントに貢献しました。 また、www-style@w3.orgと、他の場所での議論はこの仕様のアイディアに貢献しました。 特に、Ian Hickson、Bjöern Höhrmann、Anne van Kesteren、L. David Baronのコメントに感謝します。

参考文書

規範文書

[CSS21]
Bert Bos; et al. Cascading Style Sheets, level 2 revision 1. 11 April 2006. W3C Working Draft. (Work in progress.) URL: http://www.w3.org/TR/2006/WD-CSS21-20060411

参照資料

[CSS3NAMESPACE]
Peter Linss. CSS Namespace Enhancements (Proposal). 25 June 1999. W3C Working Draft. (Work in progress.) URL: http://www.w3.org/1999/06/25/WD-css3-namespace-19990625
[CSS3SYN]
L. David Baron. CSS3 module: Syntax. 13 August 2003. W3C Working Draft. (Work in progress.) URL: http://www.w3.org/TR/2003/WD-css3-syntax-20030813
[CSS3VAL]
Håkon Wium Lie; Chris Lilley. CSS3 module: Values and Units. 13 July 2001. W3C Working Draft. (Work in progress.) URL: http://www.w3.org/TR/2001/WD-css3-values-20010713
[REC-XML-NAMES]
Tim Bray; Dave Hollander; Andrew Layman. Namespaces in XML. 14 January 1999. W3C Recommendation. URL: http://www.w3.org/TR/1999/REC-xml-names-19990114
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt
[SELECT]
Daniel Glazman; et al. Selectors. 13 November 2001. W3C Candidate Recommendation. (Work in progress.) URL: http://www.w3.org/TR/2001/CR-css3-selectors-20011113
[SVG12]
Dean Jackson. Scalable Vector Graphics (SVG) 1.2. 18 March 2004. W3C Working Draft. (Work in progress.) URL: http://www.w3.org/TR/2004/WD-SVG12-20040318
[XML-NAMES11]
Andrew Layman; et al. Namespaces in XML 1.1. 4 February 2004. W3C Recommendation. URL: http://www.w3.org/TR/2004/REC-xml-names11-20040204