RSS

概要

RSS (RDF Site Summary) (Really Simple Syndication)

Webサイトの見出しや要約などのメタデータを構造化して記述するXMLベースのフォーマット。おもにサイトの更新情報を公開するのに使われている。

RSSで記述された文書には、Webサイトの各ページのタイトル、アドレス、見出し、要約、更新時刻などを記述することができる。RSS文書を用いることで、多数のWebサイトの更新情報を統一的な方法で効率的に把握することができる。

指定したサイトのRSS情報を取り込んで更新状況をまとめたWebページを生成するアンテナ (巡回) ソフトや、デスクトップに指定したサイトの更新情報を表示するティッカーソフトなどが開発されている。また、ニュースサイトや著名なウェブログなどでは、更新情報をRSSで公開するところが増えている。

RSSはバージョンアップの過程で複数の系統に分裂し、互換性の無い状態となった。「RSS」のフルスペルもそれぞれ別のものを名乗っている。用途も微妙に異なるため、現在も複数のバージョンが並存している。大きく分けて、RDF Site Summary 0.9→1.0という系統と、Rich Site Summary 0.91→(0.9x→)Really Simple Syndication 2.0の系統がある。

RSSとは【RDF Site Summary】(Really Simple Syndication) - 意味/解説/説明/定義 : IT用語辞典

RSSの種類

RSSには大別して2種類あり、これらに互換性はありません。

系統 ベース 遷移
RSS 1.0系 RDF
  • RDF Site Summary 0.9
  • 1.0
RSS 2.0系 XML
  • Rich Site Summary 0.91
  • → 0.9x
  • → Really Simple Syndication 2.0

ファイル拡張子

ファイルの拡張子は、RSSの系統ごとに

  • RSS 1.0 … .rdfまたは.xml
  • RSS 2.0 … .rssまたは.xml

のように使用されてます。しかし拡張子にたいした意味はないので、これは好みのもので構いません。それよりも、MIMEタイプをapplication/rss+xmlと返すべきです。

RSSのサンプル

RSS 2.0

<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>チャンネル名</title> <!-- (必須) -->
    <link>http://example.com/</link> <!-- (必須) チャンネルに対応するWebサイトのURL -->
    <description>チャンネルの説明</description> <!-- (必須) -->

    <item>
      <title>記事1のタイトル</title>
      <link>http://example.com/item1.html</link> <!-- 記事のURL -->
      <description>記事1の説明</description>
    </item>
    <item>
      <title>記事2のタイトル</title>
    </item>
    <item>
      <description>記事3の説明</description>
    </item>
  </channel>
</rss>
RSS 2.0のサンプル

要素

channel要素
要素 説明 必須
title  
link チャンネルに対応するWebサイトのURL
description  
item   ×
item要素
要素 説明 必須
title   ×
link 記事のURL ×
description   ×

RSS 1.0

<?xml version="1.0"?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/">

  <channel rdf:about="http://example.com/sample.rss">
    <title>チャンネル名</title> <!-- (必須) -->
    <link>http://example.com/</link> <!-- (必須) チャンネルに対応するWebサイトのURL -->
    <description>チャンネルの説明</description> <!-- (必須) -->
    <items> <!-- (必須) コンテンツのRDFテーブル -->
      <rdf:Seq>
        <rdf:li resource="http://example.com/item1.html" />
        <rdf:li resource="http://example.com/item2.html" />
        <rdf:li resource="http://example.com/item3.html" />
      </rdf:Seq>
    </items>
  </channel>

  <item rdf:about="http://example.com/item1.html">
    <title>記事1のタイトル</title> <!-- (必須) -->
    <link>http://example.com/item1.html</link> <!-- (必須) 記事のURL -->
    <description>記事1の説明</description>
  </item>
  <item rdf:about="http://example.com/item2.html">
    <title>記事2のタイトル</title>
    <link>http://example.com/item2.html</link>
  </item>
  <item rdf:about="http://example.com/item3.html">
    <title>記事2のタイトル</title>
    <link>http://example.com/item3.html</link>
  </item>
</rdf:RDF>
RSS 1.0のサンプル

要素

channel要素
要素 説明 必須
title  
link チャンネルに対応するWebサイトのURL
description  
items コンテンツのRDFテーブル
item要素
要素 説明 必須
title  
link 記事のURL
description   ×

RSSの解析

RSSはXMLを基本としているため、RSSの解析はXMLのそれと同じです。

PHPによる処理

PHPでは、XMLのパーサを使用することで簡単に処理できます。たとえばRSS 2.0を対象とするならば、次のようにすることでその内容を出力できます。

$rss = simplexml_load_file( $url );

echo $rss->channel->title; // チャンネルのタイトル

foreach( $rss->channel->item as $item )
{
    echo $item->title; // 項目のタイトル
}

参考