3 適合性:要件および推奨事項

目次

3.1 定義

この文書内のキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" は RFC 2119([RFC2119])で説明されている通りに解釈されます。 ただし、可読性のため、これらの単語は本仕様書ではすべて大文字では記載されません。

本仕様では、著者やユーザーエージェントに対する良い運用方法を推奨することがあります。これらの推奨は規範的ではなく、本仕様への適合は実現の有無に依存しません。推奨には「推奨します」「本仕様は推奨します」などの表現が含まれます。

機能が非推奨(例えば'aural'キーワード)またはCSS3で非推奨予定(例えばシステム色)とマークされていることは、適合性に影響しません。(例:'aural'は非規範的なので、UAはサポート不要です。システム色は規範的なので、UAはサポートが必要です。)

本仕様のすべてのセクション(付録を含む)は特に明記されていない限り規範的です。

例や注釈は規範的ではありません。

例:

例は通常、冒頭付近に「例」などの語が含まれており("Example:"、"The following example…," "For example," など)、この段落のように色付き背景で表示されます。

注釈は「注:」で始まり、インデントされて緑色で表示されます(この段落のようになります)。

図は説明のみを目的としています。明示的に記載されていない限り、参照レンダリングではありません。

スタイルシート
文書の提示方法を指定する一連の記述。

スタイルシートには、著者ユーザーユーザーエージェントの3つの起源があります。これらの起源の相互作用についてはカスケードと継承のセクションで説明します。

有効なスタイルシート
スタイルシートの有効性はCSSのレベルによって決まります。すべての有効なCSS1スタイルシートはCSS 2.2スタイルシートとしても有効ですが、CSS1からの変更により一部のCSS1スタイルシートはCSS 2.2で意味が若干異なる場合があります。CSS2の一部機能はCSS 2.2には含まれていないため、すべてのCSS2スタイルシートがCSS 2.2として有効とは限りません。

有効なCSS 2.2スタイルシートはCSS 2.2の文法に従って記述する必要があります。さらに、この仕様で定義されるat規則、プロパティ名、プロパティ値のみを含む必要があります。 不正(無効)なat規則、プロパティ名、プロパティ値は有効ではありません。

ソース文書
1つ以上のスタイルシートが適用される文書。これは、要素のツリーとして文書を表現する言語でエンコードされます。各要素は、要素の型を識別する名前、オプションで複数の属性、および(空の場合もある)内容から構成されます。たとえば、ソース文書はXMLやSGMLインスタンスです。
文書言語
ソース文書のエンコード言語(例:HTML、XHTML、SVG)。CSSは文書言語の提示方法を記述するために使われ、CSSは文書言語の根本的な意味には影響しません。
要素
(SGML用語。[ISO8879]参照。)文書言語の主要な構文構成要素。ほとんどのCSSスタイルシート規則は、これらの要素名(HTMLならP, TABLE, OLなど)を使い、要素のレンダリング方法を指定します。
置換要素

内容がCSS整形モデルの範囲外となる要素(画像、埋め込み文書、アプレットなど)。例えば、HTMLのIMG要素の内容はしばしばその"src"属性で指定される画像に置換されます。置換要素は通常、固有の寸法(固有幅、固有高さ、固有比率)を持っています。たとえば、ビットマップ画像は絶対単位で固有の幅と高さを持ちます(そこから固有比率も明確に決まります)。一方、他の文書は固有寸法を持たない場合もあります(例:空のHTML文書)。

ユーザーエージェントは、第三者に機密情報が漏れる可能性があると判断した場合、置換要素に固有寸法がないものとみなす場合があります。例えば、HTML文書がユーザーの銀行残高によって固有サイズが変化する場合、UAはそのリソースに固有寸法がないかのように扱うことがあります。

置換要素の内容はCSSレンダリングモデルでは考慮されません。

