link

1. 基本情報

説明 他のリソースと関連づける
語源 LINK
所属モジュール Link
所属コンテントセット なし
内容 なし
内容の書式 EMPTY
関連項目 head
公式な実装 DTD

2. 属性

2-1. 一般属性

属性 属性値の型 説明
Common [属性コレクション]

XHTMLの要素が大抵持っている、一般的な属性を集めたコレクションです。

2-2. 固有属性

属性 属性値の型 説明
href URI (CDATA)

リンクするリソースのURIを指定します。

type ContentType (CDATA)

リンクするリソースのコンテントタイプを指定します。

charset Charset (CDATA)

リンクするリソースの文字エンコーディングを指定します。

hreflang LanguageCode (NMTOKEN)

リンクするリソースの言語を指定します。

rel LinkTypes (NMTOKENS)

この文書から見た「リンクするリソースは何であるか」を指定します。

rev LinkTypes (NMTOKENS)

リンクするリソースから見た「この文書は何であるか」を指定します。

media MediaDesc (CDATA)

この要素が適用されるべきメディアを指定します。

3. 解説

3-1. 概要

link要素は、現在の文書と他のリソースとの間の関係を表します。その種類によっては、ユーザーエージェントによって現在の文書を描画するのに使われる事もありますし、そうでなくても一部のユーザーエージェント(Operaなど)は簡単に関連リソースへアクセスする為の手段を用意してくれます。また、これらのメタデータはサーチエンジンが検索結果をより価値のあるものにする為に使われるかも知れません。

3-2. 順方向リンクと逆方向リンク

link要素には──a要素にもありますが──rel属性rev属性があります。rel属性は「現在の文書から見た」リンクで、順方向リンク (Forward Link)を、rev属性は「リンク先のリソースから見た」リンクで、逆方向リンク (Reverse Link)を表します。

リンク先のリソースはhref属性で示します。

[プログラムコード開始]

<!-- ある階層のchapter1.htmlの中で -->
<link rel="next" href="./chapter2.html"/>
<!-- あるいは、rev属性を使えば -->
<link rev="prev" href="./chapter2.html"/>
 
<!-- 同じ階層のchapter2.htmlの中で -->
<link rel="prev" href="./chapter1.html"/>
<!-- あるいは、rev属性を使えば -->
<link rev="next" href="./chapter1.html"/>

[プログラムコード終了]

rel属性rev属性は、同時に付ける事もできます。ただ、rev属性を使う機会はそんなに無いでしょう。

3-3. 外部スタイルシートの読み込み

style要素style属性で記述するのではなく、文書の外部に別のファイルとしてスタイルシートを記述する事には、幾つもの利点があります。

  • XHTML文書はHTML本来の用途(文書の構造をマークアップする事)に終始できるので、管理効率も上がり、ファイルサイズも小さくなる。
  • スタイルシートの再利用性を大きくし、複数の文書で統一的な見た目を維持するのに貢献する
  • 文書自体に手を加える事無く、外部スタイルシートに手を加えるだけで対応する要素の見た目を変えられる。
  • 同じ文書を使いながら、コンピュータのスクリーン用、印刷用、携帯機器用などと、デバイスに応じたスタイルを適用できる。
  • 同じ文書を使いながら、文書作成者の好むスタイルの他に、ユーザが自由に選択できる代替スタイルを提供できる。

つまり、一つの文書にしか適用されないスタイルシートがあるならばstyle要素を、あるいは、プログラムの出力時に棒グラフ画像の幅を変えたりするのだが、そのバリエーションが多すぎてclass属性style要素で対応するのが冗長になるという場合はstyle属性を使う利点はあります。しかし、その他の場合はlink要素で外部スタイルシートにリンクするのが最善の策です

3-3-1. 最も単純な読み込み

基本は簡単です。例えば、描画能力の高いコンピュータスクリーン用に、/stylesheet/exterior.cssというCSSで書かれた外部スタイルシートを読み込む場合、次の一行で済みます。

[プログラムコード開始]

<link rel="stylesheet" type="text/css" href="/stylesheet/exterior.css"/>

[プログラムコード終了]

3-3-2. 永続スタイルシート

前述のような記述で読み込まれるスタイルシートは、永続スタイルシート (Persistent Stylesheet。固定スタイルシートとも呼ばれる)と呼ばれます。永続スタイルシートは、閲覧者がその文書を見ている間、永続的に適用されます。

読み込む外部スタイルシートを永続させるには、rel属性stylesheetを使い、title属性を使わないようにします。

[プログラムコード開始]

<link rel="stylesheet" type="text/css" href="/stylesheet/persistent"/>

[プログラムコード終了]

永続スタイルシートは、次の場合に適用されなくなります。

  • type属性にサポートしていないスタイルシート言語が指定されている時。
  • media属性値に使用中のデバイスが含まれていない時。
  • 閲覧者が制作者スタイルシートを無効にした時。

3-3-3. 代替スタイルシート

代替スタイルシート (Alternate Stylesheet)は、閲覧者の好みに応じて適用されるスタイルシートです。例えば、森をイメージして作られたスタイルシート群を「森」という名前でグループ化し、ピラミッドの近くにいるかのようなイメージを持たせるスタイルシート群に「ピラミッド」という名前を付ければ、閲覧者は自分の好みに応じて「森」スタイルと「ピラミッド」スタイルを使い分ける事ができます。勿論これらは排他的で、例えば「森」スタイルを適用する時は「ピラミッド」グループのスタイルシートは適用されません。

