原文の最新版 が公開されたため、この日本語訳は古いものとなっています。原文の最新版に対応した日本語訳は、W3C 仕様書 日本語訳一覧 よりアクセスできます。
この文書「CSS 名前空間モジュール」は、W3C の CSS ワーキンググループ による「CSS Namespaces Module (W3C Working Draft 15 February 2008)」の日本語訳です。
規範的な文書は原文のみとなっています。この日本語訳は参考情報であり、正式な文書ではないことにご注意ください。また、翻訳において生じた誤りが含まれる可能性があります。
原文が勧告 (Recommendation) ではなく、最終草案 (Last Call Working Draft) であることにご注意ください。
原文の最新版 は、この日本語訳が参照した版から更新されている可能性があります。また、この日本語訳自身も更新されている可能性があります。日本語訳の最新版は、W3C 仕様書 日本語訳一覧 から参照することができます。
Copyright © 2008 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
この CSS 名前空間モジュールは、CSS で名前空間を使用するための構文を定義します。具体的には、規定名前空間の宣言と、接頭辞つきの名前空間を宣言する @namespace
規則を定義します。また、他の仕様が名前空間修飾名の接頭辞を利用するための構文も定義しています。
この章は、この文書の公開時におけるステータスについて説明しています。このため、他の仕様がこの文書を上書きしている可能性があります。W3C による他の出版物およびこの技術レポートの最新版は W3C 技術レポートインデックス (http://www.w3.org/TR/) で探すことができます。
草案としての仕様書公開は、W3C メンバーによる支持を意味するものではありません。この文書は更新されたり他の文書と置き換えられたり、また破棄される可能性もある草稿段階の仕様書です。策定中ということを明記せずに、この文書を引用することは適当でありません。
この仕様に関する議論は、公開メーリングリスト (アーカイブ) で行われています (議論への参加の前に、手順 をお読みください)。E メールを送るときには、件名に “css3-namespace” という文字を含めてください。たとえば、“[css3-namespace] …summary of comment…” というスタイルが適当です。
この文書は style activity の CSS ワーキンググループ により作成されました。
この文書は 5 February 2004 W3C Patent Policy の下で活動するグループにより作成されました。W3C は 特許情報の開示に関する公開リスト を関連する団体と共に、その成果物とあわせて管理しています。リストには情報開示に関する説明もありますので、ご参照ください。特許について十分に知識のある人物が、当該仕様に関し Essential Claim(s) が認められると判断した場合は、W3C 特許方針の第 6 章 に従い情報を開示する必要があります。
この仕様は 最終草案 (Last Call Working Draft) です。すべての方がこの文書のレビューを行うことができ、また コメントを www-style メーリングリストに送信する ことができます。コメントの最終期限 (deadline for comments) は 2008 年 3 月 7 日 です。
CSS 名前空間の テストスイート は、勧告候補 (Candidate Recommendation) の段階で作成されます。
このセクションは規範的ではありません。
この CSS 名前空間モジュールは、CSS で名前空間を使用するための構文を定義します。具体的には、規定名前空間の宣言と、接頭辞つきの名前空間を宣言する @namespace
規則を定義します。また、結びつけた接頭辞を用い、名前空間修飾名を表現するための構文も定義します。しかしこの仕様では、このような名前が妥当であるかないか、また名前の持つ意味については定義しません。これらは内容に依存するため、ホスト言語で定義されるものだからです。たとえばセレクタ ([SELECT]) は、CSS 名前空間モジュールで定義される構文を参照しています。
このモジュールをサポートしない CSS クライアントは、それが CSS の前方互換パース処理規則 に適合している場合、すべての @namespace 規則と、名前空間修飾名を利用したスタイル規則を無視します。CSS にて接頭辞を区切る構文は、CSS クライアントが間違うことなくスタイル規則を無視できるよう、細心の注意を払ったうえで選ばれています。
文書や実装は、CSS 名前空間ただひとつに適合することはできません。しかし、この仕様を規範的に参照する他のホスト言語や、CSS を実装した場合、CSS 名前空間に適合したと言及することができます。
CSS 名前空間への適合性は、二つのクラスに分けられます。
適合性要件は説明的な条件と、RFC 2119 の用語の組み合わせにより表現されます。この文書の規範的な文脈で使われるキーワード "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、"OPTIONAL" は RFC 2119 で示されるとおりに解釈されます。しかしながら、仕様書の可読性を確保するため、これらのキーワードをすべて大文字で記述することはありません。また、この仕様中で非規範的、例、注釈と記述されていない文はすべて規範的なものとなります。[RFC2119]
訳註:キーワードが含まれている文章は「~する必要があります (MUST)。」など、文末にキーワードを補い表しています。
仕様中の例は、"for example" と書かれた文であるか、または規範的な文から分かれたうえで class="example"
がつき表されています。
これは、例文の参考例です。
訳註:本文中の "for example" はすべて「たとえば」と訳しています。
参考情報である注釈は、"Note" という文字から始まり、また規範的な文から分かれたうえで class="note"
がつき表されています。
Note: これは参考情報です。
訳註:"Note" はすべて "Note:" と表記しています。
この仕様書で定義される以外の用語について、CSS 名前空間は Namespaces in XML 1.0 [REC-XML-NAMES] で定義された用語を使用しています。しかし、この仕様書で定義された構文は XML の要素や属性名のみを表すものではなく、ホスト言語で定義された他の名前空間を表すことがあります (MAY)。
@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
を規定の名前空間として宣言しています。名前空間が明示されていないものは、この規定名前空間に属するものとして処理されます。
二つ目の規則は、名前空間接頭辞 svg
を宣言し、それを名前空間 http://www.w3.org/2000/svg
と結びつけています。svg
という接頭辞が使われているものは、対応する名前空間に属するものとして処理されます。
CSS 名前空間や、参照する Namespaces in XML 1.0 において、接頭辞は構文構造のひとつでしかありません。ローカル名と名前空間名の組み合わせから成る、展開名 (expanded name) が重要なのです。このため、CSS スタイルシートで使用される接頭辞と、また名前空間が規定であるかないかは、適用対象の文書が定義する、名前空間接頭辞や規定の名前空間と対応しているわけではありません。
@namespace 規則の構文は次のようになります。記法は CSS 2.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 規則、そして無視されていない他の @ 規則とスタイルシート中のルールセットに従う必要があります (MUST)。CSS 構文で説明すると、stylesheet
文法にある [ import [S|CDO|CDC]* ]*
の直後に [ namespace [S|CDO|CDC]* ]*
を加えることを意味します。
綴りの間違いや非整形式など、構文的に不正な @namespace
規則は 無視 されなければなりません (MUST)。不正な @namespace
規則を含む CSS スタイルシート は、非妥当 (invalid) なものとなります。
URI
構文からパース処理された URI 文字列は、リテラル文字列 (literal string) として扱われる必要があります (MUST)。これは STRING
構文と同様に処理し、URI 固有の正規化処理は行わないという意味です。
名前空間の接頭辞は、@namespace 規則が記述されたスタイルシートでのみ宣言されます。つまり、@namespace 規則のあるスタイルシートがインポートしたスタイルシート、@namespace 規則付きのスタイルシートをインポートしたスタイルシート、またはおなじ文書に適用される他のスタイルシートにおいて、接頭辞は宣言されていないことになります。
名前空間接頭辞 (namespace prefix) が宣言されたとき、それは宣言された名前空間と、名前空間修飾名が属する名前空間を表します。
名前空間宣言において名前空間接頭辞が省略された場合、その名前空間は規定の名前空間として宣言されたことになります。規定の名前空間 (default namespace) は、接頭辞を持たない名前に対して適用されます。名前空間接頭辞を使用するモジュールは、規定の名前空間が適用される内容について定義する必要があります (MUST)。たとえば、[REC-XML-NAMES] によると、セレクタ [SELECT] は、規定の名前空間は型セレクタ (type selectors) に適用されますが、属性セレクタには適用されません。規定の名前空間には、初期値が存在しないからです。非修飾名を規定の名前空間に適用させるようなモジュールは、規定の名前空間が定義されていない場合、そのような非修飾名がどう解釈されるかを定義する必要があります (MUST)。
名前空間接頭辞は、CSS カウンタ名 と同じように、大文字小文字を区別します (case-sensitive)。
同じ名前空間接頭辞や、規定の名前空間が複数回宣言された場合は、最後の宣言を用いるものとします (SHALL)。
CSS 修飾名 (CSS qualified name) は、明示的に名前空間に配置された (結びつけられた) 名前を指します。修飾名を CSS 構文において構成する場合、宣言された名前空間接頭辞は、要素や属性名などの前に "vertical bar" (|
、U+007C) で区切った上で記述します。宣言された名前空間を表す接頭辞は、ローカル名の名前空間を表すことになります。どの名前空間にも属さないものについては、修飾名の接頭辞を省略することができます (MAY)。内容によっては、名前空間を問わずどの名前も対象となるよう、接頭辞のワイルドカードとしてアスタリスク (*
、U+002A) を使用することができます (MAY)。名前空間に属していないものも対象となります。
次の名前空間を宣言します。
@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 修飾名はたとえば、セレクタやプロパティの値など、他のモジュールで定義される部分に用いることができます。それらのモジュールは、適切に宣言されていない名前空間接頭辞をどのように処理するかを定義する必要があります (MUST)。このような処理において、宣言されていない名前空間接頭辞は、パースエラーとみなすべきです (SHOULD)。エラーにより、セレクタや宣言などは非妥当なものと解釈され、CSS においては 無視 されることになります。
この草案は Chris Lilley と Peter Lins による初期の CSS namespace support と、Håkon Lie と Bert Bos による (未公開の) CSS and XML という初期草案、そして Bert Bos と Steven Pemberton による XML Namespaces and CSS からかなりのものを取り入れています。現在、そして前の CSS ワーキンググループメンバーの多くが、この文書に貢献しています。また、www-style@w3.org での議論や、他の場所での議論もこの仕様に貢献しています。また特に、L. David Baron、Karl Dubost、Ian Hickson、Bjöern Höhrmann、Lachlan Hunt と、彼らの寄せたコメントに感謝しています。