#?SuikaWiki/0.9 page-icon="HTTP" [1] [[HTTP]] やまれに[[電子メイル]]・[[電子ニュース]]で使われて、 [[HTML]] の [[link要素]]のような働きをします。 link 要素は HTML でしか使えませんが、画像や plain text に対する関係を マーク付けするときなどに使えます。 *HTTP/1.0 (RFC 1945) から **D.2.6 Link >The Link entity-header field provides a means for describing a relationship between the entity and some other resource. An entity may include multiple Link values. Links at the metainformation level typically indicate relationships like hierarchical structure and navigation paths. [2] Link 実体頭欄は[[実体]]と何か他の資源との間の関係を記述する手段を提供するものです。実体は複数の Link 値を持っていても構いません。メタ情報水準のリンクは典型的には階層構造や案内経路のような関係を示します。 *HTTP/1.1 [3] [[RFC2068]] には次のようにあります。 [[RFC2616]] はあまり実装されていないとして説明しません。 **19.6.2.4 Link >The Link entity-header field provides a means for describing a relationship between two resources, generally between the requested resource and some other resource. An entity MAY include multiple Link values. Links at the metainformation level typically indicate relationships like hierarchical structure and navigation paths. The Link field is semantically equivalent to the element in HTML.[5] [4] Link 実体頭欄は[[実体]]と何か他の資源との間の関係を記述する手段を提供するものです。実体は複数の Link 値を持っていても'''構いません'''。メタ情報水準のリンクは典型的には階層構造や案内経路のような関係を示します。 Link 欄は意味的には HTML の 要素と同等です。 [10] Link = "Link" ":" #("<" URI ">" *( ";" link-param ) link-param = ( ( "rel" "=" relationship ) | ( "rev" "=" relationship ) | ( "title" "=" quoted-string ) | ( "anchor" "=" <"> URI <"> ) | ( link-extension ) ) link-extension = token [ "=" ( token | quoted-string ) ] relationship = sgml-name | ( <"> sgml-name *( SP sgml-name) <"> ) sgml-name = ALPHA *( ALPHA | DIGIT | "." | "-" ) >Relationship values are case-insensitive and MAY be extended within the constraints of the sgml-name syntax. The title parameter MAY be used to label the destination of a link such that it can be used as identification within a human-readable menu. The anchor parameter MAY be used to indicate a source anchor other than the entire current resource, such as a fragment of this resource or a third resource. [5] 関係値は大文字・小文字を区別せず、 sgml-name 構文に従う範囲で拡張'''しても構いません'''。 title パラメーターは link 対象に札付けするのに使って'''構いません'''。これは人可読メニュー中で識別するのに使用出来ます。 [CODE(HTTP)[anchor]] パラメーターは、現在の資源全体でない、 当該資源の断片や第3の資源を始点アンカーとして示すのに使用しても'''構いません'''。 >Examples of usage include: -Link: ; rel="Previous" -Link: ; rev="Made"; title="Tim Berners-Lee" >The first example indicates that chapter2 is previous to this resource in a logical navigation path. The second indicates that the person responsible for making the resource available is identified by the given e-mail address. [6] 最初の例は第2章が論理案内経路中でこの資源の前であることを示します。 2つ目は資源を利用可能にした責任者が示された電子メイル・アドレスで識別されることを示します。 *HTML4 W3C HTML 4.01 14.6 Linking to style sheets with HTTP headers から抜粋引用。 > The HTTP Link header has the same effect as a LINK element > with the same attributes and values. [7] anchor パラメーターがあるらしい (>>5) HTTP/1.1 定義と矛盾してるような 気がしますが、 [[HTML4]] では無視するという意味でしょう。きっと。 > This should also work when HTML documents are sent by email. > Some email agents can alter the ordering of [RFC822] headers. > To protect against this affecting the cascading order for style > sheets specified by Link headers, authors can use header concatenation > to merge several instances of the same header field. [8] 「著者は幾つかの同じ頭欄の instance を合併するために 頭欄の連結を使うことが出来る」そうですが、頭欄の連結ってなんですか? [13] >>8[[複数頭領域の連結]]参照。 > The quote marks are only needed when the attribute values include whitespace. > Use SGML entities to reference characters that are otherwise not permitted > within HTTP or email headers, or that are likely to be affected by transit > through gateways. [9] 「引用符は属性値が空白間隔を含む時のみ必要」らしいのですが、 HTTP/1.1 の BNF (>>10) からすると'必ず' [[quoted-string]] のはずです。仮に BNF が間違っているとしても、 (http-)token 以外を許すのは問題でしょう。 「;」が属性値に含まれていて引用符で囲まれていなかったりしたら、 Netscape [[Cookie]] よりたちが悪いですよ。 [11] 「文字を参照するのに SGML 実体を使いなされ。」とかぶったまげたことを 申されております。 HTTP/1.1 ではそんなこと一言も言ってないのに。 この規定が適用されるのは HTTP や電子メイルで運ぶ中身が text/html の時だけでしょうか、それとも他の時もでしょうか。だけだとしたらそれはそれで困りますし、だけじゃなければ Link: 欄の実装は常に HTML4 の [[SGML]] 実体参照を解釈できなければいけません。というかそもそも、どうして HTML4 の仕様書が HTTP/1.1 で定義されているらしい Link: 欄を勝手に再定義している のでしょうかね? [12] さて、 SGML 実体を使うのはどういう文字かと申させますと、 「他の方法で、 HTTP あるいは電子メイル頭の中で認められていないもの、 あるいは関門の通過の影響を受けそうなもの」だそうでございます。 [[#comment]] *anchor パラメーター [15] 2002-10-20 (日) 07:02 ''>>5'': anchor 属性ってのがよくわかりません。現資源でもリンク先資源でもないが、関係ある第3の資源を書けばいいんでしょうか? [21] >>15 訳が間違っていたので直しました。 [CODE(HTTP)[anchor]] パラメーターは[[始点アンカー]]を当該資源ではなく [[URI]] で示す他の資源 (当該資源の一部でも良い。) を表すのに示すようです。 例えば、こんな風に使うのを想定していたのではないでしょうか。 [PRE[ Link: <#section2>; anchor="#section1"; rel="next" Link: <#section3>; anchor="#section2"; rel="next" Link: <#section4>; anchor="#section3"; rel="next" Link: <#section5>; anchor="#section4"; rel="next" ]PRE] これが役に立つのかはちょっとわかりませんが、 役に立つ使い方もありそうな気はします。 また、第3の資源云々というのは、後の [[XLink]] にある、始点アンカーの要素以外で定義されたリンクの仕組みを先駆けたものなのかなあという気もしますが、 それを HTTP header で提供する必然性も無いですし、 違うのかなあ。 - [23] >>22 によれば >>21 の前者はそれで問題ないようです。 [[#comment]] *RFC の部分の LICENSE See [[RFCのライセンス]] *メモ - [14] 2002-10-20 (日) 07:00 ''[[>>10-11]]'': 使わないといけないのか否かはっきりしないと、 "&" なんてのはよく使いそうな文字ですから、問題になります。 - [16] [WEAK[2002-11-14 (木) 20:46]] ''[[名無しさん]]'': RFC 2616 には載ってませんが、もともと参考で載ってたものですし、 HTTP の version の考え方的にも、廃止されたというよりは [[IETF]] [[標準化過程]]からは削除されたと捉えるのが適切でしょう。 - [17] [WEAK[2002-11-14 (木) 20:47]] ''16'': もちろん、いまでも [[HTTP/1.0]] や [[HTTP/1.1]] で [CODE[Link:]] 欄を使うことは不正では''ありません''。 - [18] 昔の HTML の仕様書では [CODE[Link:]] 欄には [[href]] 属性もあって、リンク先 URI はこちらに指定したんだそうです。 - [19] 草案標準の一部とはいえ、 RFC 2068 の [CODE[Link:]] 欄の定義はほとんどおまけみたいなものですからね。あの定義そのものがきちんとしたものでもないのかも。 - [20] [[LWP]] (というか [[HTML::HeadParser]]) は HTML 中に [[link]] 要素があると、 [CODE(HTML)[href]] 属性は所定の形式に変換して、残りの属性は全て ([CODE(HTTP)[;]] 区切りに直した上で) そのままつけていきます。 - [22] ''An Entity Header for Linked Resources'' : [[I-D]] の draft。最終修正99年4月。 - [24] >>22 には拡張 (定義にない) parameter の例として [[type]] と [[media]] が挙げられています。 - [25] [[WebDAV]] は最終仕様では[[リンク]]は [[XML]] の要素で表現してますが、当初は HTTP の [CODE(HTML)[Link:]] 欄を使う予定だったようで、仕様の検討が行われています: ''Thread index of w3c-dist-auth@w3.org mailing list'' - [26] ,HTTP and HTML Metadata Linking Mechanism,I-D 1997-05, - [27]