/
555.txt
316 lines (237 loc) · 14.9 KB
/
555.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
* [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]]
--<http://tools.ietf.org/html/rfc4287#section-4.1.1>
--<http://tools.ietf.org/html/rfc4287#section-4.1.2>
--'''<http://tools.ietf.org/html/rfc4287#section-4.2.7>'''
-[1] [CITE@en[RFC 5023 - The Atom Publishing Protocol]]
--<http://tools.ietf.org/html/rfc5023#section-9.1>
-- <http://tools.ietf.org/html/rfc5023#section-9.6>
--<http://tools.ietf.org/html/rfc5023#section-10>
--<http://tools.ietf.org/html/rfc5023#section-10.1>
- [96] [CITE@en[RFC 6721 - The Atom "deleted-entry" Element]] ([TIME[2012-12-31 01:08:20 +09:00]] 版) <http://tools.ietf.org/html/rfc6721#page-3>
-[76] [CITE@en[RSS Best Practices Profile]] ([TIME[2008-11-21 15:11:45 +09:00]] 版) <http://www.rssboard.org/rss-profile#namespace-elements-atom-link>
-[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]]]]
[6] エントリー自身の ([[HTML]] 版の) [[URL]] を表すために、
[CODE(XMLa)@en[[[rel]]]] [[属性]]を省略した [CODE(XMLe)@en[[[atom:link]]]]
[[要素]]が使われることがあります。
;; [CODE(XMLa)@en[[[rel]]]] [[属性]]の省略は、 [CODE(XML)@en[[[alternate]]]]
を表します。
*** [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(short list)[
- [81] [CODE(XMLa)@en[[[href]]]] ([['''必須''']])
- [CODE(XMLa)@en[[[rel]]]]
- [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)[
<atom:link href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />
]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]] 版) <http://tools.ietf.org/html/rfc5988#appendix-B>
]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)]]
--<http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.4.4>
--<http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.4.13.2>
- <http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.3.4>
** 文脈
[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]] 版))
<http://www.odata.org/developers/protocols/atom-format>
[99] [CITE@en[draft-snell-atompub-link-extensions-09 - Atom Link Extensions]]
( ([TIME[2014-01-13 13:58:17 +09:00]] 版))
<https://tools.ietf.org/html/draft-snell-atompub-link-extensions-09>
[2]
[PRE(XML code)[
<link rel="start" href="http://rss.exblog.jp/rss/exblog/XXX/atom.xml" type="application/rss+xml"/>
]PRE]
;; [3] [[リンク先]]は実際には [CODE(MIME)@en[[[text/xml]]]] の [[Atom 1.0]]
[[文書]]。 [TIME[2014-12-08T01:50:23.000Z]]
[100] [CITE@en[Citation Style Language 1.0.1]]
( ([TIME[2014-10-01 11:57:04 +09:00]] 版))
<http://citationstyles.org/downloads/specification.html#info>
[4] [CITE[RssFeeds - pubsubhubbub - Support of RSS in PubSubHubbub - A simple, open, webhook based pubsub protocol & open source reference implementation. - Google Project Hosting]]
([TIME[2015-01-27 16:08:07 +09:00]] 版)
<https://code.google.com/p/pubsubhubbub/wiki/RssFeeds>
[FIG(quote)[
[FIGCAPTION[
[5] [CITE[OASIS Specification Template]]
([TIME[2010-04-13 02:41:48 +09:00]] 版)
<http://docs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis-spec-v1.0.html#_Toc243905495>
]FIGCAPTION]
> The following attributes SHOULD be included on the link element:
> href: URI to the rendition content stream
> type: The Media Type of the Rendition
> cmisra:renditionKind: The Rendition Kind for the Rendition
]FIG]
[FIG(quote)[
[FIGCAPTION[
[7] [CITE@en[Official Google Webmaster Central Blog: Best practices for XML sitemaps & RSS/Atom feeds]]
([TIME[2015-06-11 14:18:33 +09:00]] 版)
<http://googlewebmastercentral.blogspot.jp/2014/10/best-practices-for-xml-sitemaps-rssatom.html>
]FIGCAPTION]
>
> <entry>
> <link href="http://example.com/mypage" />
]FIG]