3 適合性: 必要条件と推奨事項

目次

3.1 定義

本文書での"MUST""MUST NOT""REQUIRED""SHALL""SHALL NOT""SHOULD""SHOULD NOT""RECOMMENDED""MAY""OPTIONAL"のキーワードはRFC 2119に示されたとおりに解釈される([RFC2119]参照)。しかし、読みやすさのために、これらの単語は本仕様で大文字のみで出現しない。

折に触れて、本仕様は著者やユーザーエージェントにとっての都合のよい事例を推奨する。これらの推奨事項は規範的なものではなく、推奨事項の実現をせずとも本仕様に適合する。これらの推奨事項は、"推奨する…"、"本仕様は…推奨する"といった、もしくはそれに準じる表現を含む。

機能がdeprecated(廃止)としてマークされているもの(具体的には'aural'キーワード)やCSS3で廃止予定とされているもの(具体的にはシステム色)は、適合性に影響することはない。(たとえば、'aural'は非規範的としてマークされているので、ユーザーエージェントはサポートする必要がない。システム色は規範的であり、ユーザーエージェントはサポートする必要がある。)

付録も含めた本仕様のすべての節は、特に断りのない限り規範的である。

例と注は規範的ではない。

例:

例は、常に単語"例"が文頭近くにあり("例:"、"以下の例は…"、"たとえば"など) この段落のように栗色(マルーン)で表示する。

注は、単語"注"で始まり、この段落のように字下げした緑色で表示する。

図は説明のためだけのものにすぎない。明示的に指定しない限り、規範的なレンダリングではない。

スタイルシート
文章の見栄えを指定した一連の文。

スタイルシートは、著者ユーザーユーザーエージェントの3つの異なる出自を持つことができる。これらの相互作用は、カスケーディングと継承の節で説明される。

妥当なスタイルシート
スタイルシートの妥当性は、スタイルシートに用いるCSSのレベルに依存する。すべての妥当なCSS1スタイルシートはCSS 2.1スタイルシートとして妥当だが、いくつかCSS1からの変更は、少数のCSS1スタイルシートがCSS 2.1においてやや異なる意味を持つことがある。CSS2のいくつかの機能はCSS 2.1の一部でなく、その結果、すべてのCSS2スタイルシートが妥当なCSS 2.1スタイルシートとは限らない。

妥当なCSS 2.1スタイルシートはCSS 2.1の文法に従って記述されなければならない。さらに、@規則とプロパティ名およびプロパティ値は本仕様で定義されたもののみを含まなければならない。不正な(妥当でない)@規則、プロパティ名、プロパティ値が1つでも存在すれば妥当ではない。

ソース文書
1つ以上のスタイルシートが参照する文書のこと。文章は、要素のツリーとして表現される言語でエンコードされている。各要素は、要素の種類、任意な多数の属性および(場合によって空の)内容を識別する名前で構成される。たとえば、ソース文書はXMLまたはSGMLが考えられる。
文章言語
ソース文章(たとえば、HTMLやXHTML、SVG)の符号化言語。CSSは文章言語の見栄えに使われ、CSSは文章言語の根本的な意味を変更しない。
要素
(SGML用語。[ISO8879]を参照。)文章言語の主要な構成要素。ほとんどのCSSスタイルシートの規則は、要素のレンダリングされるべき方法を指定するために、これら要素の名前(たとえば、HTMLでのP、TABLE、OLなど)を使用する。
置換要素

要素の内容がCSS整形モデルの範囲外であるもの。たとえば画像や埋め込み文章、アプレットなど。たとえば、HTMLのIMG要素の内容は多くの場合"src"属性が指定する画像に置換される。置換要素は多くの場合、固有の長さ、固有の高さ、固有の比率といった固有の次元をもつ。たとえば、ビットマップの画像は絶対単位(固有の比率を明確に規定できることから)で指定された固有の幅と高さを持つ。 一方、他の文章は固有の寸法(たとえば、何も書いていないHTML文章)を持つとは限らない。

ユーザーエージェントは、これらの寸法がサードパーティに機密情報を漏洩してると考えられる場合、固有の寸法を1つも持たない置換要素を検討してよい。たとえば、HTML文章がユーザーの銀行残高に応じて固有の大きさを変更する場合、ユーザーエージェントはリソースの固有の寸法を持たなかったかのように振る舞うことを望む。

