XML+XSLT+PHPによるサイト構築支援プロジェクトです。
本文データをXMLで記述することによりデータの汎用性を高めると共に、最終出力への変換をXSLTで行うことにより柔軟な表現を可能にしています。サーバサイドの処理はWEB開発に適したスクリプト言語PHPにより行います。
HIMMELは文章データとXHTMLでの表現を切り離しサイトの保守コストを低減する事を目的として開発されました。
XHTML文章には文章データそれ自体意外にもWEBページを単独で成り立たせる為に多くの情報が付加されています。たとえば作者のメールアドレスや著作権についての情報などがこれに当たります。このような情報は「WEBページ」としては必要ですが「文章」それ自身とは直接関係有りません。
これらの付加情報が各文章と同時に保存されている事により、従来方式であるXHTML単体でのサイト運営では保守が大きな課題でした。メールアドレスの変更に伴って全てのページを書き直した事がある人も多いでしょう。
ここで着目すべき点はこれらの付加情報はサイト全体で共通である場合が多いと言うことです。「全てのページを書き換える必要がある」ということは「全てのページで同じ情報を使用している」という事を意味します。たとえば、作者のメールアドレスやフッタに記載すべき情報は大抵どのページでも一緒です。
XHTML1.0まではこれらの共通情報を一括管理する方法として「フレーム」を使用することが出来ました。しかし、Strictの概念からすればフレームは非常に問題点が多く、本来はXHTMLが提供すべき機能ではないと考えられています(参考)。実際、最新の勧告であるXHTML1.1ではフレームが存在しません。
PHPを文章に埋め込む方式でも有る程度の効率化は可能です。しかしこの場合も文章に直接「表現の要素」を埋め込んでしまうため、新たな要素が必要になった場合結局全ページを書き直すことになってしまいます。
以上のような問題点を解決するため、HIMMELでは「文章データ」は「文章」に関する情報のみを保持し、付加情報はXSL変換により追加する方法をとっています。XHTMLを拡張した構造化言語「SDF」により文章データを記述し、XHTMLでの表現はXSL文章である「S3」で定義します。こうすることにより、「S3」を書き換えるだけでサイト内の全ページを一斉に更新することが可能です。
XSL変換をする際には「変換をするタイミング」が問題になります。Internet ExplorerやMozillaなど高性能なブラウザではクライアントサイドでのXSL変換が可能ですが、全てのUserAgentがこれらの機能を持っているわけではありません。どのようなUAにも対応するためにXSL変換はサーバサイドで行う必要があります。
SDFとS3はXMLとXSLTの仕様に従っているため、XSL変換さえ出来ればサーバサイドで使う言語は何でもかまいません。HIMMELではPHPを選択しました。クラスを呼び出すことにより簡単にXSL変換、送信を行うことが可能です。