リンク

リンクとは概念的なもので、a, area, link 要素によって生成されますが、一方が現在の Document となる、2 つのリソースの間のつながりを表します。HTML には 2 種類のリンクが存在します:

外部リソースへのリンク

これは、現在のドキュメントを補強するために使われることになるリソースへのリンクです。一般的に、ユーザーエージェントに酔って自動的に処理されます。

ハイパーリンク

これは、他のリソースへのリンクですが、一般的にはユーザーエージェントがユーザーに見せて、ユーザーがユーザーエージェントにそのリソースへナビゲートさせることができるようにします。

href 属性と rel 属性を持つ link 要素に対して、リンクは、rel 属性のキーワードにあわせて生成されなければいけません。キーワードはリンクタイプのセクションで定義されている通りです。

同様に、href 属性と rel 属性を持つ aarea 要素に対して、リンクタイプのセクションでキーワードに対して定義されている通り、リンクは、rel 属性のキーワードにあわせて生成されなければいけません。しかし、link 要素とは違い、href 属性を持つ aarea 要素でも、rel 属性を持たない、または、rel 属性がハイパーリンクを指定するものとして定義されているキーワードを一つも持たない場合は、ハイパーリンクも生成しなければいけません。これは、その要素のドキュメントを、その要素の href 属性によって与えられたリソースへリンクすることを超えて、ハイパーリンクは特別な意味を持たない(リンクタイプを持たない)ことを暗に示したのです。

ハイパーリンクは、そのハイパーリンクの処理セマンティクスを修正する 1 つ以上のハイパーリンク注記を持つことができます。

aarea 要素の href 属性は、潜在的にスペースで囲まれた妥当な URLとなる値を持たなければいけません。

aarea 要素の href 属性は必須ではありません。これらの要素が href 属性を持たない場合、それらはハイパーリンクを生成しません。

target 属性は、もし存在すれば、妥当なブラウジングコンテキスト名またはキーワードでなければいけません。これは、使われることになるブラウジングコンテキストの名前を与えます。ユーザーエージェントは、ハイパーリンクをたどるときに、この名前を使います。

ユーザーエージェントは、aarea 要素のアクティベーション・ビヘイビアが呼び出されたときに、そのハイパーリンクをナビゲーションに使うべきか、または、それが指定するリソースをダウンロードするべきか、に関してユーザーが指定できるようにすることができます。

ユーザー選択がない場合、デフォルトは、該当の要素に download 属性がなければナビゲーション、あれば、その指定されたリソースのダウンロードとするべきです。

ユーザー選択によって決定されたのか、その属性の存在を通して決定されたのかに関わらず、そのハイパーリンクはナビゲーションに使うと決定されたなら、ユーザーエージェントはそのハイパーリンクをたどらなければいけません。そのハイパーリンクをリソースのダウンロードに使うと決定されたなら、ユーザーエージェントはそのハイパーリンクをダウンロードしなければいけません。これらの用語は、以降のセクションで定義されています。

download 属性は、もし存在すれば、ウェブ制作者はそのハイパーリンクをリソースのダウンロードのために使われることを意図していることを示します。この属性は 1 つの値を持つことができます。その値は、もし指定するなら、ウェブ制作者が推奨するデフォルトのファイル名を指定します。これは、ローカルのファイルシステムにおけるリソースのラベル付けの際に利用されます。値に関しては制約はありませんが、ウェブ制作者は、ほとんどのファイルシステムにファイル名に使える句読点に制約があるため、ユーザーエージェントはそれに応じてファイル名を調整する可能性がある点に注意するべきです。

aarea 要素の rel 属性は、該当の要素がどんなタイプのリンクを生成するのかについて制御します。この属性の値は、スペース区切りトークン・セットでなければいけません。指定可能なキーワードとその意味は以降で定義されています。

rel 属性にはデフォルト値がありません。この属性が省略された、または、この属性に値がユーザーエージェントに認識されなければ、2 つの間にハイパーリンクがあるということ以外に、そのドキュメントは宛先のリソースとの間に特定の関係性を持ちません。

ハイパーリンクを生成する aarea 要素の hreflang 属性は、存在すれば、リンクされたリソースの言語を与えます。これは純粋に助言的なものにすぎません。この値は、妥当な BCP 47 言語タグでなければいけません。 [BCP47] ユーザーエージェントは、この値を信頼できるものとみなしてはいけません。リソースをフェッチする上で、ユーザーエージェントは、そのリソースへのリンクに含まれたメタデータではなく、そのリソースに関連付けられた言語情報だけを使って、その言語を決定しなければいけません。

type 属性は、存在すれば、リンクされたリソースの MIME タイプを与えます。これは純粋に助言的なものにすぎません。この値は、妥当な MIME タイプでなければいけません。ユーザーエージェントは、type 属性を信頼できるものとみなしてはいけません。リソースをフェッチする上で、ユーザーエージェントは、リンクに含まれたメタデータを使って、そのタイプを決定してはいけません。

