このサイトの構築構造
全部 XML から XSLT プロセッサを通して XHTML やらなにやらを生成してる。日記部分は動的に、/about とかは静的に、それぞれ別のスクリプトが変換を担当している。日記は taglibro と呼ばれるスクリプト。静的リソースは名前のない build.rb というスクリプトが変換してる。build.rb は Makefile の類でもよさそうだけど、Ruby で書いておいたほうがなんでもできるのでいいや、みたいな。
- common.xsl
- サイト共通のテンプレートが書いてある。例えば head 要素内やつ。CSS とか、スクリプトを加えたいときはコレだけ編集してサイト全体を再変換させている。XHTML 用。
- 2html.xsl
- 静的リソースを変換するためのファイル。ソース XML はちょっとキモイんだけど、実用上問題ないのでいいや、みたいなヤッツケ的スタイルシート。だいぶ前に書いた。
- logs/common.xsl
- taglibro (日記) 用の共通部分。各種変数 (Content-type 非依存) なものがまとめて書いてある。flavor.(\w+).xsl から include されてる。
- logs/flavor.xhtml.xsl
- taglibro の XHTML 用テンプレート。
本当なら、taglibro は Accept ヘッダを解析してそれにあったやつを返すべきなんだけどめんどっちくて実装してない。これを実装すると IE に application/xhtml+xml を送らないようにする処理がなくせていいんだけど……(text/html を受け付けるなら flavor.html.xsl を読み込むようにする、flavor.html.xsl は flavor.xhtml.xsl なり、共通部分を分離した他の .xsl を include してやる、みたいな。)
関連エントリー
- text/html => XHTML 1.0 Strict 今まで IE には XHTML 1.1 を Content-type だけ変えて送信していたけど、XHTML 1.0 で送信するようにした。...
- Accept によるネゴシエーション実装 Accept ヘッダによるコンテントネゴシエーションを実装した。昨日 UA による振り分けでごちゃったばっかりだけど、そいつらはコメントアウ...
- msxsl | xmllintmsxsl | xmllint サイト全体を XML + XSLT 化? の続き。ファイル名から判断して msxsl に突っ込むスクリプトを書く。具体的には index.h...
- サイト全体を XML + XSLT ? サイト全体を XML データをもとにして XSL 変換したほうが楽っぽいなぁ。辞書とか、ヘッダ・フッタとかの共通部分を完全に一箇所にまとめら...
- 台風・雨・ネゴシエーション どっつぃさんに IE でダウンロードになるぜ的指摘を受けたので思い返してみると application/xhtml+xml を受け入れるよう...