テンプレートエンジンへ渡すデータの楽な定義の仕方はないもんか

簡単な方法は無いもんかと模索中。ぱっと思いついたのを列挙してみる。

  • put(key, value)のコードをハードコーディング
  • key = valueのプロパティファイル形式で指定
  • <key>value</key>のXML形式で指定
  • OGNLで指定
  • JSONテキスト形式

オブジェクトを渡すのではなく、あくまで外部からテキストデータを渡す事を想定している。

単純な形式ならkey = valueで良いと思うけど、データが親子の構造を持つようになると定義の仕方が面倒になる。そうなるとJSONテキストとXMLが有利だけど、書くのがめんどくさい。じゃぁアウトラインエディタを使えばいいんじゃね?というとそうかもしれない。書くのが面倒なら書くのが楽になるツールを使えばいいだけの話かもしれない。

でも単なるXMLだと親子関係は定義できても、親を継承した子供をたくさん独立で定義するというのが定義できない。例えていうなら<子 extends="親"></子>な感じ。いや、定義自体はできているがこいつを解釈するプログラムが必要になってくる(作るのは手抜きを諦めた時)。

そこで実験してみた。今作ってる"何か"にXMLを読み込んでソースコードを出力する定義をした。実行してみるとソースコードが出てきた。だけどXMLを定義するのがめんどくさいので、単なるテキストファイルを読み込んでXMLを吐き出す定義をしてみた。XMLできた。テキスト→XML→ソースという定義をしてみた。できた。2度エンジンが走るけれど、書く手間は大幅に減った。これでいいじゃん・・・ということで、このエントリの最初に戻る(笑)

結局最初にどういう風にデータを定義するのかが問題であって、その中間にどんな形式がいようが最終的な形式がどうなろうがそれを変換する定義をすりゃいいだけの話だと分かった。あとは自分で実験してみて楽だ〜しっくりくる〜という方式を見つけるしかないのでコツコツ実験します。データ定義言語なるものは無いかと思ったらグーグル先生は「それをDDLというんだよ!」と検索結果で返事してきた(笑)私が欲しいのはそれじゃないんです・・・(でもRDBにデータを定義するというのはそれはそれでありだと思った)。そういうのはXMLってのがあるんですよとも言われましたけど、XMLで定義済みの言語とパーサが欲しいんですよというと、見つからないぞもっと適切なキーワードをよこせと言われる。仕方ないのでまず理想を考えて現実とすり合わせする事にします。