ユーザーが要素 subject によって生成されたハイパーリンクをたどるとき、ユーザーエージェントは次の手順を実行しなければいけません:

  1. replace を、false とします。

  2. source を、対象の subject が関連付けられている Document オブジェクトを含むブラウジングコンテキストとします。

  3. ユーザーがハイパーリンクをたどるときに特定のブラウジングコンテキストを指定した、または、ユーザーエージェントが特定のブラウジングコンテキストをナビゲートすることによってハイパーリンクをたどるよう設定されているなら、target を、そのブラウジングコンテキストとします。

    そうでない場合、subjecttarget 属性を持つ a または area 要素なら、target を、ブラウジングコンテキスト名を与えてブラウジングコンテキストを選択する規則を適用することで選択されたブラウジングコンテキストとします。その際に、target 属性の値をブラウジングコンテキスト名として使います。この規則によって新たなブラウジングコンテキストを生成することになったら、replace を true にセットします。

    そうでない場合、targettarget 属性を持たない a または area 要素だけれども、その Documenttarget 属性を持つ base 要素を含んでいるなら、target を、ブラウジングコンテキスト名を与えてブラウジングコンテキストを選択する規則を適用することで選択されたブラウジングコンテキストとします。その際に、最初の base 要素の target 属性の値をブラウジングコンテキスト名として使います。この規則によって新たなブラウジングコンテキストを生成することになったら、replace を true にセットします。

    そうでない場合、target を、subject 自身がいるブラウジングコンテキストとします。

  4. 該当の要素の href 属性によって与えられた URL を、その要素に対して、解決します。

  5. それが成功したら、URL を、結果として得られた絶対 URLとします。

    そうでない場合、URL の解決が失敗したら、ユーザーエージェントは、ユーザーエージェント独自の方法でユーザーにエラーを報告しても構いませんし、エラーを報告するエラーページに targetブラウジングコンテキストナビゲートするタスクをキューイングしても構いませんし、エラーを無視して何もしなくても構いません。いずれの場合でも、ユーザーエージェントは、これらの手順を中止しなければいけません。

  6. サーバーサイドのイメージマップの場合は、ハイパーリンク・サフィックスURL に追加します。

  7. targetブラウジングコンテキストURLナビゲートするタスクをキューイングします。replace が true なら、そのナビゲーションは、置換有効で実行されなければいけません。そのソース・ブラウジングコンテキストは、source でなければいけません。

前述のタスクに対するタスクソースは、DOM 操作タスクソースです。

4.8.3 リソースのダウンロード

いくつかの場合において、リソースは、すぐに見るというより、後で使うことを目的としているものもあります。すぐに使うのではなく、リソースが後で使うことを目的としていることを示すために、そのリソースへのハイパーリンクを生成する a または area 要素に download 属性を指定することができます。

この属性には、値を指定することもできます。ユーザーエージェントがファイルシステムに該当のリソースを保存するときに使うことになるファイル名を指定することができます。この値より、Content-Disposition HTTP ヘッダーのファイル名パラメータのほうを優先することができます。 [RFC6266]

クロスオリジンの状況においては、download 属性は、考えうる不正な活動によってユーザーが警告されることがないように、Content-Disposition HTTP ヘッダーと併用されなければいけません。特に、disposition タイプが attachment の場合です。(これは、ユーザーが完全に理解しないままににセンシティブな個人情報や機密情報をダウンロードさせることから守るためです。)


ユーザーが要素によって生成されたハイパーリンクをダウンロードするとき、ユーザーエージェントは次の手順を実行しなければいけません:

  1. 要素の href 属性によって与えられた URL を、その要素に対して、解決します。

  2. URL の解決が失敗したら、ユーザーエージェントはユーザーエージェント独自の方法でユーザーにエラーを報告しても構いませんし、エラーを報告するエラーページにナビゲートしても構いませんし、エラーを無視して何もしなくても構いません。いずれの場合でも、ユーザーエージェントはこれらの手順を中止しなければいけません。

  3. そうでない場合は、URL を、その結果として得られた絶対 URL とします。

  4. サーバーサイドのイメージマップの場合は、URLハイパーリンク・サフィックスを追加します。

  5. これらの手順を呼び出したアルゴリズムに戻り、これらの手順を非同期に継続します。

  6. URLフェッチし、結果として得られたリソースをダウンロードとして扱います。

ユーザーエージェントがフェッチアルゴリズムから得られたリソースをダウンロードとして処理することになったとき、リソースが成功裏に取得できたなら、後で使えるようにするために、そのリソースを保存する手段をユーザーに提供するべきです。そうでなければ、ユーザーに、そのファイルのダウンロードに関する問題を報告するべきです。

ユーザーエージェントがダウンロードとして扱われるリソースに対してファイル名を必要とするなら、次のアルゴリズムを使ってそれを選択するべきです。