読み込む外部スタイルシートを代替スタイルシートにするには、rel属性alternatestylesheetを含ませる──例えばalternate stylesheetを使い、title属性でスタイルのグループ名を付けます。

[プログラムコード開始]

<!-- 森スタイル -->
<link rel="alternate stylesheet" type="text/css" title="森" media="screen,print" href="/stylesheet/forest"/>
<link rel="alternate stylesheet" type="text/css" title="森" media="print" href="/stylesheet/forest-printable"/>
 
<!-- ピラミッドスタイル -->
<link rel="alternate stylesheet" type="text/css" title="ピラミッド" href="/stylesheet/pyramid"/>

[プログラムコード終了]

代替スタイルシートは、次の場合に適用されなくなります。

  • 閲覧者が他の代替スタイルシートを選択した時。
  • type属性にサポートしていないスタイルシート言語が指定されている時。
  • media属性値に使用中のデバイスが含まれていない時。
  • 閲覧者が制作者スタイルシートを無効にした時。

3-3-4. 優先スタイルシート

代替スタイルシートの中でも、スタイルシートの制作者が特に好んでいて、(最終的な決定は閲覧者に委ねるけれども)とりあえず最初はこのスタイルで見てほしいと思うスタイルがあるでしょう。代替スタイルシートの中で優先されるものは優先スタイルシート (Preferred Stylesheet)と呼ばれ、閲覧者が意図的に他の代替スタイルシートを選択しない限り適用されます。

読み込む外部スタイルシートを優先させるには幾つか方法がありますが、最も簡単なのはrel属性からalternateを取り除く事でしょう。勿論代替スタイルシートの一種なので、グループ名は付けておきます。

[プログラムコード開始]

<!-- 優先される森スタイル -->
<link rel="stylesheet" type="text/css" title="森" media="screen,print" href="/stylesheet/forest"/>
<link rel="stylesheet" type="text/css" title="森" media="print" href="/stylesheet/forest-printable"/>
 
<!-- 代替のピラミッドスタイル -->
<link rel="alternate stylesheet" type="text/css" title="ピラミッド" href="/stylesheet/pyramid"/>

[プログラムコード終了]

優先スタイルシートが適用されなくなるケースは、代替スタイルシートと同じです。即ち、次の場合に適用されなくなります。

  • 閲覧者が他の代替スタイルシートを選択した時。
  • type属性にサポートしていないスタイルシート言語が指定されている時。
  • media属性値に使用中のデバイスが含まれていない時。
  • 閲覧者が制作者スタイルシートを無効にした時。

3-3-5. どれが優先されるのか

代替スタイルシートの中で優先されるスタイルを決定する手段は、前述の通り幾つかあります。優先順位の高い方から順に、次のような手順で決定されます。

  1. http-equiv属性Default-Styleを持つmeta要素。複数あれば、最後に現れた指定を採用する。
  2. それが無ければ、HTTPヘッダのDefault-Styleフィールド。複数あれば、最後に現れた指定を採用する。
  3. それも無ければ、rel属性alternateが入っておらず、title属性を持っているlink要素のスタイル。title属性値の異なるスタイルグループが幾つかあれば、最初に現れたものを採用する。

3-4. 使用例

link要素は、rel属性(型はLinkTypesデータタイプ)によって色々なメタデータを提供する事ができます。特にalternateには、幾つも意味の暗示があります(慣習的に理解される事が期待できるだけなので、明示とは言えません)。

[プログラムコード開始]

<head>
<title>link : 文書との関係というメタデータ</title>
<!-- hreflang属性は、リンク先のリソースの言語を表す; alternateと一緒に使うと、同じ内容の翻訳版を意味する -->
<link rel="alternate" hreflang="en" title="英語版" href="./link.html.en"/>
<!-- xml:lang属性は「このlink要素の」言語を指定するので、混同しないように -->
<link rel="alternate" hreflang="de" xml:lang="de" title="Die Deutsche Auflage" href="./link.html.de"/>
<!-- media属性をalternateと一緒に使うと、別のデバイス用の代替リソースを意味する -->
<link rel="alternate" media="print" type="application/pdf" title="印刷用" href="./link.pdf"/>
<!-- type属性をalternateと一緒に使うと、別の形式の代替文書を意味するだろう -->
<link rel="alternate" type="text/plain" title="テキスト版" href="./link.txt"/>
<!-- よって、RSS Auto-Discoveryの指定方法は厳密ではない; 「代替」ではないから -->
<link rel="alternate" type="application/rss+xml" title="RSSフィード" href="./link.rdf"/>
<!-- alternateの他にも、慣習的に用いられる「関係」の語彙は存在する -->
<link rel="help" title="WWWWARDの歩き方" href="/help/"/>
</head>

[プログラムコード終了]

[link]
Published : 2006-03-26T09:00:00+09:00
Last Modified : 2007-02-25T17:18:48+09:00
Table of Contents : 要素目次
Index : 要素索引
Verified with : Valid XHTML 1.1
Copyright © 2006 - 2007  E+X.