本節では,スタイルシートのリンクについて解説する。
link 要素とスタイルシート 外部に用意されたスタイルシート(のファイル)を読み込むのに link 要素を用いることができるのは,Let's begin XHTML の Section 16 で解説した。復習しておくと,CSS のスタイルシートを読み込む場合,これは,次のように書くものであった。
<link rel="stylesheet" type="text/css" href="URI" />
ここで,charset 属性によって,読み込むスタイルシートの文字エンコーディングを明示できる。ただし,CSS の場合,読み込んだファイルに @charset ルール(CSS2 以降でサポート;Hop step CSS の“5.6 CSS の記述と管理”を参照されたい)がある場合は,そちらが優先される。
<link rel="stylesheet" type="text/css" href="hsxh.css" charset="Shift_JIS" />
また,複数の link 要素で,複数のスタイルシートを読み込むことができる。このとき,CSS においては,同じ条件で複数の宣言が適用されうるとき,カスケーディングという仕組みに従って,あとに読み込んだほうのスタイルシート中の記述が優先される。
media 属性を使用することで,メディアに応じて適用させるスタイルシートを変えることができる。
たとえば,共通のスタイルシート“common.css”があり,ブラウザ表示用に“browser.css”,印刷用に“printer.css”を用意する場合,次のように記述する。
<link rel="stylesheet" type="text/css" href="common.css" />
<link rel="stylesheet" type="text/css" href="browser.css" media="screen" />
<link rel="stylesheet" type="text/css" href="printer.css" media="print" />
また,CSS では,メディアに応じた記述を,@media ルールおよびメディアを指定した @import ルール(いずれも CSS2 以降でサポート)でも行える。
これに関しては,Hop step CSS の“5.5 メディアへの対応”も参照されたい。
link 要素でスタイルシートを読み込ませる場合,title 属性は通常の意味とは異なり,スタイルシートの選択と切り替えに使用される。
切り替え不可能な(メディアが合致していればつねに適用される)スタイルシートには,title 属性を記述しない。今までの書き方は,この記法である。
一方,title 属性を伴うスタイルシートの読み込みは,選択・切り替えの対象になる。このとき,
rel="stylesheet" である場合,“おすすめの(既定の)”スタイルシートrel="alternate stylesheet" である場合,“選択可能な”スタイルシートを表す。
たとえば,既定の状態で“Color”という名前で“color.css”とし,“Monochrome”という名前で“monochro.css”と,“Hi-Contrast”という名前で“hi-cont.css”を選択可能にする場合は,
<link rel="stylesheet" type="text/css" title="Color" href="color.css" />
<link rel="alternete stylesheet" type="text/css" title="Monochrome" href="monochro.css" />
<link rel="alternate stylesheet" type="text/css" title="Hi-Contrast" href="hi-cont.css" />
と記述する。これに,選択に関わらず適用される“common.css”を加えると(これは title 属性を書かない),
<link ref="stylesheet" type="text/css" href="common.css" />
<link rel="stylesheet" type="text/css" title="Color" href="color.css" />
<link rel="alternete stylesheet" type="text/css" title="Monochrome" href="monochro.css" />
<link rel="alternate stylesheet" type="text/css" title="Hi-Contrast" href="hi-cont.css" />
のようになる。この記述によって,Netscpe 6 以降および Opera 8 以降で,図 23.1 のように切り替えのインタフェースが提供される(Opera 7 でも実装されているが,不完全である)。
なお,これは,media 属性と組み合わせても使用できる。メディアに応じて,または閲覧者の嗜好に応じて,適用させるスタイルシートを変えることができる。
ここでは,XML におけるスタイルシートについて触れておく。
XHTML 1.1 は,一般にメディアタイプ“application/xhtml+xml”で扱われるが,この場合,スタイルシートの読み込みを,xml-stylesheet プロセッシングインストラクション(PI)でも記述することがすすめられる。
ここで,PI とは,次のような書式を持つものである。
<?...?>
これはタグとは呼ばない。xml-stylesheet PI は,次のような書式である。これは,XHTML の本体(html 要素)より前にしか出現できない(ただし,XML 宣言より前に出現してはならない)。
<?xml-stylesheet type="メディアタイプ" href="URI"?>
たとえば,次の link 要素による CSS の読み込みは,直後の xml-stylesheet PI と等価である。
<link rel="stylesheet" type="text/css" href="mystyle.css" />
<?xml-stylesheet type="text/css" href="mystyle.css"?>
xml-stylesheet PI には,次のような擬似属性を与えることができる。
| 擬似属性名 | 属性値 | 備考 |
|---|---|---|
charset | 文字エンコーディング | href 擬似属性で示されたスタイルシートの文字エンコーディング |
title | 文字列 | 選択可能にする場合の,スタイルシートにつける名前 |
media | メディア | そのスタイルシートがどんなメディア向けかを表すキーワード |
alternate | キーワード | 選択可能なスタイルシートとするかを指定する;値は“yes”または“no”で,既定値は“no” |
charset,title および media 擬似属性は,link 要素で読み込むときのそれぞれ同名の属性に対応する。それで,alternate 擬似属性が“yes”のときは,link 要素で読み込むときに“rel="alternate stylesheet"”と指定するのと等価である(“no”のときは,“rel="stylesheet"”と等価)。
前項の最後に掲げた例と同等の xml-stylesheet PI を,この PI を書く位置を示すために XHTML ファイルの先頭から書くことにすると,次のようになる。
<?xml version="1.0" encodeing="Shift_JIS"?>
<?xml-stylesheet type="text/css" href="common.css"?>
<?xml-stylesheet type="text/css" title="Color" href="color.css"?>
<?xml-stylesheet type="text/css" title="Monochrome" href="monochro.css" alternate="yes"?>
<?xml-stylesheet type="text/css" title="Hi-Contrast" href="hi-cont.css" alternate="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" dir="ltr">
...以下略...