-
Notifications
You must be signed in to change notification settings - Fork 4
/
965.txt
220 lines (154 loc) · 8.75 KB
/
965.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
[1] [[RSS]] の [DFN[[CODE(XMLe)@en[[[guid]]]] [[要素]]]]は、
[[項目]]を固有に識別する文字列を表します [SRC@en[[[RSS 2.0]]]]。
:[[要素名]]:[CODE(XMLe)@en[[[guid]]]]
(globally unique identifier (大域的固有識別子) より [SRC@en[[[RSS 2.0]]]])
:文脈:[CODE(XMLe)@en[[[item]]]] [[要素]]の[[子要素]]として
:[[内容モデル]]:[[テキスト]]
:[[属性]]:[CODE(XMLa)@en[[[isPermaLink]]]]
仕様書:
-[CITE@en[RSS 2.0 Specification (version 2.0.10)]]
--<http://www.rssboard.org/rss-specification#hrelementsOfLtitemgt>
--<http://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt>
--<http://www.rssboard.org/rss-specification#comments>
-[CITE@en[RSS Best Practices Profile]] ([TIME[2008-11-21 15:11:45 +09:00]] 版) <http://www.rssboard.org/rss-profile#element-channel-item-guid>
* 内容
[5] [[要素]]の[[内容]]は、[[項目]]を固有に識別する[[文字列]]です [SRC@en[[[RSS 2.0]]]]。
[7] この[[文字列]] (guid) の構文は特に規定されていません [SRC@en[[[RSS 2.0]]]]。
;; [21] [[URL]] が使われることがありますが、そうでなくても構いません。
[9] [[フィード]]の供給元は、この[[文字列]]が固有であることに責任を負っています
[SRC@en[[[RSS 2.0]]]]。
[10] この[[要素]]を指定し、かつそれを [[permalink]] とする
([CODE(XMLa)@en[[[isPermaLink]]]] を
[CODE(XML)@en[[[false]]]] としない) ことが推奨されています [SRC@en[[[RSS 2.0]]]]。
[13] [CODE(XMLa)@en[[[isPermaLink]]]] が [CODE(XML)@en[[[true]]]] ([[既定値]])
の場合には、[[内容]]は[[項目]]に関連付けられた [[Web頁]]の
[[permanent]] [[URL]] でなければ[['''なりません''']]
[SRC@en[[[RSS Best Practices Profile]]]]。
;; [22] [CODE(XMLa)@en[[[isPermaLink]]]] の既定値が[[真]]であることに注意が必要です。
[[パーマリンク]] [[URL]] でなければ [CODE[[[false]]]] を明示しないといけません。
[14] [CODE(XMLa)@en[[[isPermaLink]]]] が [CODE(XML)@en[[[false]]]] の場合には、
固有性が保証される[[文字列]]なら何でもいいですが、
[CODE(URI)@en[[[tag]]:]] [[URL]] が例として挙げられます。
[SRC@en[[[RSS Best Practices Profile]]]]
[15] [[出版者]]は各[[項目]]に [CODE(XMLe)@en[[[guid]]]]
を指定する[['''べきです''']] [SRC@en[[[RSS Best Practices Profile]]]]。
* 処理モデル
[6] この[[要素]]が存在する場合、[[集積器]]は[[項目]]が新しいものか判断するためにこの[[要素]]の[[文字列]]を使うことができます
[SRC@en[[[RSS 2.0]]]]。
[8] [[集積器]]はこの[[要素]]が示す[[文字列]] (guid) を単なる[[文字列]]として扱わなければなりません
[SRC@en[[[RSS 2.0]]]]。
* 例
[3]
[PRE(XML example code)[
<guid>http://some.server.com/weblogItem3207</guid>
]PRE]
;; [[RSS 2.0]] 仕様書より
[4]
[PRE(XML example code)[
<guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid>
]PRE]
;; [[RSS 2.0]] 仕様書より
[12]
[PRE(XML example code)[
<guid isPermaLink="false">2296 at http://example.com/blog</guid>
]PRE]
;; 実例より、改
[19] [CITE[『ジオどす』 京都通り名住所検索 ジオコーダー - 京都通り名ジオコーダーAPI『ジオどす』]] ([TIME[2009-03-24 23:51:35 +09:00]] 版) <http://geodosu.com/rss.xml>
>
[PRE(XML example code)[
<guid isPermaLink="false">48 at http://geodosu.com</guid>
]PRE]
[16]
[PRE(XML example code)[
<guid>http://dallas.example.com/1983/05/06/joebob.htm</guid>
]PRE]
;; [[RSS Best Practices Profile]] より
[17]
[PRE(XML example code)[
<guid isPermaLink="false">tag:dallas.example.com,4131:news</guid>
]PRE]
;; [[RSS Best Practices Profile]] より
[18]
[PRE(XML example code)[
<guid isPermaLink="false"></guid>
]PRE]
;; 実用例。
* 関連
[2] [[Atom]] の [CODE(XMLe)@en[[[id]]]] [[要素]]に似ています。
[11] [CODE(XMLe)@en[[[guid]]]] [[要素]]は [CODE(XMLe)@en[[[link]]]] [[要素]]と似ています。
両者は一致するシステムもあるでしょうし、そうでないシステムもあります
[SRC@en[[[RSS 2.0]]]]。
[FIG(quote)[
[FIGCAPTION[
[23] ([TIME[2016-03-17 22:24:29 +09:00]] 版)
<https://ja.wordpress.org/feed/>
]FIGCAPTION]
>
> <link>https://ja.wordpress.org/2016/03/17/wordpress-4-5-beta-4/</link>
> <pubDate>Thu, 17 Mar 2016 13:24:29 +0000</pubDate>
> <dc:creator><!'''['''CDATA'''['''Naoko Takano''']'''''']'''></dc:creator>
> <category><!'''['''CDATA'''['''Development''']'''''']'''></category>
> <category><!'''['''CDATA'''['''Releases''']'''''']'''></category>
> <guid isPermaLink="false">https://ja.wordpress.org/?p=3857</guid>
]FIG]
[FIG(quote)[
[FIGCAPTION[
[24] ([TIME[2016-03-18 15:48:21 +09:00]] 版)
<http://info.cocolog-nifty.com/info/rss.xml>
]FIGCAPTION]
>
> <link>http://info.cocolog-nifty.com/info/2016/03/post-20d8.html</link>
> <guid isPermaLink="true">http://info.cocolog-nifty.com/info/2016/03/post-20d8.html</guid>
]FIG]
[FIG(quote)[
[FIGCAPTION[
[25] ([TIME[2015-12-12 00:00:05 +09:00]] 版)
<http://blog.nicovideo.jp/index.xml>
]FIGCAPTION]
> <link>http://blog.nicovideo.jp/2015/12/1212.php</link>
> <guid>http://blog.nicovideo.jp/2015/12/1212.php</guid>
]FIG]
[FIG(quote)[
[FIGCAPTION[
[26] [CITE@en[BitTorrent.org]]
([[Arvid Norberg <arvid@bittorrent.com>]] 著, [TIME[2014-09-29 05:34:53 +09:00]] 版)
<http://www.bittorrent.org/beps/bep_0036.html>
]FIGCAPTION]
> Clients often need to identify whether a torrent has already been downloaded or not just by inspecting the item. For this reason, RSS feeds SHOULD include a guid field. If practical, the guid SHOULD be the info-hash of the torrent. That way, GUIDs would match across different feeds.
]FIG]
* メモ
[20] この[[要素]]に意味があるのかどうかは謎です。
意図としては同じ記事の [[URL]] が変化する場合などに対処したかったのでしょうが...
[FIG(quote)[
[FIGCAPTION[
[27] [CITE[RSS 2.0 linkとguid - 山羊の頭の日記]]
([TIME[2011-12-23 22:39:09 +09:00]])
<https://d.hatena.ne.jp/tolerance/20070402>
]FIGCAPTION]
> Google RSS Readerの場合、<guid>にisPermalink=trueの属性がない場合でも、<guid>に指定されたURLがハイパーリンクとして機能する。
> Firefox 2.0の場合、<link>に指定されたURLがハイパーリンクとして機能する。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[28] [CITE@en[Changing The Site URL « WordPress Codex]]
([TIME[2017-03-18 02:04:26 +09:00]])
<https://codex.wordpress.org/Changing_The_Site_URL>
]FIGCAPTION]
> changing the GUID will mean that many feedreaders will suddenly display your content in the user's reader again as if it was new content, possibly annoying your users.
> In order for the GUID field to be "globally" unique, it is an accepted convention that the URL or some representation of the URL is used. Thus, if you own example.com, then you're the only one using example.com and thus it's unique to you and your site. This is why WordPress uses the permalink, or some form thereof, for the GUID.
> However, the second part of that is that the GUID must never change. Even if you shift domains around, the post is still the same post, even in a new location. Feed readers being shifted to your new feeds when you change URLs should still know that they've read some of your posts before, and thus the GUID must remain unchanged.
> Never, ever, change the contents of the GUID column, under any circumstances.
]FIG]
[29] さて、世の中に [CODE[guid]] を記事の [[URL]] と解釈する実装があるので、
移転したのに元の [[GUID]] を保持しろというアドバイスと両立させるには、
旧 [[URL]] から新 [[URL]] に[[リダイレクト]]でもするしかないことになります。
[30] 普通は [[URL]] の変更なんて誰もしたくないので、
それでもせざるを得ないということは、それなりの事情があるはずです。
当面は[[リダイレクト]]するとしても、その状態をいつまで維持できるかどうか。
例えば[[ドメイン]]を移転したら、いつまで旧[[ドメイン]]を保持し続けるか。
もし[[ドメイン]]が他の人の手にわたったら、その人は違う使い方をしたいかもしれない。
[31] [[URL]] の寿命が短い状況で、 [[URL]] を固有識別子として使おうという方針が、
根本的に間違っているのです。 (しかも固有識別子なのになぜか [[URL]]
としても使うというのが謎すぎる。)
;; [32] [[URL]] の寿命が長いなら、 [CODE[link]] を使えばよく、 [CODE[guid]]
の出る幕もない。