スタイルシート
ソースドキュメント
ドキュメント言語
要素
本来の大きさ
属性
コンテント
無視
レンダリングされたコンテンツ
ドキュメント・ツリー
要素の親子関係
作成者
ユーザー
ユーザー・エージェント(UA)
プロパティ
ドキュメントの表示方法を指定する文(statements)の集合をスタイルシートと呼びます。
スタイルシートには「作成者」、「ユーザー」、「ユーザー・エージェント」の三つの起点(origins)があります。これらの三つのソースの相互作用については、値の継承で説明します。
スタイルシートが適用される文書を「ソースドキュメント」と呼びます。「ソースドキュメント」は、いくつかの言語によりエンコードされ、要素のツリーとして表現されます。各要素は、① 型を識別する名前、② 属性、③ コンテンツ で構成されます。属性は省略可能、コンテンツは空の場合もあります。
「ドキュメント言語」とは、ソースドキュメントをエンコードする言語です(例:HTML、XHTML, SVGなど)。CSSはドキュメント言語の表示方法を指定しますが、ドキュメント言語のセマンティックスは変更しません。
「要素」は、ドキュメント言語の主要構文構造の一つです。
CSSのスタイルシートの規則の多くは、要素の表示方法を指定するために、HTMLのP, TABLE, OLのような要素名を使います。画像、組み込みドキュメント、アプレットのような要素は、CSSのフォーマティングの範囲外にあるコンテンツとなります。
CSSフォーマティングの範囲外にあるコンテンツの例として、HTML要素やIMG要素のコンテンツがあります。これらのコンテンツは、しばしばそのsrc属性が指定するイメージに置き換えられます。このようにして置き換えられた要素の内容は、CSSレンダリングモデルでは考慮されません。
「要素」の詳しい意味は、ISO8879の定義に従います。
「本来の大きさ」とは、要素自体で定義された幅と高さのことです。CSSは、「本来の大きさ」がどのように見つけられるかを定義しません。CSS 2.1では、src属性などによって置き換えられた要素だけが「本来の大きさ」を持つことができます。信頼できる解像度情報のないラスタ画像では、画像ソースピクセルあたり1ピクセルのサイズが仮定されなければなりません。
「属性」とは要素に関連付けられた値で、名前とテキスト値によって構成されます。
CSS仕様における「コンテント」(コンテンツ)とは、ソースドキュメント内の要素に関連付けられた内容を意味します。一部の要素には内容が無く、その場合は「要素は空」と呼ばれます。要素の内容は、テキストの他にサブ要素を含むことができ、その場合その要素はそれらのサブ要素の親と呼ばれます。
「無視」(ignore)という言葉は、CSSこの仕様では異なる2つの意味を持ちます。
まず、スタイルシートで不正な構文が検出された場合、パーサーはスタイルシートの特定の部分を無視しなければなりません。そのための正確な規則は、「宣言とプロパティ」、「解析エラーを処理するためのルール」、「サポートされていない値」などのセクションで説明されているか、「無視」(ignore)という言葉が現れるテキストで説明されています。
第2に、ユーザエージェントは、たとえ構文が正しくても、スタイルシート内の特定のプロパティや値を無視することがあります。たとえば、table-column要素は列のフォントに影響を与えることができないため、フォントのプロパティは無視する必要があります。
「レンダリングされたコンテンツ」とは、関連するスタイルシートを適用してレンダリングした後の要素の内容を意味します。
src属性などによって置き換えられた要素のコンテンツがどのようにレンダリングされるかは、CSS仕様では定義されていません。
「レンダリングされたコンテンツ」は、要素の代替テキスト(例えば、「alt」属性の値)であってもよく、箇条書き、番号付けなど、スタイルシートによって暗黙的または明示的に挿入される項目を含むことができます。
「ドキュメント・ツリー」とは、ソース・ドキュメント中でエンコードされた要素のツリーを意味します。ルート以外の各要素は、必ず1つの親要素を持ちます。
子要素 | BがAの親である場合に限り、要素Aは要素Bの子と呼ばれます |
---|---|
子孫要素 | 要素Aは、(1)AがBの子である場合、または(2)AがBの子孫である要素Cの子である場合、要素Bの子孫と呼ばれます |
祖先要素 | BがAの子孫である場合に限り、要素Aは要素Bの祖先と呼ばれます |
兄弟要素 | BとAが同じ親要素を共有する場合に限り、要素Aは要素Bの兄弟と呼ばれます。 要素Aは、文書ツリーのBの前にある場合、前の兄弟です。 要素Bは、文書ツリーのAの後に来る場合、次の兄弟です |
先行要素 | 要素Aは、(1)AがBの祖先である場合、または(2)AがBの先行兄弟である場合に限り、要素Bの先行要素と呼ばれます |
後続要素 | 要素Aは、BがAの先行要素である場合にのみ要素Bの後続要素と呼ばれます |
CSSの仕様で「作成者」(author)とは、ドキュメントと関連するスタイルシートを書く人を意味します。オーサリングツールは、スタイルシートを生成するユーザー・エージェントに位置づけられます。
CSS仕様で「ユーザー」とは、ユーザー・エージェントと対話して、ドキュメントとその関連スタイルシートを表示、再生、または使用するユーザーです。ユーザは、個人の好みを符号化する個人的なスタイルシートを提供することができます。
「ユーザー・エージェント」は、ドキュメント言語で書かれたドキュメントを解釈し、関連するスタイルシートを適用するプログラムです。ユーザエージェントは、文書を表示したり、読み上げたり、印刷させたり、別の形式に変換したりすることができます。
HTML仕様をサポートするユーザー・エージェントは、「HTMLユーザー・エージェント」と呼ばれます。XHTMLをサポートするユーザー・エージェントは、HTMLユーザー・エージェントとはみなされません。
CSSは、ドキュメントのレンダリングを指示する、プロパティ(property)と呼ばれるパラメータセットを定義します。
各プロパティには、color、font, borderなどの「名前」と'red', '12pt'などの「値」があります。
プロパティは指定したり、カスケーティングや継承のメカニズムによってドキュメントの様々な部分に付けられます。
以下は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は次のようなツリー構造となっています。
HTML 4ではHEAD要素は解析中に推論され、HEADタグがドキュメント・ソースにない場合でもドキュメント・ツリーの一部に加えられます。同様に、パーサーはソースに p>タグと li>タグがなくても、P要素とLI要素がどこで終わるかを知っています。
しかし、XHTMLおよびその他のXMLベースの言語で書かれたドキュメントは、推定される要素はなく、すべての要素に終了タグが必要です。