テンプレートエンジンを作ってみた。
HTMLのコメントによる変数展開や
ループ構造、IF文を取り扱うシンプルなテンプレートエンジン
HTMLとしての構文上、問題無い用に扱えて
(プログラム部分を適応してもデザイナさんが普通に
扱える代物
HTMLファイル一枚で動作可能で
(MAYAみたいに他ファイルがイラナイ
XHTMLじゃなくて、HTMLでも問題無く扱える様
(XHMTLのアトリビュートとかも弄らない
(変数展開用にspanタグとか使わない
そんなの、テンプレートは↓
Javaのソースコードはどうやって公開しようかなぁ
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>コメントインジェクションによるテンプレートエンジン</title> </head> <body> <!-- 変数展開 --> <p><!--#{var test}#--></p> <p><!--#{var test}-->さんぷる<!--#--></p> <!-- ループ --> <ol> <!--#{each test}--> <li><!--#{var test}-->てすと<!--#--></li> <!--#--> </ol> <!-- 置き換え --> <form id="test" action="/test"> <!--#{rep type="%" test}--> <input type="text" id="test" value="test" class=""/> <!--#--> </form> <!-- 判断 --> <p><!--#{def test}-->てすと!<!--#--></p> </body> </html>
またレイアウト機能はこんな感じ
<!--#{layout src="template/layout.html"}--> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>コメントインジェクションによるテンプレートエンジン</title> </head> <body> <!--#{layout_capture name="contents"}--> <p>テストコンテキスト</p> <!--#--> <!--#{layout_capture name="message" src="template/layout_require.html"}--> <p>ほげほげほげー</p> <!--#--> </body> </html>
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>コメントインジェクションによるテンプレートエンジン</title> </head> <body> <div id="menu">testtest</div> <div id="contents"><!--#{layout_replace name="contents"}-->contents<!--#--></div> <div id="message"><!--#{layout_replace name="message"}-->message<!--#--></div> <div id="require"> <!--#{layout_replace name="message" src="template/layout_require.html"}#--> </div> </body> </html>
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>コメントインジェクションによるテンプレートエンジン</title> </head> <body> <!--#{layout_capture name="message"}--> <p>てすとめっせーじ</p> <!--#--> </body> </html>