以下は、私の勝手な推測、考え方、気づきなどを書き流したものです。
次のような atom:link@rel="enclosure" を使ったポッドキャスティングの例がよく引き合いになりますが、
<link rel="enclosure" type="audio/mpeg" length="1337"意味として捉えると、次のように atom:content を使ったほうが適切にも思えます。
href="http://example.org/audio/ph34r_my_podcast.mp3"/>
<content type="audio/mpeg"atom:link は length という atom:content にない属性を持っています。この length によって外部リソースがサイズが把握できるので、外部リソースを選択的にダウンロードするような用途でうまく機能しそうな気がします。
src="http://example.org/audio/ph34r_my_podcast.mp3"/>
であれば、atom:content が外部リソースを表現できる必要性がない気がしますし、逆に atom:content も length 属性を持ってしまえばよい気がします。
ポッドキャスティングではなくエントリ内の画像と捉えると、コンテンツ内のリソースと捉えることができるので、atom:link じゃなく atom:content が適切であるという解釈もできます。ですが、atom:content が length 属性を持たない理由にはなりません。
atom:link@rel="enclosure" は、次のように RSS 2.0 Specification の enclosure 要素に対応します。この RSS 2.0 の仕様に影響を受けているのかもしれません。
<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3"もしかすると、歴史的な背景とか、他の標準仕様との関係とかを知らないと、うまく理解できないのかもしれません。
length="12216320" type="audio/mpeg" />
まだモヤモヤしますが、今のところの結論としては、エントリ自体が外部リソースであるか、外部リソースがエントリ内の部分を表現するときは atom:content を使い、指定したときだけダウンロードするなど、外部リソースを選択的に操作するときは atom:link を使うという整理になりました。
どないなもんでしょう。
Head Firstオブジェクト指向分析設計 ―頭とからだで覚えるオブジェクト指向の基本 Brett McLaughlin Gary Pollice 長瀬 嘉秀 by G-Tools |
1 件のコメント:
興味があったので私も調べてみましたがはっきりした事はわかりませんでした。Atomフォーマット 0.3の頃はatom:content@modeがあって「xml」,「escaped」,「base64」などを指定でき、linkには@rel="enclosure"や@lengthは定義されていないかったようです。
0.8辺りから今の形になってようなのでそこの記録を辿ればはっきりした理由がわかりそうです。
コメントを投稿