置換要素の内容は、CSSレンダリングモデルでは考慮されない。

固有の寸法
要素自身によって定義された幅と高さで、周囲に影響されないもの。CSSは固有の寸法を発見する方法を定義しない。CSS 2.1では、置換要素のみが固有の寸法を伴うと考える。信頼性のある解像度情報を持たないラスタ画像の場合、画像ソースピクセルあたり1ピクセル単位であると仮定しなければならない。
属性
要素と名前で構成され、そして(テキストの)値に関連付けられた値。
内容
内容は、ソース文章内の要素と関連付けられる。と呼ばれる場合のいくつかの要素は内容を持たない。要素の内容は、それらの下位要素のと要素が呼ばれる場合に、テキストや多数の下位要素を含むことができる。
無視する
この用語は、本仕様で2つの若干異なる意味を持つ。第一に、CSSパーサがスタイルシート内で未知または不正な構文を検出した場合、CSSパーサは特定の規則に従う必要がある。その後、パーサはスタイルシートの特定の部分を無視する必要がある。宣言とプロパティ構文解析エラー規則サポートされない値の節で説明される、一部の厳密な規則は無視しなければならない。また用語"ignore"が出現するテキスト内で説明されることがある。第二に、構文が正当であっても、ユーザーエージェントは、スタイルシート内であるプロパティや値を無視してよい(場合によっては、しなければならない)。たとえば、テーブルの列要素は列のフォントに影響を与えることができず、その結果フォントプロパティは無視しなければならない。
レンダリング内容
関連するスタイルシートにしたがって要素に適用された、レンダリング後の要素の内容。どのように置換要素の内容がレンダリングされるかは、本仕様で定義しない。レンダリング内容は要素の代替テキスト(たとえば、XHTMLの"alt"属性値)であってもよく、黒丸や番号付けなどのスタイルシートによって暗黙的または明示的に挿入された項目を含んでよい。
文章ツリー
ソース文書でエンコードされた文章のツリー。ツリーの各要素は、ルート要素を除き、必ず1つのみの親を持つ。
BがAの親である場合に限り、ある要素Aは要素Bの子であるという。
子孫
(1)AがBの子である、または(2)Aが、Bの子孫である要素Cの子、のいずれかであるとき、ある要素Aは、要素Bの子孫という。
祖先
BがAの子孫である場合に限り、ある要素Aは要素Bの祖先という。
兄弟
BとAが同一の親要素を共有する場合に限って、ある要素Aは要素Bの兄弟という。文章ツリーでBの前に現れる場合、要素Aは兄という。文章ツリーでAの前に現れる場合、要素Bは弟という。
先行要素
(1)AがBの祖先であるか、または(2)Bの兄に当てはまる場合にのみ、ある要素Aは要素Bの先行要素という。
後行要素
BがAの先行要素である場合に限り、要素Aは要素Bの後行要素という。
著者
著者とは、文章および関連するスタイルシートを記述する人である。オーサリングツールとは、スタイルシートを生成するユーザーエージェントである。
ユーザー
ユーザーとは、文章および文章のスタイルシートを見る、聞く、別の方法で使用するユーザーエージェントと情報をやりとりする人のことである。ユーザーは、自分好みにエンコードした個人のスタイルシートを用意してよい。
ユーザーエージェント(UA)
ユーザーエージェントは、文書言語で記述された文書を解釈し、本仕様書の用語に従って関連するスタイルシートを適用する任意のプログラムである。ユーザーエージェントは、文章を表示したり、音声読み上げしたり、印刷したり、別のファイル形式に変換したりしてよい。
HTMLユーザーエージェントは、1つ以上のHTML仕様をサポートするものである。HTMLではなくXHTML[XHTML]をサポートするユーザーエージェントは、本仕様に適合する意味でHTMLユーザーエージェントとはみなさない。
プロパティ
CSSは、プロパティと呼ばれる有限集合のパラメータを定義する。プロパティは、文章のレンダリングを割り当てるものである。各プロパティは名前(たとえば、'color'、'font'、'border')と値(たとえば、'red'、'12pt Times'、'dotted')を持つ。プロパティは、特異性、カスケーディング、継承の仕組み(プロパティ値の割り当て、カスケーディングと継承の節を参照)によって、表示される文章のさまざまな部分および文章上のページに付属している。

