CSSの文書表現は以下の通りです。
※このページは、W3Cの4 CSS2 syntax and basic data types[英文]を当サイト管理人が2008年08月25日、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。
文字列は、シングルクォートやダブルクォートで括る事ができます。
ダブルクォートはバックスラッシュ(日本語キーボード・端末では半角円マーク¥)でエスケープする場合を除き、ダブルクォートの内側にネストする事はできません(シングルクォートについても同様です)。
CSSスタイルシートは、Universal Character Set[UCS]の文字列の並びです。
伝送と記憶装置の為にこれらの文字列は[ISO 8859-x]や[SHIFT JIS]などの[US-ASCII]で識別できる文字セットに文字エンコーディングによってエンコードされなければいけません。
文字セットとエンコード方式についてはHTML4.0仕様の5章やXML1.0仕様のXML10セクション2.2と4.3.3とAppendixFに詳しく掲載されています。
スタイルシートがSTYLE要素か、またはHTML属性である[style=""]を利用するなど他の文書に埋め込まれた際には、スタイルシートはその文書中の文字エンコード方式を共有します。
スタイルシートが分割された別ファイルにある場合には、ユーザーエージェントは下記の中の最優先すべきものから優先度の低い文字エンコード方式までを選別して優先順位を識別しなければいけません。
◆CSS外部ファイルにおけるエンコード方式の優先順位 1.HTTP[charset]パラメータの"Content-Type"の項目 2.@ルール[at-rule]の@charset 3.参照文書の言語メカニズム(HTMLでは、HEAD内LINK要素の属性である[charset]) |
たいていの場合@charsetルールは外部スタイルシートにあるかもしれませんが埋め込まれたスタイルシートの中にあるわけではなく、文書中でいかなる文字よりも先んじて最初の方に記述されていなければいけません。
@charsetの後に文書の作者は、文字エンコード方式の名称を明記するような書式になっています。
名称は、[ @charset "ISO-8859-1"; ]のように国際標準化機関であるIANAの[IANA registry]に登録されている正式な名称でなければいけません。
この仕様は、ユーザーエージェントがサポートしなければいけない文字エンコード方式を指示するものではありません。
理論上構成される@charsetへの依存はエンコード方式の利用方法の優先順位情報ではないものに起因する問題に対する体裁です。
慣習とはいえ、インターネットにおいて世界中で一般に利用されるエンコード方式はASCII(アスキー)かUTF-16、UCS-4や稀にですがEBCDICもあります。
これは一般に文書の既定バイト値が信頼できるエンコード方式を見つける為に利用できたり、@charsetを見つける為の充分な情報を提供する事が、正確な文字エンコード方式を決定づける事ができるという意味です。
スタイルシートは、今ある文字エンコード方式で表現できない文字の参照をしなければならない事があるかもしれません。
これらの文字は、[ISO 10646]/[Unicode]を参照してエスケープされたものとして記述されなければいけません。
これらのエスケープ文字はHTMLやXML文書にある[#]に続く数値文字のように同じ目的で提供されています(HTML5章と25章参照)。
メカニズムに沿ってエスケープされた文字は、この手法によって表現されるべきいくつかの文字がある場合にのみ使用されるべきです。
もし、文書のほとんどがエスケープしなければいけないような場合には、文書の作者は、もっと妥当なエンコード方式でエンコードするべきです。
例えば、ギリシャ文字が頻出する文書であれば、作者は、"ISO-8859-7"や"UTF-8"を利用するでしょう。
中間的な異なる文字エンコード方式を利用するプロセッサがあったとしたらそのエンコード方式でバイト配列に順次エスケープするかもしれません。
中間的なプロセッサは、このようにする必要もありませんし、ASCII文字の特殊な意味を打ち消すエスケープシーケンスを変更する必要もありません。
順応するユーザーエージェントは、認識できるいかなるエンコード方式を利用するにしても全ての文字をUnicodeに正確にマップしなければいけません。
例えば、ISO-8859-1 (Latin-1)で伝送された文書には直接ギリシャ文字を含める事はできません。
HTML4.0では数値文字参照は、style属性値の中で解釈されますが、STYLE要素(<style type="">)の中にあってはいけません。
なぜなら、このHTML4.0のふるまいは、htmlのstyle属性にしても、STYLE要素にしても数値文字参照よりもCSS勧告の文字エスケープメカニズムの方が利用されているという結果と相反するからです。
例えば、CSS勧告では
<SPAN style="voice-family: D\FCrst">...</SPAN> |
を[<SPAN style="voice-family: Dürst">...</SPAN>]よりも推奨しています。
※ D\FCrst 及び Dürst を表示すると
Dürst |
となります。