本節では,スタイルシートのリンクについて解説する。
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">
...以下略...