[8] [DFN[[[RSS 1.0]]]] は、2000年代の初頭によく使われていた[[フィード]]の形式の1つです。 [[XML]] および [[RDF]] を元に [[Webサイト]]の情報を記述するものでした。 [[RSS-DEV]] により開発されていました。 特に[[日本]]では [[RSS 2.0]] よりもよく採用されていました。 現在でもほとんどの[[フィード・リーダー]]が対応しています。 [16] > RDF Site Summary (RSS) is a lightweight multipurpose extensible metadata description and syndication format. RSS is an XML application, conforming to the W3C's RDF Specification. RSS is extensible via XML-namespace and/or RDF based modularization. [DFN[[[RDFサイト要約]]]] ([DFN[[[RSS]]]]) は、軽量で多目的の拡張可能なメタデータ記述・連合配信用の書式です。 [[RSS]] は [[XML応用]]であり、 [[W3C]] の [[RDF]] 仕様に[[適合]]します。 [[RSS]] は [[XML名前空間]]によって、あるいは [[RDF]] に基づく[[モジュール化]]によって、 はたまたその両方によって[[拡張可能]]です。 [SRC[>>9]] [17] > An RSS summary, at a minimum, is a document describing a "channel" consisting of URL-retrievable items. Each item consists of a title, link, and brief description. While items have traditionally been news headlines, RSS has seen much repurposing in its short existence. [[RSS]] 要約は、最低限、 [[URL]] によって[[取出し]]可能な項目群によって構成される 「[[チャンネル]]」を記述する[[文書]]です。各項目は[[題名]]、[[リンク]]、 それに簡単な[[説明]]によって構成されます。各項目は元々は[[ニュース]]の[[見出し]]を表していましたが、 [[RSS]] の短い歴史の中でいろいろなものに転用されています。 [SRC[>>9]] * 公式サイト - [9] [CITE[RDF Site Summary (RSS) 1.0]] ([TIME[2008-09-18 00:10:30 +09:00]] 版) * 仕様書 - [10] [CITE[RDF Site Summary (RSS) 1.0]] ([TIME[2008-06-10 05:47:42 +09:00]] 版) [11] >>10 は2000年12月の1.3版公表以来何度か改訂されていますが、いずれも軽微な変更に留まっています。 * モジュール化と名前空間 [5] [[RSS 1.0]] は核となる部分の他はモジュールとして定義されています。 多数のモジュールが提案されましたが、そのほとんどは提案段階で放置されており、 一応の完成を見たのは3つのみです。 [7] 実際の[[フィード]]での利用状況は仕様としての完成度とは別です。 一旦完成した Content モジュールは実際にはその規定通りには用いられておらず、 変更案として示されているものが利用されているのが実態です。 また、素案段階のモジュールのいくつかは実際に用いられています。 [6] [CITE[RDF Site Summary 1.0 proposed modules]] ([TIME[2004-12-18 06:00:05 +09:00]] 版) ** RSS 1.0 文書でよく用いられる名前空間 [2] [[RSS 1.0]] [[文書]]で見かける[[名前空間URI]]と、典型的な[[名前空間接頭辞]]。 - [CODE(XML)@en[[[admin]]]] [CODE(URI)@en[[[http://webns.net/mvcb/]]]] - [CODE(XML)@en[[[atom]]]] [CODE(URI)@en[[[http://www.w3.org/2005/Atom]]]] --[[Atom 1.0]], [[RDF/XML]] 仕様違反な使われ方が普通 - [CODE(XML)@en[[[cc]]]] [CODE(URI)@en[[[http://web.resource.org/cc/]]]] -- 宣言だけで使われていないのをたまに見かけます。 - [CODE(XML)@en[[[content]]]] [CODE(URI)@en[[[http://purl.org/rss/1.0/modules/content/]]]] - [CODE(XML)@en[[[dc]]]] [CODE(URI)@en[[[http://purl.org/dc/elements/1.1/]]]] - [CODE(XML)@en[[[feedburner]]]] [CODE(URI)@en[[[http://rssnamespace.org/feedburner/ext/1.0]]]] -[CODE(XML)@en[[[mn]]]] [CODE(URI)@en[[[http://usefulinc.com/rss/manifest/]]]] - [CODE(XML)@en[[[rdf]]]] [CODE(URI)@en[[[http://www.w3.org/1999/02/22-rdf-syntax-ns#]]]] --[[RDF]] - [[既定名前空間]] [CODE(URI)@en[[[http://purl.org/rss/1.0/]]]] --[[RSS 1.0]] - [CODE(XML)@en[[[slash]]]] [CODE(URI)@en[[[http://purl.org/rss/1.0/modules/slash/]]]] -- 宣言だけで使われていないのをたまに見かけます。 - [CODE(XML)@en[[[sy]]]], [CODE(XML)@en[[[syn]]]] [CODE(URI)@en[[[http://purl.org/rss/1.0/modules/syndication/]]]] - [CODE(XML)@en[[[taxo]]]] [CODE(URI)@en[[[http://purl.org/rss/1.0/modules/taxonomy/]]]] - [CODE(XML)@en[[[trackback]]]] [CODE(URI)@en[[[http://madskills.com/public/xml/rss/module/trackback/]]]] - [CODE(XML)@en[[[xhtml]]]] [CODE(URI)@en[[[http://www.w3.org/1999/xhtml]]]] --[[Mobile Link Discovery]], [[RDF/XML]] 仕様違反 - [CODE(XML)@en[[[xml]]]] [CODE(URI)@en[[[http://www.w3.org/XML/1998/namespace]]]] -- [[根要素]]に [CODE(XMLa)@en[[[xml:lang]]]] [[属性]]が指定されることが多い - [CODE(XML)@en[[[xmlns]]]] [CODE(URI)@en[[[http://www.w3.org/2000/xmlns/]]]] * 構文 ** 文字符号化 [44] [[RSS 1.0]] [[文書]]は [[UTF-8]] である、とされています [SRC[>>10 5.]]。 [WEAK[([[RSS 0.9]] は [[US-ASCII]] でした。)]] [45] 現実には [[Web]] 上のあらゆる[[文字符号化]]が使われています。 [46] [[XML処理器]]は [[UTF-8]] と [[UTF-16]] の両方に対応しなければならないのですが、 [[XML応用]]であるところの [[RSS 1.0]] が [[UTF-8]] だけに限定してよいのでしょうかね。 更に制限する方向なら良いという解釈なのでしょうか。 ** XML の応用としての RSS 1.0 [25] [[RSS 1.0]] は [[XML応用]]であると謳っています [SRC[>>10 1.]]。 [26] 現実には、[[RSS 1.0]] [[文書]]には[[整形式]]ではないものもあり、 [[利用者エージェント]]は [[Draconian]] でない[[構文解析]]を行わなければ実用に耐えません。 [48] [[XML宣言]]は[[必須]]ではありませんが、[RUBYB[推奨]@en[recommended]]されています。 [WEAK[([[RSS 0.9]] では必須でした。)]] [SRC[>>10 5.1]] ** XML 名前空間の応用としての RSS 1.0 [50] [[RSS 1.0]] は [[XML名前空間]]を使っています。 [[XML名前空間]]の仕様上は[[名前空間接頭辞]]は飾りに過ぎず、 [[名前空間URL]]が同じである限りは自由に記述できるのですが、 [[RSS 1.0]] では制限があります。 [[RSS 1.0]] 仕様は [[RSS 0.9]] との互換性のためとしていますが、 実際には [[RSS 1.0]] 以降の実装でも [[XML名前空間]]を実装せずに[[正規表現]]などの[[一致]]で済ませていることがよくあるため、 過去・将来どちらの方向の互換性のためにも制限に従う必要があります。詳しくは [CODE(XMLe)@en[[[rdf:RDF]]]] の項をご覧ください。 ** RDF/XML の応用としての RSS 1.0 [32] [[RSS 1.0]] は [[RDF]] (現在でいう [[RDF/XML]]) に適合すると謳っています [SRC[>>10 1.]]。 [34] ここで適合すると言っているのは [[RSS 1.0]] に適合する [[XML文書]]は [[RDF/XML]] にも[[適合]]するという程度の意味です。 [[RSS 1.0]] [[語彙]]を使った [[RDF]] [[グラフ]]を表す [[RDF/XML]] はいろいろあり得ますが、 [[RSS 1.0]] [[文書]]足りえるのはその一部だけです。 ;; [35] つまり、 [[RSS 1.0]] に特に対応していない [[RSS/XML]] [[生成器]]は [[RSS 1.0]] [[文書]]を生成できるとは限りません。 [33] 現実には、 [[RSS 1.0]] [[文書]]には [[RDF/XML]] として正しくないものもあり、 また同じ値の [CODE(XMLa)@en[[[rdf:about]]]] [[属性]]の問題のように [[RDF]] として解釈することによって[[著者]]の意図と違った解釈がなされてしまうこともあり、 [[利用者エージェント]]が [[RDF]] として処理するのであれば実用に耐えません。 [47] [[RSS 1.0]] 仕様書には [[XHTML]] の[[文字実体参照]]を[[内部部分集合]]で[[引数実体参照]]として読み込むことによって使えるようにする方法を参考として説明しています [SRC[>>10 5.]]。 [[外部実体]]を[[処理]]する[[XML処理器]]では確かにそれで [[RSS 1.0]] [[文書]]中で [[XHTML]] の[[文字実体参照]]を使えるようになりますけど、 現実の[[利用者エージェント]]がそれを理解してくれるのかは甚だ疑問です。 [[HTML]] の[[文字実体参照]]を解釈できるとしても、[[引数実体]]を[[処理]]した結果ではなく、 [[ハードコード]]されているだけの可能性が高そうです。 ** 前方互換構文解析 [27] [[RSS 1.0]] 仕様は[[利用者エージェント]]がどのように [[RSS 1.0]] [[文書]]を[[構文解析]]するべきか規定していませんが、 [[RSS 0.9]] との互換性についての言及 [SRC[>>10 5.]] から、 次のように解釈することを期待しているとも受け取れます。 - [28] [[RDF]] の[[名前空間]]以外の[[属性]]は無視する - [29] [[既定名前空間]]以外の[[要素]]は[[モジュール]]による拡張とみなす - [30] 未知の[[要素]]は [[RSS]] [[文書]]全体の構造に影響しないものとして無視する [31] つまり、一般的な「知らないものは読み飛ばす」というルールですね。 ** 根要素 [49] 適合 [[RSS 1.0]] [[文書]]の[[根要素]]は [CODE(XMLe)@en[[[rdf:RDF]]]] [[要素]]です [SRC[>>10 5.2]]。 * 識別子 ** MIME 型 [36] [[RSS 1.0]] 仕様によれば、[RUBYB[推奨]@en[recommended]]される [[MIME型]]は [CODE(MIME)@en[[[application/xml]]]] です [SRC[>>10 5.]]。これは [[XML文書]]一般の [[MIME型]]です。 [37] [[RSS 1.0]] 仕様は [[RDF]] や [[RSS]] のための [[MIME型]]の登録作業が行われていたことにも言及しています [SRC[>>10 5.]]。実際に [[RSS 1.0]] [[文書]]の [[MIME型]]としては [CODE(MIME)@en[[[application/rdf+xml]]]] や [CODE(MIME)@en[[[application/rss+xml]]]] が使われることも少なくありません。 [38] ただ、 [[RSS 1.0]] は現実には [[RDF]] として処理されないのが普通であること、 そのために本当の [[RDF]] と区別できた方が [WEAK[(本当に [[RDF]] を処理したい時に)]] 便利なことを踏まえると、 [CODE(MIME)@en[[[application/rdf+xml]]]] はあまり適切ではないと思います。 [39] さらに、 [CODE(MIME)@en[[[application/rss+xml]]]] はどちらかというと [[RSS 2.0]] に使われる方が一般的であるようにも思えます。 [40] 結局、専用のそれっぽい [[MIME型]]がないので、 [CODE(MIME)@en[[[application/xml]]]]、 あるいは [CODE(MIME)@en[[[text/xml]]]] でもいいのではないでしょうか。 ;; [41] 昔は [CODE(MIME)@en[[[text/*]]]] は相応しくないという風潮で [CODE(MIME)@en[[[application/xml]]]] が好ましいとされていましたが、 今はそうでもありませんしね。 ** ファイル拡張子 [42] [[ファイル名]]の[[拡張子]]として決まったものは特にありませんが、 [CODE(file)@en[[[.rdf]]]] や [CODE(file)[[[.xml]]]] が[RUBYB[推奨]@en[recommended]]されており、 特に [CODE(file)@en[[[.rdf]]]] が[RUBYB[よい]@en[preferred]]、とされています [SRC[>>10 5.]]。 [43] 現実には、むしろ [CODE(file)@en[[[.rss]]]] がより用いられているように思えます。 * 歴史 ** 誕生 [18] [[RSS 0.9]] は [[RDF/XML]] ベースでしたが、 [[RSS 0.91]] は簡素化して非 [[RDF]] でした。それに不満を持った人達が [[RSS 1.0]] を作ることになりました。 [19] [[RSS]] は注目されて適用範囲も拡大方向にあり、 [[モジュール化]]がそれに対する解であると信じられていたことから、 [[XML名前空間]]や [[RDF]] を使うのは非常に正しい方向性であると支持を受けていたのです。 [21] なお、 [[RSS 1.0]] は [[RSS 0.9]] とは互換性がありませんでした。 ;; [24] [[RSS 1.0]] は [[RSS 0.9]] との互換性を考慮して設計されているようですが、 実際どの程度 [[RSS 0.9]] 対応ソフトウェアで [[RSS 1.0]] [[フィード]]が利用できたのかは不明です。 ** 退潮 [22] [[RSS 1.0]] は一定の支持を集めたものの、[[ブログ]]用の各種ソフトウェアは [[RDF]] に基づかない [[RSS 0.92]] の後継である [[RSS 2.0]] を出力することが多くなり、また [[Web標準]]系のコミュニティーの人達は [[Atom]] にうつったことから、 [[RSS 1.0]] を使う人は少なくなっていきました。 [23] [[日本]]ではなぜか [[RSS 2.0]] よりも [[RSS 1.0]] が使われていることが多く、 海外よりは [[RSS 1.0]] 採用率が高いと思われます。 ** RSS 1.1 [20] [[RSS 1.0]] の後継として [[RSS 1.1]] が提案されたことがありました。 [[RSS 1.1]] もやはり [[RDF/XML]] ベースでした。しかし [[RSS 1.1]] には [[RSS 1.0]] との互換性もなく、 [[RSS 1.0]] 自体への関心も低下していたため、 結局支持されずに忘れ去られていきました。 * 実装 [12] [[RSS 1.0]] は [[RDF/XML]] として定義されてはいますが、現実には [[RDF]] として処理している実装はほとんどありません。世間一般に流通している [[RSS 1.0]] [[フィード]]は、実際には [[RDF/XML]] に適合しないことも多く、 [[XML]] として[[整形式]]でないこともしばしばあります。そのため、 [[フィード・リーダー]]も [[XML]] 仕様に規定されていない[[誤り訂正]]を行ったり、 [[正規表現]]による[[一致]]でお茶を濁していたりして厳密に処理しないのが一般的です。 [13] [[根要素]]である [CODE(XMLe)@en[[[rdf:RDF]]]] [[要素]]は、 [[XML名前空間]]の仕様に基づき違う[[名前空間接頭辞]]で表現することもできるはずですが、 実際には [CODE(XMLe)@en[[[rdf:RDF]]]] という[[修飾名]]との文字列としての[[一致]]を見ている実装があったりします。 * レンダリング [14] [[RSS 1.0]] は専用の[[フィード・リーダー]]などの[[利用者エージェント]]で処理するのが一般的で、 [[Webブラウザー]]によって[[レンダリング]]することはほとんどありません。ただし、 最近の [[Webブラウザー]]は[[フィード・リーダー]]機能を実装していることがよくあります。 [15] [[Webブラウザー]]が[[フィード・リーダー]]機能を実装する前は[[著者]]が [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]によって[[XSLTスタイル・シート]]で[[レンダリング]]を指定することがたまにありました。 [[Webブラウザー]]が[[フィード・リーダー]]機能を実装した折にはそれが動作せずに[[フィード・リーダー]]側の処理が動作するようになり、 反発があったりもしました。 * 例 [3] [PRE(XML example code)[ '''<'''channel rdf:about="http://help.rss.drecom.jp/"> '''<'''title>''' '''<'''link>''' '''<'''description>''' '''<'''dc:language>ja''' '''<'''dc:creator>''' '''<'''dc:date>2008-09-03T12:07:00+09:00''' '''<'''dc:rights>''' ]PRE] ;; [CITE[ドリコムRSS(β) オンラインヘルプ]] ([TIME[2008-11-23 23:45:20 +09:00]] 版) [CODE(XMLe)@em[[[title]]]] とか [CODE(XMLe)@en[[[link]]]] とかに [[CDATA区間]]を使っているのがちょっと珍しい。 [CODE(XMLe)@en[[[channel]]]] の [CODE(XMLa)@en[[[rdf:about]]]] に [CODE(XMLe)@en[[[link]]]] と同じ (= [[Webサイト]]の [[URL]] を指定している) のも最近では珍しい。 * メモ [1] [CITE[RSS - ESW Wiki]] [4] [CITE@ja[ちょっとしたメモ - IE7、Firefox2でもRSS1.0にXSLTを適用させる]] ([[Masahide Kanzaki]] 著, [TIME[2008-05-28 09:21:23 +09:00]] 版) >一般のRSSリーダーの中にもrdf:RDFを使ってRSS1.0を判定方法を用いているらしきものが結構あることが分かった。結果として、接頭辞置き換えによる修正版RSSは多くのフィードリーダー(オンライン、オフラインともに)で読めなくなってしまい、少々具合が悪い。