mikaka.org/掲示板

キーワード: XMLXSLXSLTXalan

作業の流れ:
bbs1998.txt -- MiniBBSのログファイル、テキストファイル
↓ Perlスクリプト
bbs1998.xml -- XML形式のファイル
↓ XSLT
bbs1998.html -- HTML、ただし、XSLTを使っているのでXHTML(XMLの文法に沿うHTML)になってしまう

サンプル:
MiniBBSログファイル bbs1998.txt
実際の使っているものとは違います。

Perlスクリプト minibbs2xml.pl
mikaka.orgのBBSで使っているCGI、Minibbs2のログファイルを、(私独自のいいかげんな)XMLに変換するPerlスクリプト。実際に使っているもの。
本家CGIのログファイル表示ルーチンをほぼ流用。本家CGIはHTMLを出力するが、こちらはXMLを出力する。HTMLとXMLは(少なくとも今回出てくる範囲においては)ほぼ同じなので、このスクリプトは楽に作れた。

XMLファイル bbs1998.xml
実際の使っているものとは違います。
私がお気楽に作ったもの。DTDは無い。いわゆる整形式XMLというやつ? もとのログファイル(テキストファイル)と見比べれば、XML/HTMLの予備知識がない人でも、何やらイメージできるはず。

XSLTスタイルシート mikabbs.xsl
実際に使っているもの。XSLTプロセッサはXalanを使用。コマンドラインから、
% java org.apache.xalan.xslt.Process -in bbs1998.xml -xsl mikabbs.xsl -out bbs1998.html
このXSLTは、本家MiniBBSの出力するHTMLを意識したもの。ほんの一例。別にこの形式じゃなくてもよいし、HTMLを出力しなくてもよい。ただのテキストファイルで出力するものも書ける。
このXSLTでの工夫について。本家MiniBBSの出力では、画像ファイルは<img src で張り付けている。しかし、1998年のログともなると、デッドリンクとなった画像の方がはるかに多い。そこで、画像を<img src ではなく、<a href でリンクを張るようにした。これが気に入らない人は、このXSLTをちょっといじって、元XMLをtransformすればよい。サンプルのXSLTを読めば、XSLTについてほとんど知らない人でも、だいたいどう変更すればいいか分かると思う。それぐらい、やるべきことは単純。こういったふうに便利に応用できるのが、XSLTの利点。

最終結果HTMLファイル bbs1998.html
実際に公開しているファイル。

残る問題点:
私がまだまだXML初心者なため、力技やうまくいかないところが多々あります。
最終出力のHTMLの本文を、contentタグというHTMLにはないタグで囲ってしまっている。ブラウザによっては本文が表示されないかも?

今後の課題:
せっかくXMLにしたのだから、いろいろ面白いことをやろう。
19XX年X月X日から19XX年X月O日までの過去記事を表示したり、XXさんの書き込みだけ表示したり、URLと思しき文字列を自動的に a href で囲んだり、ツリー表示にしてみたり。。
XML形式でログファイルを保存する掲示板を作ろう or 見つけよう。
わけあって過去記事の元データ(XML)が欲しい方は、連絡ください。