y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

文書登録/更新情報のRSSフィード機能

仮想フォルダ(プリセットクエリ)に対して、RSS1.0とRSS2.0形式で最新の更新分を配信する機能を追加した。
ログの登録や更新情報を単純にフィードしようかとも思ったが、さすがに自分に関係ないドキュメントのログまで見たい人はいないだろうと言うことで、自分が良く使うフォルダをRSSのチャンネルに見立てたというわけ。
DBにログインしなくても特定のフォルダに登録された文書の情報をプッシュしてくれる(実際にはRSSアグリゲータが巡回受信しているだけなのだが)方が便利。
通常ブログやニュースサイトなんかで使われるRSSは記事の配信であるが、図面・文書管理システムでは、登録・編集の際の更新コメント(どこそこを変更しました・・・というようなコメント情報)を配信しようかと思っている。

・・・とこれは完成すればの話なのだが、今日完成したのは、DBからレコードを抽出して、RSS1.0(RDF形式)とRSS2.0(XML)を出力するところまで。
RSSリンク
RSS表示
RSSの仕様、MovableTypeが書き出すRSSとにらめっこしながら、なんとかコーディング。
現在のASP環境がShift_JISなのでとりあえず、UTF-8ではなくて、Shift_JISという体たらく。
仕方がないのでUTF-8以外の日本語表示が可能と評判のSharpReaderをダウンロード・セットアップして、DBから生成したRDF/XMLを読み込んでみた・・・・が無残にも失敗。
「リダイレクトが多すぎます」というようなエラー。
IEFireFoxRSS出力用のURLを打ち込むと正常にXMLが書けているところまでは確認できたのだが・・・。
やはりRSSReader(できればFeedReaderとかFireFoxとかThunderBirdなどのメジャーな製品)で見られないと意味が無い。

それにしても、XMLデバッグは本当に根気が必要な仕事であった。
文字についても、<>や&なんかをきちんとエスケープしてあげないとエラーが出まくる。
プログラム部分だけならまだしも、文書タイトルや本文なんかのDBレコードに対しても、不正な文字が入っていないかを確認しなきゃならない。
本来ならば使ってはいけない文字を調べて、エンコード関数なんかを作る必要があるところ、Server.HTMLEncode一発でとりあえず逃げた。

あーあ。今日中にRSSReaderで更新履歴を取得できるところまで仕上げたかった。
会社で8時間+自宅で6時間作業してこの程度の進捗かよぉぉぉ。