RSSのフォーマット・仕様・構造 - RSS1.0、RSS2.0、Content-Type

更新:

RSS(RSS1.0、RSS2.0)のフォーマット・仕様についてのメモ。RSSを扱っているサイトのほとんどは、RSS1.0かRSS2.0を使っている。

RSS1.0のフォーマット・仕様

RSS1.0は、以下のような構造になっている。
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xml:lang="ja">

	<channel rdf:about="サイトのRSSのURL">
		<title>サイトのタイトル</title>
		<link>サイトのURL</link>
		<description>サイトの内容</description>
		<dc:date>RSSの最終更新日時</dc:date>
		<dc:language>ja</dc:language> 
		<items>
		<rdf:Seq>
		<rdf:li rdf:resource="記事1のURL" />
		<rdf:li rdf:resource="記事2のURL" />
		</rdf:Seq>
		</items>
	</channel>

	<item rdf:about="記事1のURL">
		<title>記事1のタイトル</title>
		<link>記事1のURL</link>
		<description><![CDATA[記事1の内容]]></description>
		<dc:creator>記事1の作者名</dc:creator>
		<dc:date>記事1の作成日時</dc:date>
	</item>

	<item rdf:about="記事2のURL">
		<title>記事2のタイトル</title>
		<link>記事2のURL</link>
		<description><![CDATA[記事2の内容]]></description>
		<dc:creator>記事2の作者名</dc:creator>
		<dc:date>記事2の作成日時</dc:date>
	</item>
</rdf:RDF>
  • channel にサイトの基本情報。item に記事の情報を書く。
    記事を増やす場合は、rdf:Seq と item 両方に必要な情報を追加する必要があり、やや面倒。
    同じURLを何度も書く必要がある。
  • URL、タイトル、本文、日時の4つが基本項目。
  • 通常、最新の記事を一番上に書く。
  • 日時は、2005-09-30T03:00:36+09:00 のように書く。
  • <> などタグを使う場合は、&lt; などで回避する。
    また、<![CDATA[]]> で囲むとタグを回避できる。
  • item には、以下のような情報も書くことができる。
    <trackback:ping>:トラックバックのURL
    <dc:subject>:カテゴリ名


RSS2.0のフォーマット・仕様

RSS2.0は、以下のような構造になっている。
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:admin="http://webns.net/mvcb/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

	<channel>
		<title>サイトのタイトル</title>
		<link>サイトのRSSのURL</link>
		<description>サイトの内容</description>
		<dc:language>ja</dc:language>
		<dc:creator>サイトの作者名</dc:creator>
		<dc:date>RSSの最終更新日時</dc:date>
		
		<item>
		<title>記事1のタイトル</title>
		<link>記事1のURL</link>
		<description>記事1の内容</description>
		<dc:subject>記事1のカテゴリ名</dc:subject>
		<dc:creator>記事1の作者名</dc:creator> 
		<dc:date>記事1の作成日時</dc:date>
		</item>

		<item>
		<title>記事2のタイトル</title>
		<link>記事2のURL</link>
		<description>記事2の内容</description>
		<dc:subject>記事2のカテゴリ名</dc:subject>
		<dc:creator>記事2の作者名</dc:creator> 
		<dc:date>記事2の作成日時</dc:date>
		</item>
	</channel>
</rss>
RSS1.0より書式がシンプル。
日時の書式やタグの回避方法など基本ルールはRSS1.0と同じ。

item に関しては、以下のような書き方もある。
<item>
<title>記事2のタイトル</title>
<link>記事2のURL</link>
<description>記事2の内容</description>
<pubDate>記事2の作成日時</pubDate>
<category>記事2のカテゴリ名</category>
</item>
どちらでも良いらしいが、通常どちらかに統一して書く。
pubDate は、Thu, 21 Jul 2005 14:46:19 +0900 のように書く。


RSSのContent-Type

.htaccess などに記述する Content-Type は、サイトによって様々で、以下のようなものが多い。
(拡張子を.rdfにした場合)
application/xml .rdf
text/xml .rdf
application/rdf+xml .rdf
application/rss+xml .rdf
PHPなどのプログラムで出力する場合は、header() に Content-Type を指定して出力する。
Content-Type さえ指定すれば、拡張子は、.rdf、.xml、.cgi、.php など何でも良い。


link要素(タグ)

サイトでRSSを配信する場合は、HTMLのHEAD内にRSSのURLを示す要素(タグ)を書く。
hrefにRSSのURLを書く。
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://example.com/rss.rdf" />