岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

続・テンプレートを考える

前回の日記で「ロジックの書けないテンプレートエンジンを作ってみたいなあ」と書きましたが、良い実装案が浮かばないため、きれいさっぱり忘れることにしました。忘れるのは私の特技です。

そのかわり、良いアイディアが浮かびました。「XSLT風のテンプレートエンジン」です。

XSLTと同等の変換処理ができれば、「データをどのようなフォーマットで出力するか指定する」というテンプレートエンジンの目的は達成できるはずです。

とはいえ、本当にデータをXMLにして変換するのは面倒です。そこで、連想配列をテンプレートに渡すと変換が行なわれるよう実装します。

さくっと実装してみたところ、下記処理に相当するメソッドがあれば事足りそうな感じでした。

  • テキスト出力(xsl:text)
  • 条件分岐(xsl:if、xsl:choose)
  • ループ処理(xsl:for-each)
  • テンプレート呼び出し(xsl:call-template)

単なる「便利メソッドのないSmarty」のような気もしますが、それこそが私の欲しかったものなのかもしれません。