このアルゴリズムは、信頼できないサイトからのファイルダウンロードにまつわるセキュリティーリスクを減らすことを目的とされています。そして、ユーザーエージェントは、これに従うことを強く求められます。

  1. filename を、空の値とします。

  2. リソースが Content-Disposition ヘッダーを持つなら、そのヘッダーには、attachment disposition タイプが指定され、そのヘッダーにはファイル名情報が含まれますが、filename を、そのヘッダーによって指定された値とし、後述の サニタイズ とラベル付けされた手順に飛びます。 [RFC6266]

  3. interface origin を、もしあれば、そのダウンロードという結果になるダウンロードアクションまたはナビゲートアクションが初期化された Documentオリジンとします。

  4. resource origin を、ダウンロードされるリソースの URL のオリジンとします。ただし、もしその URL のスキーム部分が data なら、もしあれば、resource origin を、interface origin と同じにします。

  5. interface origin がなければ、trusted operation を true とします。ある場合、resource origininterface origin同一オリジンなら、trusted operation を true とし、そうでなければ false とします。

  6. trusted operation が true で、そのリソースが Content-Disposition ヘッダーを持ち、そのヘッダーにファイル名情報が含まれるなら、filename を、そのヘッダーによって指定された値として、後述の サニタイズ とラベル付けされた手順に飛びます。 [RFC6266]

  7. ダウンロードが a または area 要素によって生成されたハイパーリンクから初期化されなかった、または、ダウンロードが初期化されたときに、その初期化されたハイパーリンクの要素が download 属性を持っていなかった、または、その属性はあったものの、ダウンロードが初期化されたときのその値が空文字列だったなら、ファイル名の案がない とラベル付けされた手順に飛びます。

  8. proposed filename を、ダウンロードが初期化された時点で、そのダウンロードを初期化したハイパーリンクの要素の download 属性の値とします。

  9. trusted operation が true なら、filename を、proposed filename の値とし、後述の サニタイズ とラベル付けされた手順に飛びます。

  10. リソースが Content-Disposition ヘッダーを持ち、そのヘッダーが attachment disposition タイプを指定しているなら、filename を、proposed filename の値とし、後述の サニタイズ とラベル付けされた手順に飛びます。 [RFC6266]

  11. ファイル名の案がない: trusted operation が true、または、ユーザーが該当のリソースをダウンロードしたいと選択したなら、filename を、そのリソースの URL から、ユーザーエージェントが決めた方法で得られた値とします。そして、後述の サニタイズ とラベル付けされた手順に飛びます。

  12. ユーザーエージェントが決めた方法で、脅威の可能性があるクロスオリジンのダウンロードからユーザーを守る行動を取ります。そのダウンロードが中止されないことになれば、filename を、ユーザーが望むファイル名、または、ユーザーエージェントが選択したファイル名にセットします。そして、後述の サニタイズ とラベル付けされた手順に飛びます。

    このアルゴリズムがこのステップに到達したら、ダウンロードされたリソースとは違うオリジンからダウンロードが開始され、そのオリジンは、そのファイルをダンロードにとって適したものとして扱わず、そのダウンロードはユーザーによって初期化されなかったことになります。これは、ダウンロードを開始するために download 属性が使われたから、または、該当のリソースが、ユーザーエージェントがサポートするタイプではなかったからと考えられます。

    これは危険かもしれません。なぜなら、たとえば、敵意のあるサーバーは、ユーザーに意識させずにプライベートな情報をダンロードさせ、そのデータはその敵意のあるサーバーからだとユーザーに思わせることによって、その敵意のあるサーバーにそれを再アップロードさせようとするかもしれないからです。

    ゆえに、該当のリソースが違うソースから来たことを何らかの方法でユーザーに知らせることは、ユーザーのためになります。混乱を避けるためにも、脅威となる可能性がある interface origin から得られたファイル名は無視するべきです。

  13. サニタイズ: ユーザーが任意で filename を操作できるようにします。たとえば、ユーザーエージェントは、上記で決定した filename の値をデフォルト値として仮に提供したうえで、ユーザーにファイル名の決定を求めることができるでしょう。

  14. filename を、ローカルのファイルシステムに適合するよう調整します。

    たとえば、これによって、ファイル名として不適切な文字を削除したり、最初や最後にあるホワイトスペースを取り除いたりすることもあるでしょう。

  15. 該当のプラットフォームの慣例で、ファイルシステム上のファイルのタイプを決定する際に、まったくファイルの拡張子を使うことがないのであれば、filename をファイル名として返し、これらの手順を中止します。

  16. claimed type を、もし存在が分かっていれば、該当のリソースの Content-Type メタデータから得られるタイプとします。named type を、もし存在が分かっていれば、filename拡張子から得られるタイプとします。この手順において、type は、拡張子に結び付ける MIME タイプのマッピングです。

  17. named type がユーザーの選択と一致していれば(たとえば、filename の値がユーザーの選択によって決まったなどの場合)、filename をファイル名として返し、これらの手順を中止します。

  18. claimed typenamed type が同じタイプなら(つまり、リソースの Content-Type メタデータから得られたタイプが、filename拡張子から得られたタイプと一致しているなら)、filename をファイル名として返し、これらの手順を中止します。

  19. claimed type があるなら、filename の後ろに、claimed type に対応する拡張子を加えます。

    そうでない場合、named type が危険だと考えられているなら(たとえば、それが、そのプラットフォームの慣例で、ネイティブの実行ファイル、シェルスクリプト、HTML アプリケーション、実行型マクロ対応ドキュメントとして扱われる場合)、filename に、安全と分かっている拡張子(たとえば ".txt")を加えることができます。

    この最後の手順は、実行ファイルをダウンロードできないようにします。おそらく、できてしまうことは望まれないことしょう。いつものように、実装者は、この問題においては、セキュリティとユーザビリティとのバランスを取らざるを得ません。

  20. ファイル名として、filename を返す。

このアルゴリズムの目的のために、プラットフォームの慣例が求めるファイル名の一部から成るファイルの拡張子は、ファイルのタイプを識別するために使われるでしょう。たとえば、多くのオペレーティングシステムは、そのファイルのタイプを決定し、その結果から、そのファイルを開いたり実行したりする方法を決定するために、そのファイル名のうち最後のドット (".") の後に続く部分を使います。

ユーザーエージェントは、ユーザーのファイルシステムにその結果として得られたファイルを保存するべき場所を決定する際に、そのリソース自身やその URL や download 属性によって提供されるディレクトリやパス情報を無視するべきです。

4.8.4 リンクタイプ

次の表は、本仕様で定義されるリンクタイプをまとめたものです。この表は非準拠です。リンクタイプの本当の定義は、次のいくつかのセクションに書かれています。

このセクションでは、被参照ドキュメント という用語は、リンクを表す要素によって識別されるリソースを指します。そして、現在のドキュメント という用語は、リンクを表す要素が中に自分自身を見つけられるリソースを指します。

どのリンクタイプが link, a, area 要素に適用されるのかを決定するために、その要素の rel 属性は、スペースで区切られなければいけません。結果として得られたトークンは、その要素に適用するリンクタイプとなります。

