link要素の使い方
HTML のhead要素の中で使われる要素の一つにlinkがありますが、きちんと実装しているブラウザが少なく、入門用の解説書でもほとんど触れられていないので、存在もあまり知られていません(最近ではスタイルシートのために少しずつ使われ始めているような)。ここでは、その基本的な役割と使い方を紹介します。
link要素タイプ
アンカー(a)要素は、文書の本文であるbody要素の中で、文書の特定箇所にハイパーリンクの始点や終点を設定し、利用者がそのリンクをたどれるようにする役割を持ちます。これに対し、link要素は文書全体についての情報を記述するhead要素の中に置かれ、HTML文書を前後の文書、スタイルシート、スクリプト、代替文書などの様々なリソースと結びつける働きをします。ブラウザなどのユーザーエージェントは、これを使ってナビゲーション・パレットを表示したり、自動的に正しい順番でファイルを印刷したりといった応用が可能です。
リンクタイプ
link要素はたいていの場合、リンクの関係を示すrel属性(あるいはrev属性)と、リンク先を指定するhref属性を組み合わせて使います。たとえば外部スタイルシートを指定するためには
<link rel
="stylesheet" href
="default.css" type="text/css" />
という形になります。rel属性の値はリンクタイプと呼ばれ、リンク先のリソースとの関係を表します。主なリンクタイプを示します。
- index
- 現在のドキュメントに対してインデックスを提供する文書へのリンクを示します。
- contents
- 現在のドキュメントに対して目次を提供する文書へのリンクを示します。
- next
- 順序が定められた一連の文書の中で、次の文書へのリンクを示します。
- prev
- 順序が定められた一連の文書の中で、前の文書へのリンクを示します。
- start
- 一連の文書の中の最初の文書へのリンクを示します。サーチエンジンのロボットなどが検索する際に、作品の途中のドキュメントへ直接リンクしてしまうことがよくありますが、この情報により、合わせて作品の最初へのリンクも提供できるようになります。linkとサーチエンジンの項を参照。
- stylesheet
- 別のファイルとして用意したスタイルシートを使う場合に記述します。
- alternate
hreflang
属性などと合わせて、ドキュメントの別バージョンへのリンクを用意します。linkとサーチエンジンの項を参照。- made
- これのみrev属性の値となります。ドキュメントの作者を示し、作者へのメールURLや、ホームページのURLが指定されます。*注
このほか、仕様書にはchapter, section, subsection, appendix, glossary, copyright, help, bookmarkが記載されています。これらのリンクタイプ設定をtitle属性とともに使うと、ブラウザはその内容を使ってメニューを構成することもできます。
linkとサーチエンジン
ドキュメントの作者は、link要素を使ってサーチエンジンに
- 別言語のバージョン
- 印刷用など他のメディアで使用するためのバージョン
- 複数のファイルからなる作品のトップページ
へのリンク情報を提供することができます。具体例を示します。
- 別言語のバージョンへのリンク
hreflang属性(つかえる言語コードはlang属性を参照)と組み合わせます。例えば、英語版へのリンクなら
<link rel="alternate"
hreflang="en"
title="The English version" href="foo-e.html" />といった具合です。
- 印刷用のバージョンへのリンク
media属性と組み合わせます。
<link rel="alternate"
media="print"
title="The PDF version" href="foo.pdf" />- 最初のページへのリンク
リンクタイプ
start
と組み合わせます。<link
rel="start"
title="The first chapter of the Style Guide" href="chp1.html" />
順方向リンクと逆方向リンク
リンクには始点と終点があり、その関係には方向性があります。その関係を表すために、link要素(およびa要素)では順方向リンクを示すrel属性、あるいは逆方向リンクのrev属性と、リンク先を指定するためにhref属性を用います。
rel
は始点(link要素のある=現在の=文書)から終点(hrefで指定されるリソース)への関係を示すために用います。たとえば、 <link rel="contents" href="toc.html" /> は「現在の文書から見て、目次(Table of Contents)にあたるのは"toc.html"という文書だ」ということを示します。rev
は、その逆に、終点のリソースから見た、現在の文書の関係を示します。たとえば、 <link rev="made" href="mailto: me@my.domain" /> ならば「このメールアドレス(を持つ人)から見て、この文書は自分が作成したものだ」ということになるようです。*注
また、relとrevはちょうど反対の意味を持つことになるので、文書Aと文書Bにおいて、
in DocA: <link href="DocB" rel="foo" /> in DocB: <link href="DocA" rev="foo" />
の両者は同じ関係を表すことになります。
これまでも一部で活用されてきたものとして、文書の前後関係を示す
itemscope="" itemprop="prev"
と
itemscope="" itemprop="next"
があります。
具体例として、章建てで構成されたドキュメントを第1章から順番に読んでもらうようなHTML文書を考えましょう。現在のドキュメントが第2章であるとします。この位置関係をファイルch2.htmlのhead要素内に記述すると
<link rel="prev" href="ch1.html" /> <link rel="next" href="ch3.html" />
となります。
注
prevとprevious
HTML 4.0 WDの最初のバージョンではrev="previous"
とされていましたが、のちにHTML 3.2までと同じ
rel="prev"
に変更されました。また、prevはpreviousとしてもきちんと解釈してくれるブラウザもあるようです。
rev="made" href="mailto:..."について
HTML 4.0の仕様書をよくみたら、最終勧告からはこのリンクタイプは削られていました。それでも、この方法で作者のメールアドレスを指定する方法は伝統的に使われてきたものなので、逆に新しいブラウザではサポートされたりしています。なお、なぜこれがrev="made"になるのかはあまりちゃんとした記述は見あたらず、「順方向リンクと逆方向リンク」セクションでの説明もこじつけ気味です。