XSLT プロセッサの Xalan-Java2 は、Extension で Bean Scripting Framework (BSF) を使って XSLT 中に直接 (ActiveState の) PerlScript を埋め込めるらしい。 さっそくチャレンジ。
Debian パッケージが Intel Linux 用にあるので、これをインストール(ActivePerl-5.6.1.630-i686-linux.deb)。 /usr/local/ActivePerl-5.6 以下にはいる。 問題なし。
Xalan-Java2 のページを参考に PerlScript を埋め込む。
動かない。 BSF のソースを見てみる。 れれ、ビルドファイルを見ると、ActiveScript はべったり Win32 用だ。 がびん。 やっぱり素直に Java で Extension 書くか。
最近、本サイトの生成フレームワークを一新すべく模索中(現在は XML + 自作 Perl スクリプト)。 今の最有力候補は XML + Ant + Xalan。 他にいろいろ見ていたら、Cocoon 2 はどうかなと。 XML から XSLT 他を用いて HTML とか WML とかを生成する server application なんだけど、ローカルで立ちあげて Wget とかでローカルに静的なファイルとして落とせば、それをサーバに置けるんじゃないかなぁ。 すぐ思いつく問題は、
「コンテントネゴシエーションまわり」(en, と ja を別々のファイル名できちんととりだせるか)
等々。ドキュメントだけ静的にアーカイブしたものとかあるから、静的なファイルに落とせるんだろうなとは思いつつ。 とりあえず、インストール。 まず先に Tomcat
cd /usr/local tar zxvf jakarta-tomcat-4.0.1.tar.gz
次 Cocoon 2
cd /usr/local tar zxvf cocoon-2.0-bin.tar.gz cp /usr/local/cocoon-2.0/cocoon.war /usr/local/jakarta-tomcat-4.0.1/webapps/
Tomcat がデフォルトで 8080 ポートをつかうのだが WWWOFFLE が既に使っている。 Tomcat の方をずらすより、WWWOFFLE の変更の方が勝手がわかるのでそちらをずらす。 で
/usr/local/jakarta-tomcat-4.0.1/bin/startup.sh
で起動。http://localhost:8080/cocoon/ に Galeon でアクセス。 一発目は非常に遅い。他のページも一度目は閲覧は遅いがキャッシュが効くので次からはそれほどでもない。
とりあえず、ドキュメントを読んでいろいろ調査。
Progect のデータを Palm::Progect で読み込んで XML::LibXML で DOM 化し、そのまま出力あるいは XML::LibXSLT を通して text や HTML に変換する方法を検討。
Progect のデータをそのまま欲しい形式変更するのが手っ取り早いのだが、プロジェクト中の抜き出したいタスクの指定方法や出力の整形方法の指定方法を定義するのが面倒なので XSLT で逃げようかと。 まぁ XSLT も書くの面倒ではある。
Palm::Progect::Converter::hoge を書くという手もあるが。
www.naney.org だとTemplate Toolkit が動かない事がわかってしまったので、やっぱり手元で静的するセンにする。
今までは「XMLによるページ記述 + 自作ツールによる DOM ベースの変換 + XSLT」で生成していたのだが、あまりメンテしていないのでライブラリのバージョンが上がるたびに動かなくなったりいろいろ不便になってきた。 今後は現在いろいろいじっている Template Toolkit ベースにしたい。 まずは付属の ttree を使ったサイト生成にしてみる。
で、いくつかのページをこちらで生成してみることにした。 今までより出力を簡単に修正できるようになった。 ただし以前のXMLベースの時よりは崩れたHTMLを生成する可能性が高くなるので要注意。 GNU m4 でサイトを生成していた時の感じに少し戻った気分。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。