RSSとは
[* 昔書いたものなので、現状うまくいかない部分やAtomのバージョンアップによって異なる部分および、ちょっと間違ってる部分もありますが、ご容赦下さい。RSS/Atomに関しては書籍 詳解RSS~RSSを利用したサービスの理論と実践を参考にしてください。]RSSはRDF Site SummaryとかRich Site Summaryとかの頭文字の略だと言われ何を省略したのかも曖昧だと言われたり書かれたりするようです。Webでの情報を見るとRSSはバージョンにより異なるようで、以下のようになっています。
RSS 0.9 --- RDF Site Summary
RSS 0.91 --- Rich Site Summary
RSS 0.92 --- なし
RSS 1.0 --- RDF Site Summary
RSS 2.0 --- Really Simple Syndication
RSSは0.9x系と1.0系の2つに分別されます。2.0は1.0の上位互換ではなく0.9x系のものです。単純に言えばRSS 1.0とそれ以外ということになります。タグに互換性があれば良いのですが、互換性は少なく書き方も違っています。違っていると言っても元がXMLなので文法はXML 1.0のものに従っています。
どれを使えば良い?
RSSではこのような問題があったりするためRSSに変わるものとしてAtom(2004年9月現在、策定中)というものが提案され正式版でないにせよブログなどで配信されています。RSSはMovable Typeなどのブログ作成ツールが自動生成してくれるため、一般ユーザーは全く気にすることなく利用できます。しかし、実際にRSS/Atomを配信する側としては、どうすれば良いのかという問題があります。RSS 0.9x/2.0, 1.0, Atomのどれを使えばよいか、結局のところ、現在ではRSSリーダーがRSS 0.9/2.0, 1.0にマルチ対応してしまってきているため、どれでも良いという状態になりつつあります。米国では0.9系、日本では1.0系が優勢のようです。
とりあえず、RSSを書いてみるならば手軽なRSS 0.9系が良いでしょう。HTMLよりも簡単なので、すぐに覚えられるでしょう。
RSSを書いてみよう
それでは、簡単なRSS (2.0)を書いてみましょう。ひな形は以下のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>(1)サイトのタイトル</title>
<link>(2)http://www.openspc2.org/</link>
<description>(3)サイトの内容</description>
<language>ja</language>
<item>
<title>(4)記事(ニュース)のタイトル</title>
<link>(5)http://192.168.1.12/</link>
<description>(6)記事の要約を書きます</description>
</item>
</channel>
</rss>
<rss version="2.0">
<channel>
<title>(1)サイトのタイトル</title>
<link>(2)http://www.openspc2.org/</link>
<description>(3)サイトの内容</description>
<language>ja</language>
<item>
<title>(4)記事(ニュース)のタイトル</title>
<link>(5)http://192.168.1.12/</link>
<description>(6)記事の要約を書きます</description>
</item>
</channel>
</rss>
(1)の部分に自分のサイト(ホームページ)のタイトルを書きます。次の(2)がサイトのURLです。トップページのURLを指定すればOKです。(3)は自分のサイトの内容を書きます。ここまではサイト全体の説明になります。
次の(4)が配信する記事のタイトルになります。(5)が記事のあるページのURLです。(6)に記事を要約した文章を書きます。(6)の要約記事の中にHTMLタグは基本的に含めない方が良いでしょう。ここらへんは明確には決まっていないようです。どうしてもHTMLタグを含めたい場合には<![CDATA[ タグを含む要約記事 ]]>のように指定します。RSSでは、こういう部分は明確に決まっていませんが、Atomでは明確に決められているようです。
上記のサンプルRSSは記事が1つの場合です。2つの場合には<item>〜</item>の部分を2つにします。つまり配信する記事が増えたら<item>〜</item>部分を増やすだけで良いのです。記事を2つ配信する場合には以下のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>(1)サイトのタイトル</title>
<link>(2)http://www.openspc2.org/</link>
<description>(3)サイトの内容</description>
<language>ja</language>
<item>
<title>(4)記事(ニュース)のタイトル、その1</title>
<link>(5)http://192.168.1.12/</link>
<description>(6)記事その1の要約を書きます</description>
</item>
<item>
<title>(4)記事(ニュース)のタイトル、その2</title>
<link>(5)http://192.168.1.13/</link>
<description>(6)記事その2の要約を書きます</description>
</item>
</channel>
</rss>
<rss version="2.0">
<channel>
<title>(1)サイトのタイトル</title>
<link>(2)http://www.openspc2.org/</link>
<description>(3)サイトの内容</description>
<language>ja</language>
<item>
<title>(4)記事(ニュース)のタイトル、その1</title>
<link>(5)http://192.168.1.12/</link>
<description>(6)記事その1の要約を書きます</description>
</item>
<item>
<title>(4)記事(ニュース)のタイトル、その2</title>
<link>(5)http://192.168.1.13/</link>
<description>(6)記事その2の要約を書きます</description>
</item>
</channel>
</rss>
RSS 1.0だと、もう少し細かくなります。RSS 1.0のひな形は以下のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="(1)http://www.openspc2.org/">
<title>(2)サイトのタイトル</title>
<link>(3)http://www.openspc2.org/</link>
<description>(4)サイトの内容</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="(5)http://www.openspc2.org/RSS/index.html" />
</rdf:Seq>
</items>
</channel>
<item rdf:about="(6)http://www.openspc2.org/RSS/index.html">
<title>(7)記事のタイトル</title>
<link>(8)記事のページへのリンク</link>
<description>(9)記事の要約</description>
</item>
</rdf:RDF>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="(1)http://www.openspc2.org/">
<title>(2)サイトのタイトル</title>
<link>(3)http://www.openspc2.org/</link>
<description>(4)サイトの内容</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="(5)http://www.openspc2.org/RSS/index.html" />
</rdf:Seq>
</items>
</channel>
<item rdf:about="(6)http://www.openspc2.org/RSS/index.html">
<title>(7)記事のタイトル</title>
<link>(8)記事のページへのリンク</link>
<description>(9)記事の要約</description>
</item>
</rdf:RDF>
(1)の部分はチャンネルのURIを指定します(かな?)。(2)はサイトのタイトルです。(3)はサイトのURLを指定します。(4)はサイトの内容、概要を指定します。(5)は(6)〜(9)までの記事と対応しています。<rdf:Seq>〜</rdf:Seq>内に記事の数だけ<rdf:li rdf:resource="〜">を記述します。rdf:resourceで指定するのは記事のURL/URIになります(一意、ユニークであれば良い。URL/URIで示されるものなら世界に1つしかないので干渉しあうことがないため)。この(5)で指定されるURIは以後に出てくる<item>のrdf:aboutで指定されるものと対応(同じ)していなければなりません。つまり、このサンプルでは(5)と(6)のURIは同じでないといけません。複数ある場合は、それぞれに対応していなければいけません。(7)は記事のタイトルになります。(8)が記事があるページへのリンクになります。(9)に記事の要約を書きます。
RSS 1.0の基本的な部分は、これしかありませんが、記事の出版日時など他の情報を扱う場合にはモジュールを利用します。多く利用されているのがDublin Coreモジュールです。Doublin Coreモジュールを追加するには<rdf:RDF>タグの属性として
xmlns:dc="http://purl.org/dc/elements/1.1/"
を指定します。このように指定し<item>〜</item>で
<dc:date>2004-10-03</dc:date>
のように使用します。これは日付を2004年10月3日として指定しています。他にもいろいろ利用することができます。詳しくhttp://www.kanzaki.com/のサイトを参照すると良いでしょう。詳しく解説されています。