他に規定が無い限り、キーワードは、rel 属性ごとに一回しか指定してはいけません。

リンクタイプは常に大文字と小文字を区別しませんので、次のように比較されなけれいけません。

ゆえに、rel="next"rel="NEXT" と同じです。

リンクタイプ 効果 概要
link aarea
alternate ハイパーリンク ハイパーリンク 現在のドキュメントの代替表現を与えます。
author ハイパーリンク ハイパーリンク 現在のドキュメントや記事の著者へのリンクを与えます。
bookmark 指定不可 ハイパーリンク 直近の祖先のセクションのパーマリンクを与えます。
help ハイパーリンク ハイパーリンク 文脈依存のヘルプへのリンクを提供します。
icon 外部リソース 指定不可 現在のドキュメントを表すためのアイコンをインポートします。
license ハイパーリンク ハイパーリンク 現在のドキュメントのメインのコンテンツは、被参照ドキュメントによって記述されたコピーライトライセンスが及ぶことを示します。
next ハイパーリンク ハイパーリンク 現在のドキュメントはシリーズの一部であり、そのシリーズの次のドキュメントは被参照ドキュメントであることを示します。
nofollow 指定不可 注記 現在のドキュメントの原著作者または出版社は、被参照ドキュメントを是認していないことを示します。
noreferrer 指定不可 注記 ユーザーがそのハイパーリンクをたどる際に、ユーザーエージェントに HTTP Referer (sic) ヘッダーを送信しないよう要求します。
prefetch 外部リソース 外部リソース 対象のリソースは事前にキャッシュされるべきであると指定します。
prev ハイパーリンク ハイパーリンク 現在のドキュメントはシリーズの一部であり、そのシリーズの前のドキュメントは被参照ドキュメントであることを示します。
search ハイパーリンク ハイパーリンク 現在のドキュメントとその関連ページを通して検索するために使われることができるリソースへのリンクを与えます。
stylesheet 外部リソース 指定不可 スタイルシートをインポートします。
tag 指定不可 ハイパーリンク 現在のドキュメントに適用するタグ(指定アドレスによって識別されます)を与えます。

以下に説明するいくつかのタイプは、それらの値に対する同義語を列挙しています。これらは、ユーザーエージェントが指定したものとして処理されるものですので、ドキュメントの中で使ってはいけません。

4.8.4.1 リンクタイプ "alternate"

alternate キーワードは link, a, area 要素で使うことができます。

このキーワードの意味は、他の属性の値に依存します。

該当の要素が link 要素であり、かつ、その rel 属性がキーワード stylesheet も含んでいる場合

alternate キーワードは、stylesheet キーワードの意味を、そのキーワードで説明されているとおりに、変更します。alternate キーワードは、それ自身のリンクを生成しません。

alternate キーワードが、値 application/rss+xml、または、値 application/atom+xml にセットされた type 属性とともに使われる場合

このキーワードは、シンジケーションフィードを参照するハイパーリンクを生成します(現在のページとまったく同じコンテンツを配信している必要はありません)。

application/rss+xml、または、値 application/atom+xml にセットされた type 属性を持ち、alternate キーワードを持った、ドキュメントで(ツリー順で)最初の link, a, area 要素は、フィード自動検出の目的のため、デフォルトのシンジケーションフィードとして扱われなければいけません。

次の link 要素は、現在のページのシンジケーションフィードを与えます:

<link rel="alternate" type="application/atom+xml" href="data.xml">

次は、さまざまな異なるシンジケーションフィードを与えます:

<p>Atom フィードを使って、惑星データベースにアクセスすることができます。:</p>
<ul>
 <li><a href="recently-visited-planets.xml" rel="alternate" type="application/atom+xml">最近訪れた惑星</a></li>
 <li><a href="known-bad-planets.xml" rel="alternate" type="application/atom+xml">既知の悪い惑星</a></li>
 <li><a href="unexplored-planets.xml" rel="alternate" type="application/atom+xml">未開の惑星</a></li>
</ul>
上記以外の場合

このキーワードは、現在のドキュメントの代替表現を参照するハイパーリンクを生成します。

被参照ドキュメントの性質は、hreflangtype 属性によって与えられます。

alternate キーワードが hreflang 属性とともに使われ、かつ、その属性の値がルート要素言語と違うなら、それは、その被参照ドキュメントは翻訳されたことを示します。

alternate キーワードが type 属性とともに使われたなら、それは、被参照ドキュメントは指定フォーマットによる現在のドキュメントの再構成物であることを示します。

hreflangtype 属性は、alternate キーワードが指定されたときに、組み合わせることができます。

たとえば、次のリンクは、PDF フォーマットを使ったフランス語訳です:

<link rel=alternate type=application/pdf hreflang=fr href=manual-fr>

この関係性は遷移的です。つまり、ドキュメントがリンクタイプ "alternate" を伴う 2 つの他のドキュメントへリンクするなら、それらのドキュメントは最初のドキュメントの代替表現であることを暗に示していることに加え、それら 2 つのドキュメントはお互いの代替表現であることも暗に示すことになります。

author キーワードは link, a, area 要素で使うことができます。このキーワードはハイパーリンクを生成します。

aarea 要素では、author キーワードは、被参照ドキュメントは、ハイパーリンクを定義する要素の直近の祖先の article 要素があればその著者に関するさらなる情報を、なければページ全体の著者に関する追加的な情報を提供することを示します。

link 要素では、author キーワードは、被参照ドキュメントは、ページ全体の著者に関するさらなる情報を提供することを示します。

