とりあえず、現在の状態を公開。残りはPHP5がリリースされてから。
今回、XSLT部分はSDF STYLE SHEET(S3)としてPHPの支援が無くても動くようにした。XSLT1.0の範囲でしか作っていないので他のプラットフォームでも動く。
SDFとS3は名前空間を分割してSDF+S3をHTML+CSSに近い構成にした。SDFにS3の名前空間内の属性を付けることによってXSL変換時のフラグを立てることが出来る。現在の所、メタデータ部分を出力するかしないかが選択可能だ。違う名前空間なのでSDFの構造自体はいじらなくて済む。
core.xslはどのサイトでも普遍的に使われるテンプレートを含んでいる。細かい設定はinterface.xslに書けばよい。XSL変換の際はオーバーライドを可能にするためにどちらかと言えば設定ファイルに近いinterface.xslを呼び出すことになる。
S3の支援用にSiteMapが必要になった。グローバルナビゲーションのリンクを制作するのに使う。XSL変換中にはディレクトリ一覧を得ることが出来ないのであらかじめ手動で作っておくか、スクリプトなどで出力しておく必要がある。手動は面倒なのでPHPのスクリプトを書いた(makemap.php)。S3に混ぜると訳が分からなくなりそうなので、名前空間は専用のものを用意した。
S3だけでどんなプラットフォームでも動作可能なSDFの変換系は完成している。
HIMMELとしての機能は単純にサーバサイドでのXSL変換だけになった。interceptor.phpがメインのスクリプトだ。ソースがやたら適当だがPHP5が出るまで書き直すつもりは無い。S3による変換後、必要ならXHTML1.0に書き直し(11to10.xsl)、名前空間接頭辞を綺麗にして(valid.xsl)、DTDを付け加えつつインデントしている。インデントする前にpre要素内だけは配列に保存しておいて、インデント後に置換している。こうしないと空白ノードがおかしな事になるのを避けるためだ。
http://yudai.arielworks.com/memo/2004/07/13/002738.trackback
末尾に「8 + 5」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「002738.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。