* [CODE(XMLe)@en[atom:link]] 要素 (Atom 1.0) [79] [DFN[[CODE(XMLe)@en[atom:link]] [[要素]]]]は[[フィード]]や[[エントリー]]から [[Web資源]]への[[参照]]を表します [SRC[[[RFC 4287]] 4.2.7.]]。 ** 仕様書 [REFS[ -[75] [CITE@en[RFC 4287 - The Atom Syndication Format]] -- -- --'''''' -[1] [CITE@en[RFC 5023 - The Atom Publishing Protocol]] -- -- -- -- - [96] [CITE@en[RFC 6721 - The Atom "deleted-entry" Element]] ([TIME[2012-12-31 01:08:20 +09:00]] 版) -[76] [CITE@en[RSS Best Practices Profile]] ([TIME[2008-11-21 15:11:45 +09:00]] 版) -[77] [[OGC KML 2.2]] ]REFS] ** 文脈 [68] [[リンク型]]によっては個数等に制約が課されていることがあります。 以降の各項や各[[リンク型]]の項もごらんください。 *** [CODE(XMLe)@en[atom:feed]] の子要素として [70] [CODE(XMLe)@en[[[atom:feed]]]] [[要素]]は、 [CODE(XMLa)@en[[[rel]]]] [[属性値]]が [CODE(XML)@en[[[self]]]] である [CODE(XMLe)@en[[[atom:link]]]] [[要素]]を1つ含む[['''べきです''']]。 この[[要素]]は、その [[Atomフィード]]を含む [[Atomフィード文書]]の[[取り出し]]に相応しい [[URL]] を表します。 [SRC@en[[[Atom 1.0]] 4.1.1.]] ;; [71] この「[[属性値]]が」というのが、 [[URL]] として表された長い形式でもよいのか、 正確に「[CODE(XML)@en[[[self]]]]」でなければならないのかは不明です。 [72] [CODE(XMLe)@en[[[atom:feed]]]] [[要素]]は、 [CODE(XMLa)@en[[[rel]]]] [[属性値]]が [CODE(XML)@en[[[alternate]]]] であって、 [CODE(XMLa)@en[[[type]]]] [[属性]]と [CODE(XMLa)@en[[[hreflang]]]] [[属性]]の組が同じであるような [CODE(XMLe)@en[[[atom:link]]]] [[要素]]を複数含んでは[['''なりません''']]。 [SRC@en[[[Atom 1.0]] 4.1.1.]] [73] [[リンク関係]] [CODE(XML)@en[[[alternate]]]] の [CODE(XMLe)@en[[[atom:link]]]] [[要素]]は [[Mobile Link Discovery]] のために用いられることもあります。詳しくはそちらの項を参照してください。 [67] [[集成フィード]]が[[部分リスト]]である場合、最初の[[部分リスト]]は[[リンク関係]]が [CODE(XML)@en[[[link]]]] の [CODE(XMLe)@en[atom:[[link]]]] [[要素]]を含まなければ[['''なりません''']]。 [SRC@en[[[AtomPub]]]] *** [CODE(XMLe)@en[atom:entry]] の子要素として [74] [CODE(XMLe)@en[[[atom:entry]]]] [[要素]]が [CODE(XMLe)@en[[[atom:content]]]] [[要素]]を含ま''ない''場合、 [CODE(XMLe)@en[[[atom:entry]]]] [[要素]]は [CODE(XMLa)@en[[[rel]]]] [[属性]]が [CODE(XML)@en[[[alternate]]]] の [CODE(XMLe)@en[[[atom:link]]]] [[要素]]を最低1つは含まなければ[['''なりません''']] [SRC@en[[[Atom 1.0]] 4.1.2.]]。 [78] [CODE(XMLe)@en[[[atom:entry]]]] [[要素]]は、 [CODE(XMLa)@en[[[rel]]]] [[属性値]]が [CODE(XML)@en[[[alternate]]]] であって、 [CODE(XMLa)@en[[[type]]]] [[属性]]と [CODE(XMLa)@en[[[hreflang]]]] [[属性]]の組が同じであるような [CODE(XMLe)@en[[[atom:link]]]] [[要素]]を複数含んでは[['''なりません''']]。 [SRC@en[[[Atom 1.0]] 4.1.2.]] [64] [[成員エントリー]]は、[[リンク関係]]が [CODE(XML)@en[[[edit]]]] であって[[成員URI]] を表す [CODE(XMLe)@en[atom:[[link]]]] [[要素]]を含める[['''べきです''']]。 [SRC@en[[[AtomPub]]]] [66] [[集成フィード]]の[[エントリー]]は[[リンク関係]]が [CODE(XML)@pen[[[edit]]]] である [CODE(XMLe)@en[atom:[[link]]]] [[要素]]を含める[['''べきです''']]。 [65] [[媒体資源]]が[[集成]]に [CODE(HTTP)@en[[[POST]]]] されて作成される[[媒体リンク・エントリー]]は、 [[リンク関係]]が [CODE(XML)@en[[[edit-media]]]] であって[[媒体資源IRI]] を表す [CODE(XMLe)@en[atom:[[link]]]] [[要素]]を含めなければ[['''なりません''']]。 [SRC@en[[[AtomPub]]]] *** [CODE(XMLe)@en[at:deleted-entry]] の子要素として [97] [CODE(XMLe)@en[[[at:deleted-entry]]]] [[要素]]の[[子要素]]として任意個の [CODE(XMLe)@en[[[atom:link]]]] [[要素]]を使うことができます。 [SRC[>>96]] ;; [98] その意味は明記されていません。 *** RSS [CODE(XMLe)@en[channel]] の子要素として [52] [CODE(XMLe)@en[[[link]]]] [[要素]]は [[RSS 2.0]] [CODE(XMLe)@en[[[channel]]]] [[要素]]の[[子要素]]として使うことができます。 その場合、 [CODE(XMLa)@en[[[rel]]]] [[属性]]は [CODE(XML)@en[[[self]]]] でなければ[['''なりません''']]。値が [CODE(MIME)@en[[[application/rss+xml]]]] の [CODE(XMLa)@en[[[type]]]] [[属性]]を持っても[['''構いません''']]。 [SRC@en[[[RSS Best Practices Profile]]]] ;; [53] 違う [CODE(XMLa)@en[[[type]]]] [[属性値]]を禁止した方がいいと思うのですが。。。 [55] [[RSS 2.0]] [[フィード]]は >>52 の [CODE(XMLe)@en[[[link]]]] [[要素]]を含める[['''べきです''']] [SRC@en[[[RSS Best Practices Profile]]]]。 [56] >>55 は、可搬性が向上し、自己完結することとなり、キャッシュも容易になるため、 と説明されています [SRC@en[[[RSS Best Practices Profile]]]]。 *** KML での利用 [51] [[OGC KML]] は [[Atom]] の [CODE(XMLe)@en[[[link]]]] [[要素]]の使用を認めています。 (ただし [CODE(XMLa)@en[[[rel]]]] [[属性値]]は [CODE(XML)@en[[[related]]]] に限定されています。) ** 属性 [69] [FIG[ - [81] [CODE(XMLa)@en[[[href]]]] ([['''必須''']]) - [CODE(XMLa)@en[[[hreflang]]]] - [CODE(XMLa)@en[[[length]]]] - [CODE(XMLa)@en[[[title]]]] - [CODE(XMLa)@en[[[type]]]] ]FIG] ** 内容モデル [80] [[RFC 4287]] はこの[[要素]]に[[内容]]があったとしてもその[[意味]]は定義しないとしています。 [[RELAX NG]] [[スキーマ]] ([[参考]]) 上の[[データ型]]も [CODE(XML)@en[[[undefinedContent]]]] となっています。 [SRC[[[RFC 4287]] 4.2.7.]] ** 例 [54] [[RSS 2.0]] [[文書]]での利用例 [PRE(XML example code)[ ]PRE] ;; [[RSS Best Practices Profile]] より ** 関連 [57] [[RSS]] の [CODE(XMLe)@en[[[enclosure]]]] [[要素]]、 [CODE(XMLe)@en[[[link]]]] [[要素]]、 [CODE(XMLe)@en[[[source]]]] [[要素]]と似ています。 [[RSS 2.0]] [[フィード]]においては、 [[RSS]] の[[要素]]と同じ機能を持つ場合、 [[RSS]] の方を使う[['''べきです''']] [SRC@en[[[RSS Best Practices Profile]]]]。 [58] [[RSS]] の [CODE(XMLe)@en[[[link]]]] [[要素]]は、[[局所名]]は同じですが、 全く違う[[意味]]の[[要素]]です。 [[HTML]] の [CODE(HTMLe)@en[[[link]]]] [[要素]]は、[[局所名]]も[[意味]]も[[構文]]もだいたい同じですが、 細かな点で違いが沢山あります。 [[RSS 2.0]] [[文書]]ではこの3種類の [CODE(XMLe)@en[[[link]]]] [[要素]]がすべて同時に現れることもあります(!)。 *** Web Linking [83] [[RFC 5988]] [[Web Linking]] は、 [CODE(XMLe)@en[[[atom:link]]]] [[要素]]と [CODE(HTTP)@en[[[Link:]]]] 欄の変換について言及しています。 ;; [84] ただしなぜそのような対応関係を規定する必要があるのかについては述べられておらず、 どのように利用されることを意図したものなのかは不明です。 [REFS[ - [85] [CITE@en[RFC 5988 - Web Linking]] ([TIME[2012-03-22 09:19:11 +09:00]] 版) ]REFS] [86] [CODE(XMLe)@en[[[atom:link]]]] [[要素]]は主に [CODE(XMLe)@en[[[atom:feed]]]] と [CODE(XMLe)@en[[[atom:entry]]]] で使われますが、[[フィード]]の方の[[リンク]]が主として [CODE(HTTP)@en[[[Link:]]]] として転送される候補となる [SRC[>>85]]、とされています。 ;; [87] ということは [[HTTP]] で転送する際に [CODE(XMLe)@en[[[atom:link]]]] [[要素]]を読み取って [[HTTP]] [[ヘッダー]]に含めて使うことを想定しているのでしょうか。 しかしだとしても何が目的でしょうか。 [88] [CODE(XMLa)@en[[[href]]]] [[属性]]が[[対象IRI]]を表し、 [CODE(XMLa)@en[[[rel]]]] [[属性]]が[[リンク関係型]]を表します。ここで[[対象IRI]]は [CODE(HTTP)@en[[[Link:]]]] [[ヘッダー]]では [[URI]] に変換する必要があります。 [SRC[>>85]] [89] [[Atom]] の[[拡張関係型]]は [[IRI]] であり、 [[Web Linking]] では [[URI]] です [SRC[>>85]]。しかしこの違いをどうするべきかは明記されていません。 [90] [[Atom]] では[[登録済みリンク関係型]]も[[絶対URI]]として表すことができますが、 そうでない形に変換するべきです。例えば [CODE[[[http://www.iana.org/assignments/relation/self]]]] は [CODE[[[self]]]] とする[['''べきです''']]。 [SRC[>>85]] (いつ変換するべきかは明記されていませんが、 [CODE(HTTP)@en[[[Link:]]]] に変換する時、でしょう。) [91] [[Atom]] では[[リンク関係型]]は[[大文字・小文字区別]]で比較されますが、 [[Web Linking]] では区別されないため、 [[Atom文書]]に変換するときは[[小文字]]にする[['''べきです''']] [SRC[>>85]]。 ;; [92] 逆に [[Atom]] から [[Web Linking]] には変換できない場合が存在することになりますが、 少なくても [[IANA登録簿]]にはそのような値は登録されていないので、実用上は問題ないのでしょう。 [93] [CODE(XMLe)@en[[[atom:link]]]] [[要素]]の [CODE(XMLa)@en[[[rel]]]] [[属性]]は1つしか[[リンク型]]を指定できないので、 [[Web Linking]] から [[Atom]] に変換するときは複数の [CODE(XMLe)@en[[[atom:link]]]] [[要素]]に写像する必要があるかもしれません。 [SRC[>>85]] [94] [CODE(XMLe)@en[[[atom:link]]]] は [CODE(HTTP)@en[[[Link:]]]] にない[[属性]]を定義しておりますが、 これも [CODE(HTTP)@en[[[Link:]]]] 欄で [CODE(ABNF)@en[[[link-extension]]]] として表現して構いません。 [SRC[>>85]] ;; [95] 実際に該当するのは [CODE(XMLa)@en[[[length]]]] だけのようです。 * [CODE(XMLe)@en[atom:link]] 要素 (Atom 0.3)、Link construct (Atom 0.3) [59] [[Atom 0.3]] の [DFN[[CODE(XMLe)@en[atom:[[link]]]] [[要素]]]]は、 [[フィード]]や[[エントリー]]に関連付けられた [[URI]] を表します [SRC@en[[[Atom 0.3]]]]。 :状態:[[廃止]] → [[Atom 1.0]] [CODE(XMLe)@en[atom:[[link]]]] :[[局所名]]:[CODE(XMLe)@en[[[link]]]] :文脈:[CODE(XMLe)@en[atom:[[feed]]]] や [CODE(XMLe)@en[atom:[[entry]]]] の[[子要素]]として :[[内容モデル]]:[[空]] ([[Link construct]]) :[[属性]]:[CODE(XMLa)@en[[[href]]]], [CODE(XMLa)@en[[[rel]]]], [CODE(XMLa)@en[[[title]]]], [CODE(XMLa)@en[[[type]]]] 仕様書: -[CITE[The Atom Syndication Format 0.3 (PRE-DRAFT)]] -- -- - ** 文脈 [60] [CODE(XMLe)@en[atom:[[feed]]]] [[要素]]や [CODE(XMLe)@en[atom:[[entry]]]] [[要素]]は最低1つ、 [CODE(XMLa)@en[[[rel]]]] が [CODE(XML)@en[[[alternate]]]] の [CODE(XMLe)@en[atom:[[link]]]] [[要素]]を含まなければ[['''なりません''']] [SRC@en[[[Atom 0.3]]]]。 [61] [CODE(XMLe)@en[atom:[[feed]]]] [[要素]]や [CODE(XMLe)@en[atom:[[entry]]]] [[要素]]は [CODE(XMLa)@en[[[type]]]] が他と同じである [CODE(XMLa)@en[[[rel]]]] が [CODE(XML)@en[[[alternate]]]] の [CODE(XMLe)@en[atom:[[link]]]] [[要素]]を複数含んでは[['''なりません''']] [SRC@en[[[Atom 0.3]]]]。 ** 内容 [62] [CODE(XMLe)@en[atom:[[link]]]] [[要素]]は [DFN[[[Link construct]]]] です [SRC@en[[[Atom 0.3]]]]。 [53] [[Link construct]] では[[内容]]は[[空]]でなければ[['''なりません''']] [SRC@en[[[Atom 0.3]]]]。 ** 属性 [63] [[Link construct]] は [CODE(XMLa)@en[[[rel]]]], [CODE(XMLa)@en[[[href]]]], [CODE(XMLa)@en[[[type]]]], [CODE(XMLa)@en[[[title]]]] の4つの[[属性]]を持ちます。 そのうち [CODE(XMLa)@en[[[rel]]]] と [CODE(XMLa)@en[[[href]]]] と [CODE(XMLa)@en[[[type]]]] は[['''必須''']]です。 [SRC@en[[[Atom 0.3]]]] [82] [CITE[OData Protocol Atom Format]] ( ([TIME[2012-02-08 21:02:21 +09:00]] 版)) [99] [CITE@en[draft-snell-atompub-link-extensions-09 - Atom Link Extensions]] ( ([TIME[2014-01-13 13:58:17 +09:00]] 版))