"被参照ドキュメント" は、著者の電子メールアドレスを与える mailto: URL になることができますし、よくそう使われます。 [MAILTO]

類義語: 歴史的な理由から、ユーザーエージェントは、値が "made" となる rev 属性を持つ link, a, area 要素も、author キーワードがリンクの関係性として指定されているとして扱わなければいけません。

bookmark キーワードは、aarea 要素で使うことができます。このキーワードはハイパーリンクを生成します。

bookmark キーワードは、該当のリンクしている要素から見て、祖先に article 要素があれば、その直近の article 要素の、なければ、該当のリンクしている要素と最も密接に関連付けられているセクションのパーマリンクを与えます。

次のスニペットには 3 つのパーマリンクがあります。ユーザーエージェントは、どこにパーマリンクが与えられているかを探すことで、どのパーマリンクが、本仕様のどの部分に当てはまるのかを決定できるでしょう。

 ...
 <body>
  <h1>パーマリンクの例</h1>
  <div id="a">
   <h2>1つ目の例</h2>
   <p><a href="a.html" rel="bookmark">このパーマリンクは、
   1つ目のH2から2つ目のH2までのコンテンツにだけに当てはまります。</a>. DIVは、
   正確にはそのようなセクションではありませんが、大雑把に言えば、それに相当します。</p>
  </div>
  <h2>2つ目の例</h2>
  <article id="b">
   <p><a href="b.html" rel="bookmark">このパーマリンクは、
   外側のARTICLE要素に当てはまります</a> (たとえばブログポスト)。</p>
   <article id="c">
    <p><a href="c.html" rel="bookmark">このパーマリンクは、
    内側のARTICLE要素に当てはまります</a> (たとえばブログコメント)。</p>
   </article>
  </article>
 </body>
 ...

help キーワードは、link, a, area 要素で使うことができます。このキーワードはハイパーリンクを生成します。

aarea 要素では、help キーワードは、被参照ドキュメントは、そのハイパーリンクを定義している要素の親とその中の子に関する追加的なヘルプ情報を提供することを示します。

次の例では、フォームコントロールが関連の文脈依存のヘルプを持っています。ユーザーエージェントはこの情報を使って、たとえば、ユーザーが "Help" や "F1" キーを押したら被参照ドキュメントを表示することができるでしょう。

 <p><label> トピック: <input name=topic> <a href="help/topic.html" rel="help">(ヘルプ)</a></label></p>

link 要素では、help キーワードは、被参照ドキュメントはページ全体に関するヘルプを提供することを示します。

aarea 要素では、ブラウザーによっては、help キーワードがあると、該当のリンクで異なるカーソルを表示します。

4.8.4.5 リンクタイプ "icon"

icon キーワードは link 要素で使うことができます。このキーワードは外部リソースのリンクを生成します。

指定されたリソースはページやサイトを表すアイコンです。そのページをユーザーインタフェースに表すときにユーザーエージェントによって使われるべきです。

アイコンには、聴覚的なアイコンや視覚的なアイコンなどがありえます。複数のアイコンが提供される場合、ユーザーエージェントは、type, media, sizes 属性に従って、最も適切なアイコンを選択しなければいけません。同じくらいに適切なアイコンが複数あれば、ユーザーエージェントは、ユーザーエージェントがアイコンのリストを集めた時点で、ツリー順で最後に宣言されたものを使わなければいけません。ユーザーエージェントがアイコンを使おうとしたけれども、よく調べてみたら、そのアイコンは本当は不適切だったと分かったら(たとえば、それが未サポートの形式を使っていたときなど)、ユーザーエージェントは、先ほど属性によって調べたときに次に適切だったアイコンを試さなければいけません。

ユーザーエージェントは、アイコンのリストが変更されても、アイコンをアップデートすることは必須とされませんが、そうすることが推奨されます。

icon キーワードによって与えられたリソースに対するデフォルトのタイプはありません。しかし、リソースのタイプの決定においては、ユーザーエージェントは、そのリソースは画像だと期待しなければいけません。

sizes 属性はビジュアルメディア向けのアイコンのサイズを与えます。その値は、存在すれば、単に助言的なものに過ぎません。ユーザーエージェントは、複数のアイコンが利用可能な場合にどのアイコンを使うかを決めるために、この値を使うことができます。

もし指定されたら、この属性は、大文字と小文字を区別せずに、ユニークなスペース区切りトークンの非順序セットとなる値を持たなければいけません。それぞれの値は、大文字と小文字を区別せずに文字列 "any" に一致するか、または、先頭に "0" (U+0030) 文字がこない 2 つの妥当な非負整数と、その 2 つを分けて間に、ひとつの U+0078 LATIN SMALL LETTER X または U+0058 LATIN CAPITAL LETTER X 文字が挿入された値に一致しなければいけません。

このキーワードは、ローピクセル(CSS ピクセルとは違います)でアイコンのサイズを表します。

50 CSS ピクセル幅となるアイコンは、CSS ピクセルあたり 2 デバイスピクセルのデバイスピクセル密度のディスプレイを対象としているなら (2x, 192dpi) 、100 ローピクセルの幅を持つことになります。この機能は、他の異なるリソースがあった場合に、それが小さな高解像度アイコン vs 大きな低解像度アイコン (たとえば、50×50 2x vs 100×100 1x) のために使われる、ということを指示することには対応していません。

この属性の値をパースして処理するために、ユーザーエージェントは、まず最初にこの属性の値をスペースで分割してから、その結果として得られたキーワードごとにパースして、それぞれが何を表しているのかを決定しなければいけません。

