Firefox 2 でフィードの XSLT を有効にする ― 2006年10月28日 18時17分
各地で話題になっている、Firefox 2 が RSS フィードの製作者スタイルシートを無視する問題だが、「あの不定記 Firefox 2 のフィードプレビューで XSLT が無視されてしまう」にてフィードプレビュー自体を無効にする方法が載っている。しかし、そもそもスタイルシートが結び付けられてないフィードも多いわけで、そういったフィードにはフィードプレビューを使いたいところ。
そこで、上記記事をヒントに、XML がフィードかどうかを判別する XPCOM コンポーネントを置き換えてやればいいのではと思い立って、xml-stylesheet 処理命令が含まれる場合はフィードとみなさないコンポーネントを JavaScript で書いてみたのだが、C++ で書かれたコンポーネントを JavaScript で書いたコンポーネントで置き換える方法がわからずに挫折。
仕方なく処理の流れを追っていたら、フィードを解析する時点でスタイルシートの有無もチェックしていることが判明。だが、その情報がどこでも活用されていないようだったので、あれこれと見て回った結果、Firefox インストールディレクトリの components ディレクトリにある FeedConverter.js の 188 行目、if (result.doc)
を if (result.doc && !result.stylesheet)
に書き換えてやれば、製作者スタイルシートを持つフィードにはそれを適用し、そうでないものにはフィードプレビューを使うことができるようになることがわかった。diff もとったので置いておく。
--- components/FeedConverter.original.js 2006-10-26 04:47:08.000000000 +0900 +++ components/FeedConverter.js 2006-10-28 17:01:30.902990400 +0900 @@ -185,7 +185,8 @@ Cc["@mozilla.org/network/io-service;1"]. getService(Ci.nsIIOService); var chromeChannel; - if (result.doc) { + // If a stylesheet is associated with the feed, use it. + if (result.doc && !result.stylesheet) { // If there was no automatic handler, or this was a podcast, // photostream or some other kind of application, we must always // show the preview page...
例によって改造は自己責任で。この先、差分アップデートがあったときにどうなるかとかはまったくわからないのでそのつもりでよろしく。
書き忘れていたが、フィードプレビューは、フィードの MIME タイプが applicatoin/atom+xml でも application/rss+xml でもなく、かつ文字コードが ASCII と互換性のないものであるときは有効にならない。つまり、Firefox 2 でフィードを見ている人全員に、フィードの製作者スタイルシートが適用されるようにするするためには、フィードの MIME タイプを application/xml、文字コードを UTF-16 にするという手もある。
Firefox 2 のフィードの判別方法は IE 7 のフィードの判別方法と同じであり、リソースの先頭 512 バイトしか見ない。なので、Firefox 2 および IE 7 でフィードに製作者スタイルシートを適用させるためには、フィードの MIME タイプを application/xml にし、先頭 512 バイトを空白文字またはコメントなどで埋めるという手もある。
なるほど。実体参照を使うという手があったか。まあこれは文字参照でも同じだと思うので、以下のようにするのがお手軽かもしれない。(Firefox 2 でのみ確認、一般のフィードリーダで読めるかは不明。)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rss="http://purl.org/rss/1.0/"
コメント
_ anonymous ― 2006年11月03日 20時06分
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。
トラックバック
このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2006/10/28/577849/tb
_ 帰納法障碍 - 2006年10月29日 13時37分
_ RSS Info. - 2006年10月30日 23時00分
RSS Info.:Firefox2.0のRSS機能速攻レビュー
上の2つのエントリで、IE7とFirefox2.0のそれぞれのRSS機能を紹介しました。
今まではRSSのソースがそのまま表示されていたのが、デザイン(スタイル)が適用されて表示されるという機能は....
_ あの不定記 - 2006年11月01日 02時41分
Firefox 2
でフィードの XSLT を有効にする: Days on the Moon
Firefox インストールディレクトリの components ディレクトリにある FeedConverter.js
の 188 行目、if (result.doc) を if (res
http://firefox.geckodev.org/index.php?Feed%20with%20Stylesheet