HTMLで記述されたソース文章の例を以下に示す:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>   
  <TITLE>My home page</TITLE>
  <BODY>
    <H1>My home page</H1>
    <P>Welcome to my home page! Let me tell you about my favorite
        composers:
    <UL>
      <LI> Elvis Costello
      <LI> Johannes Brahms
      <LI> Georges Brassens
    </UL>
  </BODY>
</HTML>

これは下記のツリーに帰着する:

文章ツリー例   [説明]

HTML 4の定義によれば、たとえ"head"タグが文章ソース中に存在しなくても、HEAD要素は構文解析中に推定され、文章ツリーの一部となる。同様に、</p>や</li>タグがソース中に存在しないにもかかわらず、どこでP要素やLI要素が終了するかをパーサは認識する。

XHTML(および他のXMLベースの言語)で記述された文章は異なる動作をする: 推定される要素は一切存在せず、すべての要素は終了タグを持たなければならない。

3.2 ユーザエージェントの適合性

この節では、CSS 2.1仕様に限定した適合性を定義する。将来におけるCSSの他のレベルは、異なる機能集合に準拠することをユーザーエージェントに対して実装するよう要求してよい。

一般に、本仕様に適合を主張するユーザエージェントは、以下の項目は遵守しなければならない。

  1. 1つ以上のCSS 2.1のメディアタイプを認識しなければならない。
  2. 各ソース文書について、認識されたメディアタイプに適切なすべての関連するスタイルシートの取得を試みなければならない。すべての関連するスタイルシートを取得できない(たとえば、ネットワークのエラーのために)場合は、取得できたスタイルシートを用いて文章を表示しなければならない。
  3. 本仕様に従ってスタイルシートを解析しなければならない。特に、すべての@規則、ブロック、宣言、およびセレクタを認識しなければならない(CSS 2.1の文法を参照)。ユーザーエージェントがサポートするメディアタイプに有効なプロパティを検出した場合、ユーザエージェントはプロパティの定義に従って値を解析しなければならない。これは、ユーザエージェントがすべての妥当な値を引き受けなければならず、また不正な値を持つ宣言を無視しなければならないことを意味する。ユーザーエージェントは、サポートしないメディアタイプに適用される規則を無視しなければならない。
  4. 文章ツリー内の各要素に対して、ユーザーエージェントはプロパティの定義とカスケードと継承の規則に従って、すべてのプロパティの値を割り当てなければならない。
  5. ソース文書に代替スタイルシートの指定(たとえば、HTML 4[HTML4]の"alternate"キーワードなど)が付属している場合、ユーザーエージェントは、ユーザーにスタイルシートについての設定の選択を許可しなければならない。
  6. ユーザーエージェントは、ユーザーが著者スタイルシートの影響を切ることができるようにしなければならない。

しかし、すべてのユーザエージェントが全項目を順守しなければならないということではない:

特定のデバイスの制限のために本仕様の一部を実装することができないユーザエージェント(たとえば、ユーザエージェントはモノクロのモニタやページで色をレンダリングすることはできない)は、不適合を意味しない。

ユーザーエージェントは、ユーザーにユーザースタイルシートを含むファイルを指定できるようにしなければならない。ファイルの書き込みまたは指定の手段を持たない任意のデバイスで実行するユーザーエージェントは、この要件から免除される。さらに、ユーザーエージェントはユーザー設定を指定するために他の手段を提供することができる。たとえばGUIを介するなど。

CSS 2.1は、プロパティがフォームコントロールおよびフレームに適用されるかどうか、またどのようにCSSがスタイルに使用されるかを定義しない。ユーザエージェントは、これらの要素にCSSプロパティを適用してよい。著者は実験的なサポートとして扱うことが推奨される。CSSの将来のレベルはさらにこれを規定する可能性がある。

3.3 エラーの処理方法

一般に、本文章は仕様全体でのエラーの処理方法の動作を明確に規定する。例として、構文解析エラーの処理規定を参照のこと。

3.4 text/css content-type

別々のファイルに存在するCSSスタイルシートは、インターネットを通して、符号化情報を伴ったバイト列として送信される。メッセージ実体と呼ばれる伝送構造は、RFC 2045およびRFC 2616で定義される([RFC2045]および[RFC2616]を参照)。"text/css"のcontent-typeと一体になってメッセージ実体は独立したCSS文章を意味する。"text/css"content-typeはRFC 2318に登録されている([RFC2318])。