any キーワードは、該当のリソースがスケーラブルなアイコンを含んでいることを表します。たとえば、SVG 画像によって提供された場合などです。

他のキーワードは、それらが何を表しているのかを決定するために、次のようにさらにパースされなければいけません:

  • キーワードに正確に 1 つの U+0078 LATIN SMALL LETTER X または U+0058 LATIN CAPITAL LETTER X 文字が含まれていないなら、このキーワードは何も表しません。そのキーワードに対するこれらの手順を中止します。

  • width string を、"x" または "X" の前の文字列とします。

  • height string を、"x" または "X" の後ろの文字列とします。

  • width string または height string が "0" (U+0030) 文字で始まっているか、または、ASCII 数値以外の文字を含んでいるなら、このキーワードは何も表しません。このキーワードに対するこれらの手順を中止します。

  • width string非負整数をパースする規則を適用して、width を取得します。

  • height string非負整数をパースする規則を適用して、height を取得します。

  • このキーワードは、該当のリソースが、width デバイスピクセルの幅と、height デバイスピクセルの高さを持つビットマップアイコンを含んでいることを表します。

sizes 属性に指定されたキーワードは、リンクされたリソースで実際には利用できないアイコンのサイズを表してはいけません。

icon キーワードを持った link がない場合、ユーザーエージェントは、HTTP または HTTPS で得られた Document に対して、代わりに、URL "/favicon.ico" をそのドキュメントのアドレスに対して解決して、そこから得られた絶対 URL からアイコンをフェッチして使うことができます。あたかも、そのページが、アイコンは icon キーワードを使うと宣言していたかのように。

次のスニペットは、いくつかのアイコンを持つアプリケーションの冒頭部分を示しています。

<!DOCTYPE HTML>
<html>
 <head>
  <title>lsForums — Inbox</title>
  <link rel=icon href=favicon.png sizes="16x16" type="image/png">
  <link rel=icon href=windows.ico sizes="32x32 48x48" type="image/vnd.microsoft.icon">
  <link rel=icon href=mac.icns sizes="128x128 512x512 8192x8192 32768x32768">
  <link rel=icon href=iphone.png sizes="57x57" type="image/png">
  <link rel=icon href=gnome.svg sizes="any" type="image/svg+xml">
  <link rel=stylesheet href=lsforums.css>
  <script src=lsforums.js></script>
  <meta name=application-name content="lsForums">
 </head>
 <body>
  ...

歴史的な理由のため、icon キーワードの前に、キーワード "shortcut" を置くことができます。もし "shortcut" キーワードが存在すれば、それは icon キーワードの直前に来なければいけません。そして、2 つのキーワードはひとつの U+0020 SPACE 文字だけで分離されなければいけません。

license キーワードは link, a, area 要素で使うことができます。このキーワードはハイパーリンクを生成します。

license キーワードは、被参照ドキュメントは、現在のドキュメントのメインコンテンツの提供にかかるコピーライトライセンス条項を提供していることを示します。

本仕様は、main 要素を通して、ドキュメントのメインコンテンツと、そのメインコンテンツの一部とみなされないコンテンツを定義します。それはユーザーにはっきりと区別させるべきです。

写真共有サイトを考えてみましょう。そのサイトのページは、写真を表示し、それを説明します。そのページは次のようにマークアップされるでしょう:

<!DOCTYPE HTML>
<html>
 <head>
  <title>Exampl Pictures: 猫</title>
  <link rel="stylesheet" href="/style/default">
 </head>
 <body>
  <h1>Kissat</h1>
  <nav>
   <a href="../">写真インデックスに戻る</a>
  </nav>
  
  <main>
  <figure>
   <img src="/pix/39627052_fd8dcd98b5.jpg">
   <figcaption>猫</figcaption>
  </figure>
  <p>うち一匹の足に6本の指がある!</p>
  <p><small>この写真は <a rel="license" href="http://www.opensource.org/licenses/mit-license.php">MIT Licensed</a>です。</small></p>
  </main>
  <footer>
   <a href="/">ホーム</a> | <a href="../">写真インデックス</a>
   <p><small>© copyright 2009 Exampl Pictures. All Rights Reserved.</small></p>
  </footer>
 </body>
</html>

この場合、このライセンスは、ドキュメント全体ではなく、写真だけに適用されます(ドキュメントのメインコンテンツ)。ページのデザインそのものには当然ながら適用されません。それはドキュメントの下部で与えられているコピーライトが受け持つものです。これは、使用許諾を指すテキストで明確にするべきです。また、スタイリングでも明確にすることができるでしょう(たとえば、ライセンスのリンクをその写真の近くに分かりやすいように配置する一方で、ページのコピーライトはページの下部で小さいテキストにしたり、main 要素に枠線を加えたりするなど)。

同義語: 歴史的な理由のため、ユーザーエージェントは、キーワード "copyright" を license キーワードのように扱わなければいけません。

nofollow キーワードは aarea 要素で使うことができます。このキーワードはハイパーリンクを生成しませんが、その要素によって生成された他のハイパーリンク(他のキーワードがハイパーリンクを生成しない場合は、暗黙的なハイパーリンク)に注記します。

nofollow キーワードは、そのページの原著作者や出版社がそのリンクを是認していない、または、被参照ドキュメントへのリンクは、おもにその 2 つのページに関わる人たちの間の商売上の関係のために入れられた、ということを示します。

noreferrer キーワードは aarea 要素で使うことができます。このキーワードはハイパーリンクを生成しませんが、その要素によって生成された他のハイパーリンク(他のキーワードがハイパーリンクを生成しない場合は、暗黙的なハイパーリンク)に注記します。

