日記
trackbackの__mode=rssを使えばいいのか (13:44)Edit

特定の記事のRSSを取得する方法」というネタを前に書いたけれども、そういえばちょうどいいものがあることを思い出した。現在のところほとんど役に立っていない、trackbackの__mode=rssによるRSS出力を流用したらいいんじゃなかろうか?

trackbackの仕様書によれば、__mode=rssで返すXMLは、

<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
<rss version="0.91"><channel>
<title>TrackBack Test</title>
<link>http://this.is/the/trackback/item/link/</link>
<description>Description of the TrackBack item</description>
<language>en-us</language>
<item>
<title>TrackBack Demo</title>
<link>http://this.is/the/permalink/</link>
<description>Excerpt</description>
</item>
</channel>
</rss>
</response>

なんて感じになっているけど、どうせならば、

<?xml version="1.0" encoding="utf-8"?>
<response>
<error>0</error>
<rss version="0.91"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<channel>
<title>TrackBack Test</title>
<link>http://this.is/the/trackback/item/link/</link>
<description>Description of the TrackBack item</description>
<dc:date>date</dc:date>
<dc:creator>author</dc:creator>
<content:encoded><![CDATA[encoded body]]></content:encoded>
<trackback:ping>http://this.is/the/trackback/ping/url/</trackback:ping>
<language>ja_Jp</language>
<item>
<title>TrackBack Demo</title>
<link>http://this.is/the/permalink/</link>
<description>Excerpt</description>
<content:encoded><![CDATA[encoded body]]></content:encoded>
</item>
<item>
<title>Comment Demo</title>
<dc:creator>commentor</dc:creator>
<description>Excerpt</description>
<content:encoded><![CDATA[encoded body]]></content:encoded>
</item>
</channel>
</rss>
</response>

みたいな感じに拡張して、記事情報にcontent:encodedやdc:creatorなどの情報も含めつつ、従来返していたtrackback一覧に加えて、コメント一覧も返してしまう。すると、HTML中に埋め込まれた記事のRDFから、trackback ping urlを抽出すると、それを使ってその記事に関するすべての情報をXML形式で取得することができるようになる。

RSSには通常descriptionしか含めないようにしつつ、それより詳しい情報が欲しい場合は、trackback ping urlに__mode=rssをつけてGETし、そこにcontent:encodedが含まれていたらそれを表示。なかったらしょうがないからpermanent linkをブラウザで開く、といったイメージ。

Published At2004-09-21 00:00Updated At2004-09-21 00:00