F.Ko-Jiの「一秒後は未来」

RSSフィードのXSLTを有効にする方法と、ブラウザがフィードを判別する仕組み

以前「Firefox2.0(β版)のフィードに対する3つの特徴」にも書いたように、Firefox2.0やIE7ではRSSフィードのスタイルシートが無視され、ブラウザ独自の表示がなされてしまいます。

これに対して、いくつかのサイトでスタイルシートを有効にさせる方法が紹介されています。これらはいずれもブラウザがRSSフィードを単なるXMLと判別するようにRSSフィードを偽装します。

Firefox 2 でフィードの XSLT を有効にする: Days on the Moonより

フィードのMIMEタイプをapplication/xmlにして、文字コードをUTF-16にすればいい

フィードのMIMEタイプをapplication/xmlにし、先頭512バイトを空白文字またはコメントなどで埋める

Firefox 2.0でRSS 1.0の製作者XSLTスタイルシートを適用 – 徒書より

RDFの名前空間接頭辞をrdf:からRDF:と変える(RSS1.0)

これらの根拠は、IE7がフィードを判別する方法にあるようです。Firefox2でもこれと同じ方法でフィードを判別しているそうです。概要は以下の通り。

1. IE checks the HTTP Content-Type header provided by the web server. If the HTTP Content-Type header of the file indicates that it is for an application that can handle feeds, IE applies its feed preview on the feed file.
2. Some content types are generic XML or RDF content-types which may be feed files. In the case, IE will scan the first 512 bytes looking for common identifiers of feeds. If these identifiers are found, IE will apply its feed preview.

まず、フィードのContent-Typeからフィードの可能性があるファイルかどうか判別し、さらにファイルの先頭512バイトを読み込んでフィードかどうかを決定しているようです。

ここからは引用なしで。

それぞれのフォーマットごとに詳しく見てみると、RSS2.0、0.91、0.92のContent-Typeはtext/xmlで先頭512バイトに<rssが含まれていること、もしくはContent-Typeがapplication/rss+xmlであることが条件。ただし、文字コードがUTF-16の場合は、必ずContent-Typeはapplication/rss+xmlでなければならない、と書かれています。

Atom1.0と0.3の場合、Content-Typeはapplication/atom+xmlであること、もしくはContent-Typeがtext/xmlで先頭512バイトに<feedが含まれていることがAtomと判別される条件です。

RSS1.0の場合は、Content-Typeはapplication/xmlもしくはtext/xmlで、先頭512バイトに<rdf:RDFが含まれていることが条件になっています。

このような条件でIE7およびFirefox2はフィードかどうかを判別しているため、最初に紹介したような方法でスタイルシートを有効にできるようです。

もちろんこれらの対策をとる前に、BloglinesやMy Yahoo!、livedoor Readerなどの各種RSSリーダーがきちんとフィードを読み込んでくれるかどうか、しっかり確認することが大事だということは言うまでもありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など