これは、そのリンクをたどるときにリファラ情報を漏らさないようにすべき、ということを示します。

ユーザーエージェントが noreferrer キーワードを持つ a または area 要素によって定義されたリンクをたどるなら、ユーザーエージェントは、そのリクエストに Referer (sic) HTTP ヘッダー(他のプロトコルならそれに相当するもの)を含めてはいけません。

このキーワードは、そのハイパーリンクが新たなブラウジングコンテキストを生成するなら、opener 属性を null のままにします

prefetch キーワードは link, a, area 要素で使うことができます。このキーワードは外部リソースのリンクを生成します。

prefetch キーワードは、かなりの確率でユーザーが指定のリソースを求めるであろうから、そのリソースを事前にフェッチしてキャッシュほうが都合が良さそうだ、ということを示します。

prefetch キーワードによって与えられるリソースには、デフォルトのタイプはありません。

search キーワードは link, a, area 要素で使うことができます。このキーワードはハイパーリンクを生成します。

search キーワードは、被参照ドキュメントは、とりわけ該当のドキュメントとそれに関連するリソースを検索するためのインタフェースを提供する、ということを示します。

link 要素と search リンクタイプを使って、ブラウザーが検索インタフェースを自動検知できるようにするために、OpenSearch 説明ドキュメントを使うことができます。 [OPENSEARCH]

stylesheet キーワードは link 要素で使うことができます。このキーワードは、スタイリング処理モデルに寄与する外部リソースのリンクを生成します。

指定されたリソースは、ドキュメントをどのように見せるのかを記述したリソースです。正確には、そのリソースがどのように処理されるべきかは、実際のリソースのタイプに依存します。

link 要素に alternate キーワードも指定されていれば、 そのリンクは代替スタイルシートとなります。この場合、空でない値を持った title 属性が link 要素に指定されなければいけません。

stylesheet キーワードによって与えられるリソースのデフォルトのタイプは、text/css です。

リソースを取得する適切なタイミングは以下のとおりです:

Quirk: ドキュメントが Quirks モードにセットされ、外部リソースの URL と同じオリジンを持ち、外部リソースの Content-Type メタデータが対応スタイルシートのタイプでなければ、ユーザーエージェントは、それが text/css だと見なさなければいけません。

tag キーワードは aarea 要素で使うことができます。このキーワードはハイパーリンクを生成します。

tag キーワードは、被参照ドキュメントが表す タグ は現在のドキュメントに当てはまる、ということを示します。

これはタグが現在のドキュメントに当てはまることを示すので、タグクラウドのマークアップでこのキーワードを使うのは不適切でしょう。それはまとまったページをまたがって人気があるタグを並べたものだからです。

このドキュメントは宝石用原石 (gems) についてですので、米国の町や、Ruby パッケージ形式や、スイスの機関車ではなく、宝石の "jewel" にそれが当てはまるように曖昧さを残さずに分類するために、"http://en.wikipedia.org/wiki/Gemstone" でタグ付けされています:

<!DOCTYPE HTML>
<html>
 <head>
  <title>私の大切なもの</title>
 </head>
 <body>
  <header><h1>私の大切なもの</h1> <p>2012年夏</p></header>
  <p>最近、赤色の宝石用原石をやっと処分しました。それはこれまで私を悩ませ続けて
  きたものでした。今はもっと良い青色のサファイアを持っています。</p>
  <p>その赤色の宝石用原石は、私がオフィスの地面を掘り出していたときに、ボーキサイト鉱石の
  中から見つかったものです。しかし、誰もそれをどかそうとする人がいませんでした。
  同じ赤色の宝石用原石が文字とおり何年もそこにあったのです。</p>
  <footer>
   Tags: <a rel=tag href="http://en.wikipedia.org/wiki/Gemstone">宝石用原石</a>
  </footer>
 </body>
</html>

このドキュメントには、2 つの記事があります。しかし、"tag" リンクはページ全体に当てはまっています(それがどこに置かれてもそうなるでしょう。たとえ、それを article 要素の中に入れたとしてもです)。

<!DOCTYPE HTML>
<html>
 <head>
  <title>Gem 4/4</title>
 </head>
 <body>
  <article>
   <h1>801: Steinbock</h1>
   <p>機番 801 Gem 4/4 電気式ディーゼルはアイベックスのエンブレムを持ち、2002年に大規模な改修が行われました。</p>
  </article>
  <article>
   <h1>802: Murmeltier</h1>
   <figure>
    <img src="http://upload.wikimedia.org/wikipedia/commons/b/b0/Trains_de_la_Bernina_en_hiver_2.jpg"
         alt="802は赤色でパンタグラフと両側には縦に長い通気口がある。">
    <figcaption>1980年代の802、Lago Biancoにて</figcaption>
   </figure>
   <p>機番 802 Gem 4/4 電気式ディーゼルはマーモットのエンブレムを持ち、2003年に大規模な改修が行われました。</p>
  </article>
  <p class="topic"><a rel=tag href="http://en.wikipedia.org/wiki/Rhaetian_Railway_Gem_4/4">Gem 4/4</a></p>
 </body>
</html>

ドキュメントによっては、ドキュメントのシーケンスの一部を形成するものがあります。

ドキュメントのシーケンスとは、それぞれのドキュメントが previous siblingnext sibling を持つことができるものです。previous sibling を持たないドキュメントはそのシーケンスの始まりで、next sibling を持たないドキュメントはそのシーケンスの終わりです。

ドキュメントは複数のシーケンスの一部になることができます。

next キーワードは link, a, area 要素で使うことができます。このキーワードはハイパーリンクを生成します。

