このページでは,XHTML(HTML)とスタイルシートの関係について簡単な説明をします。
「スタイルシート(Style sheet)」とは,W3CのCSS 2.1仕様書(http://www.w3.org/TR/CSS21/)では,"A set of statements that specify presentation of a document."(文書の体裁を指定する命令セット),となっています。 これは何を意味するのでしょうか?まず,最初にスタイルシートと呼ばれるものを使用していないWebページの表示を見てみましょう。
この表示の場合,背景は白色,文字は黒色で表示されていますが, これは私のブラウザが勝手に設定した色を利用して表示したもので,ページ作成者(著者)の意図したものではありません。では,次に背景を黒色,文字を白色としてページ作成者(著者)が意図したページでの表示を見てみましょう。
この2つのページでは,文書の内容に違いはありませんが,背景色や文字色などのページの見栄えには違いがあります。このページの見栄え,すなわち体裁を指定するものをスタイルシートと呼んでいます。
スタイルシートを使用していない場合の表示でも,実際には,背景の色や文字の色,あるいは文字の大きさなどが適当に設定されて表示されます。これはブラウザ側の初期設定を使用したもので,Webページを作成するためにHTML(あるいはXHTML)のみを使用した場合です(言い換えればスタイルシートを使用していない,あるいはブラウザのスタイルシートを使用しているとも言えます)。つまり,HTMLが表現しているものは「文書の論理構造」であり,それが実際にどのように表示されるかは,ブラウザに左右され一定ではありません。
一方,スタイルシートは文書の体裁を指定するもので,これは「文書の物理構造」と呼ばれているものになります。このスタイルシートによって文書の物理構造と論理構造を分離して捉えることが可能となりました。現在の主流は,このような構造の分離という考え方が主流であり,そのためHTMLを記述する場合,それは文書の論理構造に注目すべきであり,物理構造とは切り離して考える必要があることに注意してください。
しかしながら,体裁の悪いページが好まれるわけもなく,そのためにはスタイルシートによる物理構造も考えなければなりません。つまり,これまでは単にWebページの作成と言う作業のみで捉えていたものを,論理的な面(ロジック)および物理的な面(レイアウト)からアプローチする必要があるということになります。
スタイルシートとは,これまで説明してきたとおり,Webページの見栄えに関する概念です。実際に,どのようにそれを実現するかの実装技術,つまりスタイルシートを記述するためのコンピュータ言語が必要とされます。このスタイルシート言語にも色々な種類があります。例えば,次のようなものがあります。
こうした「スタイルシート言語」のうち,現在広く使用されているものがCSSであり,スタイルシートの代名詞ともなっています。
「CSS」とは,"Cascading Style Sheets"の頭文字をとったもので,「カスケーディング・スタイル・シート」あるいは「カスケード・スタイル・シート」とも呼ばれるスタイルシート言語です(※ CSSはW3Cにより勧告されており,現在(2010.11.27)はCSS Level 2.1が勧告候補(Candidate Recommendation)となっています。)。このCSSは,以下のような特徴を持ったスタイルシート言語です。
CSSの最初のバージョンは「Cascading Style Sheets, level 1 (CSS1)」と呼ばれ,1996年にW3Cにより勧告されました。次に,「Cascading Style Sheets, level 2 (CSS2)」が,1998年に勧告され,この頃よりWebページの論理構造と物理構造の分離という考え方が広く用いられるようになってきました。もっとも新しい勧告は,CSS2をマイナーチェンジした「Cascading Style Sheets, level 2 revision 1 (CSS2.1)」が, 2009年現在に勧告候補となっています。また,勧告には至っていませんが「Cascading Style Sheets, level 3 (CSS3)」からは各モジュールごとに仕様が検討されています。
正確な用語の定義はW3C勧告の"3 Conformance: Requirements and Recommendations"において定義されていますが,(※ CSS 2.1の用語定義は,http://www.w3.org/TR/CSS21/conform.htmlにあります。)ここでは本書で使用する解釈を述べることにします。