固有寸法
要素自身によって定義される幅と高さ。周囲によって強制されるものではありません。CSSは固有寸法の取得方法を定義しません。CSS 2.2では置換要素のみが固有寸法を持つことができます。 信頼できる解像度情報がないラスター画像については、画像ソースピクセルごとに1px単位のサイズとみなす必要があります。
属性
要素に付随する値で、名前と関連する(テキスト)値から成ります。
内容
ソース文書内の要素に付随する内容。内容のない要素もあり、その場合は空要素と呼ばれます。要素の内容にはテキストや複数のサブ要素が含まれる場合があり、その場合はその要素がになります。
無視する
本仕様でこの用語には2つの意味があります。まず、CSSパーサーはスタイルシート内で未知または不正な構文を発見した場合、特定部分を無視する必要があります。どの部分を無視するかの詳細は(宣言とプロパティパースエラーの扱い未サポート値)で説明されるか、「無視する」用語が現れる本文中で説明されます。第二に、ユーザーエージェントは(場合によっては必ず)構文が正しくてもスタイルシート内の特定プロパティや値を無視することがあります。例えば、テーブル列要素は列のフォントに影響しないため、フォントプロパティは無視される必要があります。
レンダリングされた内容
関連するスタイルシートが適用された後の要素の内容。置換要素の内容がどのようにレンダリングされるかは本仕様では定義されていません。レンダリングされた内容には、要素の代替テキスト(例:XHTMLの"alt"属性値)、スタイルシートによって暗黙的または明示的に挿入された項目(箇条書き、番号付けなど)が含まれる場合があります。
文書ツリー
ソース文書でエンコードされた要素のツリー。このツリーの各要素は、ルート要素を除き、必ず1つの親を持ちます。
要素Aが要素Bの親である場合に限り、AはBの子と呼ばれます。
子孫
要素Aが要素Bの子、または要素CがBの子孫でかつAがCの子である場合、AはBの子孫と呼ばれます。
祖先
要素BがAの子孫の場合に限り、AはBの祖先と呼ばれます。
兄弟
BとAが同じ親要素を持つ場合に限り、AはBの兄弟と呼ばれます。Aが文書ツリー内でBより前に現れれば前兄弟、BがAより後に現れれば後兄弟です。
前要素
AがBの祖先であるか、AがBの前兄弟である場合に限り、AはBの前要素と呼ばれます。
後要素
BがAの前要素である場合に限り、AはBの後要素と呼ばれます。
著者
著者とは文書とそれに付随するスタイルシートを書く人です。 オーサリングツールは、スタイルシートを生成するユーザーエージェントです。
ユーザー
ユーザーとは、ユーザーエージェントを使って文書と関連スタイルシートを閲覧・聴取・利用する人です。ユーザーは個人の好みをエンコードしたユーザースタイルシートを提供できる場合もあります。
ユーザーエージェント (UA)
ユーザーエージェントは、文書言語で書かれた文書を解釈し、本仕様の条件に従い関連スタイルシートを適用するプログラムです。ユーザーエージェントは文書の表示、音声読み上げ、印刷、他フォーマットへの変換などを行うことがあります。
HTMLユーザーエージェントは、1つ以上のHTML仕様をサポートするものです。XHTML[XHTML]のみサポートし、HTMLをサポートしないユーザーエージェントは、本仕様の適合性判断においてHTMLユーザーエージェントとはみなされません。
プロパティ
CSSは文書のレンダリングを指示する有限個のパラメータ(プロパティ)を定義します。各プロパティには名前(例:'color'、'font'、'border')と値(例:'red'、'12pt Times'、'dotted')があります。プロパティは特定の文書部分や表示するページに、特異性・カスケード・継承の仕組みにより割り当てられます(プロパティ値の割り当て、カスケード、継承参照)。

HTMLで記述されたソース文書の例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>   
  <TITLE>私のホームページ</TITLE>
  <BODY>
    <H1>私のホームページ</H1>
    <P>私のホームページへようこそ!好きな作曲家を紹介します:
    <UL>
      <LI> Elvis Costello
      <LI> Johannes Brahms
      <LI> Georges Brassens
    </UL>
  </BODY>
</HTML>

この結果、次のようなツリーになります:

文書ツリー例   [D]

HTML 4の定義によれば、HEAD要素はパース時に推定され、文書ソースに"head"タグがなくても文書ツリーの一部になります。同様に、パーサーはPやLI要素の終了位置もソースに</p>や</li>タグがなくても把握します。

XHTML(および他のXML系言語)で記述された文書は異なり、推定要素はなく、すべての要素に終了タグが必要です。

3.2 UA適合性

このセクションはCSS 2.2仕様への適合性のみを定義します。今後他のCSSレベルが登場した場合、適合のために異なる機能セットの実装が求められる場合があります。

一般的に、本仕様への適合を主張するユーザーエージェントは次の要点を順守しなければなりません:

  1. CSS 2.2のメディアタイプの1つ以上を認識できること。
  2. 各ソース文書について、認識したメディアタイプに適した関連スタイルシートをすべて取得しようとすること。すべて取得できない場合(例:ネットワークエラー等)、取得できたスタイルシートのみで文書を表示すること。
  3. スタイルシートを本仕様に従いパースできること。特に、すべてのat規則、ブロック、宣言、セレクター(CSS 2.2の文法参照)を認識できること。サポートするメディアタイプに適用されるプロパティを検出した場合、プロパティ定義に従い値をパースすること。すべての有効な値を受け入れ、無効な値の宣言は無視すること。サポートされないメディアタイプに適用される規則は無視すること。
  4. 文書ツリー内の各要素について、プロパティ定義およびカスケードと継承の規則に従ってすべてのプロパティ値を割り当てること。
  5. ソース文書が代替スタイルシートセット(HTML 4の"alternate"キーワードなど [HTML4])を持つ場合、UAはユーザーがどのスタイルシートセットを適用するか選択できるようにすること。
  6. UAは著者スタイルシートの影響をユーザーがオフにできるようにすること。

ただし、すべてのユーザーエージェントがすべて順守する必要はありません:

特定デバイスの制限(例:モノクロモニターやページで色を表示できない等)により本仕様の一部を実装できなくても、非適合とはみなされません。

UAはユーザーがユーザースタイルシートを含むファイルを指定できるようにする必要があります。ファイル指定手段のないデバイス上のUAはこの要件から除外されます。さらにUAは、GUIなど他の手段でユーザーの好みを指定する機能を提供してもよいです。

CSS 2.2はフォームコントロールやフレームにどのプロパティが適用されるか、CSSでそれらをどのようにスタイル指定できるかは定義しません。UAはこれらの要素にCSSプロパティを適用してもよいですが、著者はそのサポートを実験的なものと考えることを推奨します。将来のCSSレベルでさらに定義される可能性があります。

3.3 エラー状態

本書では全体を通してエラー処理の挙動を規定しています。例えば、パースエラーの扱いを参照してください。

3.4 text/css コンテンツタイプ

別ファイルとして存在するCSSスタイルシートは、エンコーディング情報を添えてバイト列としてインターネット経由で送信されます。その伝送構造はメッセージエンティティと呼ばれ、RFC 2045およびRFC 2616([RFC2045], [RFC2616])で定義されています。content typeが"text/css"のメッセージエンティティは独立したCSS文書を表します。"text/css"コンテンツタイプはRFC 2318([RFC2318])で登録されています。