next キーワードは、そのドキュメントはシーケンスの一部であり、そのリンクはそのシーケンスの中で次になる論理的なドキュメントとなるドキュメントへ導いている、ということを示します。

prev キーワードは link, a, area 要素で使うことができます。このキーワードはハイパーリンクを生成します。

prev キーワードは、そのドキュメントはシーケンスの一部であり、そのリンクはそのシーケンスの中で前になる論理的なドキュメントとなるドキュメントへ導いている、ということを示します。

同義語: 歴史的な理由のため、ユーザーエージェントは、キーワード "previous" も prev キーワードのように扱わなければいけません。

定義済みリンクタイプを拡張したいなら、Microformats Wiki の existing-rel-values のページで登録することができます。 [MFREL]

誰でもいつでも自由に Microformats Wiki の existing-rel-values のページを編集して、タイプを追加することができます。拡張タイプは、次の情報とともに指定しなければいけません:

Keyword

定義される実際の値です。この値は他の定義済みの値に似た紛らわしいものにするべきではありません(たとえば、大文字と小文字が違うだけ、など)。

また、この値に ":" (U+003A) が含まれるなら、それは絶対 URL でなければいけません。

Effect on... link

次のいずれか一つです:

Not allowed
そのキーワードは link 要素で指定されてはいけません。
Hyperlink
そのキーワードは link 要素で指定することができ、ハイパーリンクを生成します。
External Resource
そのキーワードは link 要素で指定することができ、外部リソースのリンクを生成します。
Effect on... a and area

次のいずれか一つです:

Not allowed
そのキーワードは aarea 要素で指定されてはいけません。
Hyperlink
そのキーワードは aarea 要素で指定することができ、ハイパーリンクを生成します。
External Resource
そのキーワードは aarea 要素で指定することができ、外部リソースのリンクを生成します。
Hyperlink Annotation
そのキーワードは aarea 要素で指定することができ、その要素によって生成された他のハイパーリンク注記します。
Brief description

そのキーワードが何を意味するのかに関する短い非規定の説明です。

Specification

そのキーワードのセマンティクスのより詳細な説明と要件へのリンクです。それは、Wiki 上の別のページでも構いませんし、外部ページへのリンクでも構いません。

Synonyms

まったく同じ処理要件を持つ他のキーワードの値のリストです。ウェブ制作者は、同義語で定義された値を使うべきではありません。それらは、ユーザーエージェントが古いコンテンツをサポートするため使われることを想定しているに過ぎません。誰でも、実際に使われていない同義語を削除することができます。古いコンテンツとの互換性のために同義語として処理される必要がある名前は、このようにして登録されることになります。

Status

次のいずれかひとつです:

Proposed
そのキーワードは広く査読も受けてなく同意も得られていません。誰かがそれを提案し、それが使われている、または、使われるであろう、という状態です。
Ratified
そのキーワードは広く査読を受け同意を得た状態です。そのキーワードを使うページをどう処理するのかを、それを間違った使い方をしたときも含めて、明確に定義する仕様があります。
Discontinued
そのキーワードは広く査読を受け、これまでも必要とされてきている分かっているものです。既存のページではこのキーワードが使われていますが、新たなページでは避けるべきです。"brief description" と specification" に、もしあれば、ウェブ制作者は代わりに何を使うべきかについて、詳細が掲載されています。

キーワードが既存の値と重複していることが分かったら、それは削除され、既存の値の同義語としてリストされるべきです。

キーワードが使われることなく仕様化されることもなく一ヶ月の間 "proposed" で登録されたままなら、それはレジストリから削除されるかもしれません。

キーワードが "proposed" 状態で追加され、既存の値との重複が見つかったら、それは削除され、既存の値に対する同義語としてリストされるべきです。キーワードが "proposed" 状態で追加され、害があると分かったら、それは "discontinued" 状態に変更されるべきです。

誰でもいつでもその状態を変更することができますが、前述の定義に従ってそうするべきです。

準拠チェッカーは、Microformats Wiki の existing-rel-values のページで与えられる情報を使って、値が許可されたものかそうでないかを確定することができます。この仕様で定義された値や、"proposed" や "ratified" と書かれた値は、"Effect on..." の説明に当てはまる要素で使われるとき、受け入れられなければいけません。一方、"discontinued" と書かれた値や、U+003A COLON 文字を含んでいないけれども、本仕様または前述のページのいずれでも取り上げられていない値は、正しくないものとして報告されなければいけません。残りの値は、それらが US-ASCII 文字だけを含んだ絶対 URL なら、正しいものとして受け入れられなければいけません。そうでなければ拒否されなければいけません。準拠チェッカーは、この情報をキャッシュすることができます(たとえば、パフォーマンスの理由や、不安定なネットワーク接続での利用を避けるため)。

注意: URL を値とするリンクタイプは、ASCII の大文字と小文字を区別せずに比較されます。バリデータは、コロンを含んだリンクタイプの pre-case-folded 形式では、U+0041 (LATIN CAPITAL LETTER A) から U+005A (LATIN CAPITAL LETTER Z) までの文字について警告することを選ぶかもしれません。

ウェブ制作者が、本仕様にも Wiki ページにも定義されていない新たなタイプを使うとき、準拠チェッカーは、前述の詳細を添えて、ステータス を "proposed" にして Wiki にその値を追加することを提案べきです。

Microformats Wiki の existing-rel-values のページに拡張として定義されたタイプのうち、ステータスが "proposed" か "ratified" のものは、"Effect on..." フィールドに従って、link, a, area 要素の rel 属性とともに使うことができます。 [MFREL]


※ 原文:http://www.w3.org/TR/2014/REC-html5-20141028/links.html#links