RSS 用の XSL を公開してみる

MT のデフォルトのテンプレートに、Syndicate this site (XML) ってリンクがあったりして、良く分からない人がクリックしちゃうと XML のソースが表示されて、なんじゃこりゃってのがあるかも知れない。そこで当サイトでは、ブラウザで閲覧してもそれなりに見えるように、浅い知識ながら簡単な XSLT で変換していたりするんだけど、何となくその XSL ファイルを公開してみようかなって今突然思いついたんで、大した物じゃない(いや、マジで)けどご入り用なら如何でしょうかとか言ってみたりして。

ダウンロードして解凍すると、RSS1.0、RSS2.0、Atom0.3 それぞれに対応した XSL ファイルと共通の CSS ファイルが入っている。

atom.xsl
Atom0.3 用の XSL ファイル
rdf.xsl
RSS1.0 用の XSL ファイル
rss.xsl
RSS2.0 用の XSL ファイル
rss.css
各 Feed を XSLT で変換したものに適用する CSS ファイル(共通)

MT での適用方法は至って簡単。適用させたい各 Feed のテンプレートの XML 宣言の下に一行追加。

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<?xml-stylesheet href="<$MTBlogURL$>hoge.xsl" type="text/xsl" media="screen"?>

hoge.xsl の部分は、その Feed に対応した XSL ファイルを指定する。各 Feed と同じディレクトリに XSL ファイルと CSS ファイル(お好みのスタイルに変更)をアップして完成。あ、ちなみに XSLT で変換した XML をマック IE で開こうとすると、100% 死亡します:-(

実はここからが本題

さて、実はここからが本題なんだけど、Atom はエントリーの内容部分が全てエスケープされていて、それを回避するために、disable-output-escaping="yes" と指定してる。んが、Mozilla 系のブラウザだと認識されない。どうやら、Bugzilla にも上がっているらしいんだけど、今後も修正されない模様。何か解決方法ないですか?って、これが言いたかったわけです。(前置き、長っ!)

Atom 用の XSL ファイルを更新しました。Mozilla 系ブラウザでもエスケープされずに表示されるようにスクリプトを埋め込んでみた。

この記事についての情報

似た内容の記事

この記事に対するトラックバック

トラックバックURL: https://www.lucky-bag.com/mt/mt-tb.cgi/153

nJOY BLOG - RSS/Atom生成モジュール ver1.32 (2005年11月 1日 23:18)

BlognPlus 用モジュール「Feed Generator」をバージョンアップしました。 ■ Ver1.28 → Ver1.32 の変更点各フィードに... 続きを読む

山旅ブログ - 山旅アンテナ (2006年3月24日 07:09)

トップページ のリンク集部分に、 山旅アンテナ を追加しました。 RSSフィード... 続きを読む

つぶやき。もしくは独り言。 - 各FEED(ATOM0.3, RSS1.0, RSS2.0)を XSLT で見栄えよく (2006年7月15日 23:00)

Lucky bag::blogさんの記事を参考にして、 XSL StyleSeet を使って RSS その他のリンクを Webブラウザで開いたときにきれい... 続きを読む

Comments

(o) said:

自力ではないですが解決方法の一つを見つけました。

私は全部FeedBurnerにお任せしています。私の場合、RSS 2.0でcontent:encodedに全文突っ込んでいてatom/contentと同様にencodeされているわけですが、http://feeds.feedburner.com/ogawa をFirefoxで見てもdecodeされた状態で表示されています。で、e-luckさんの記事を読んでいったいどうやっているんだろうなと思っていたのです。

が、変換用のXSLT ( http://feeds.feedburner.com/~d/styles/rss2full.xsl )を読んでみて納得しました。一応disable-output-escaping="yes"してあるのだけどdecodeできなかった場合、Javascript ( http://www.feedburner.com/fb/feed-styles/xsl_mop-up.js )を読み込んでdecodeをやっています。

e-luck said:

ぅわー、わざわざ調べて頂いちゃってスイマセン。

そう言えば、Bugzilla の方にも、xsl:vender を分岐の条件として、Transformiix(mozilla の xslt プロセッサ)であればゴニョゴニョって感じの Javascript を使った方法がコメントされていたような。

やはり Javascript を使うしかないんすかね。

e-luck said:

つう事で、とりあえず Javascript で回避してみました。

ななみ said:

はじめまして  ななみ と申します。
RSS の XSL を探していて 先週 この記事を拝見し XSL と CSS のセットをいただきました。 ありがとうございました。

おかげさまで RSS 2.0 については CSS を少し書き換えて ブログの見た目と似た感じに作ることが出来ました。
これで 「フィードって 何?」 という方がクリックなさっても 違和感無く見ていただけるようになり とても嬉しく思っております。

ただ ちょっと気になる点があるのですが 教えていただけませんでしょうか。
まず カテゴリー名の前の数字を消すことが出来ません。
並び順を変えるために数字を書き加え ブログの方では CategoryDescription と書き換えることで解決できたのですが RSS では どうすればよろしいのでしょうか?

もう一つ 記事の地の文の中に 画像などへのリンクだけが ソースのまま表示されるのが気になります。 ポップアップ画像の場合など 長くなりますので 特に気になります。
ソースのままの部分だけ 消す(非表示にする)ということは 出来ませんでしょうか?

Atom については上手く出来ませんが head にリンクもありますので フィードの部分には RSS 2.0 だけにしておいてもいいかな・・・と 考えています。

長々と書き込んで 申し訳ありません。
教えていただけると ありがたく存じます。
どうぞ よろしくお願いいたします。

e-luck said:

>>ななみ さん
はじめまして。XSLT と CSS のご利用ありがとうございます。
カテゴリーについてですが、MovableType の管理画面にて、RSS 2.0 用のテンプレートを編集して、同じように MTEntryCategory を MTCategoryDescription に置き換えれば良いのではないでしょうか。見当違いなことを言っていたらスイマセン。

同じく、画像のリンク部分も消したいという事であれば、テンプレートを編集すれば良いかと。

ななみ said:

お返事 ありがとうございました。

早速 MTEntryCategory を MTCategoryDescription に書き換えてみましたら・・・
「テンプレート RSS 2.0 の再構築に失敗しました。 MTEntries タグでエラーが発生しました。 MTCategoryDescription タグでエラーが発生しました。 $MTCategoryDescription$ タグを適切な場所で使っていません。」 と出ました。

どうも 無理な望みだったようですので カテゴリー名の表示自体を諦めて そっくり削除いたしました。
記事の中のリンクの方は どう考えても消し方がわかりません。
ちょっと残念ですが RSS 2.0 については これくらいにしておこうかと考えています。

それより 私も FeedBurner にしてみようかと思い始めています。
うまく出来るかどうか分かりませんが ちょっと頑張ってみます。
また 行き詰ったら お邪魔するかもしれません。 その時は よろしくお願いいたします。
どうも ありがとうございました。

ななみ said:

しつこくて 申し訳ありません。

昨夜 書き込ませていただいた時 MTタグをそのまま書いて「確認」しましたら タグの部分だけ消えてました。
その時は 「あら大変」と思い 前後の不等号(?)を消してみると現れましたので 「やれやれ」と思っただけでした。

今朝になって ようやく気がつきました。 「あれこそ 私が望んでいることだった。」
思いつく言葉であれこれ探してみたのですが 「掲示板などの安全のため」ということは分かりましたが 具体的な方法(どのファイルの どのあたりに どのように書くか)を 見つけることができません。

どんな言葉で探せばいいのでしょうか?
そのようなことを詳しく解説されているサイトさんを ご存知ありませんでしょうか?
お手数をかけますが 教えていただけるとありがたく存じます。
そうぞ よろしくお願いいたします。

e-luck said:

すいません。コメントではタグが使用できないことを明記していませんでしたね。

コメントで HTML 等のタグを使えなくするには、MovableType の設定でできます。
管理画面の「設定」内、「コメント/トラックバック」にある「HTMLの利用を許可」のチェックを外せば良いだけです。

ななみ said:

「いろいろお手数をかけましたが 私も FeedBurner に移行いたしました。」 と ご報告したいと思い 昨夜がんばったのですが 中途半端な状態になりました。 IE6 では見えているのですが Firefox1.5 と Netscape7.1 では ドキュメントツリーしか見えません。 どうしてなのでしょう?

作業の手順は 新しい名前で xml を作り そのアドレスで FeedBurner に登録してアドレスを貰いました。 その時点では きちんと見えていたのです。 ヘッダの RSS2.0 と Atom へのリンクを書き換えて その二つのテンプレートの「自動的に再構築」 のチェックを外しました。
昨日の日記を書き込んだ後 見えなくなったのですが なぜか しばらくすると IE6 だけ見えるようになりました。 どうしてなのでしょう?

htaccess に Redirect などを書かなければならないのでしょうか?
サイトの方では htaccess を作って SSI の include やエラーページを使っているのですが そのファイルに書き加えるのでしょうか?
ブログは コンテンツの一つという位置にありますので もう一つ htaccess を作ってブログのフォルダーにアップするのでしょうか?

昨夜から ?マークで一杯になった頭が混乱して 立ち往生しています。
私は どうしたらいいのでしょう?

ななみ said:

Firefox でも見えるようになりました。 消えていた 「ライブブックマークを追加」 のマークも 見えるようになり きちんと機能しているようです。 
htaccess を作って ブログのフォルダーにアップするのに 随分長く迷いましたが ようやく出来て ホッとしております。

xsl から FeedBurner まで いろいろ知ることが出来て とても嬉しく思っております。
本当に ありがとうございました。
長々とお騒がせして 申し訳ありませんでした。