> Лучшей существующей системой шаблонов я считаю Google Closure Templates,
Лично мне кажется, что хорошая система шаблонов, предназначенная для генерации html/xhtml, должна автоматически обеспечивать чтобы результат был как минимум well-formed (а в идеале - вообще валидный документ). Ни один шаблонизатор, работающий с документом как с простым текстом, этого не может (в т. ч. упомянутый closure template, tt2 и пр.).
Вообще мне нравится идея построения xslt преобразований - шаблон разбивается на много мелких, нужный из которых выбирается с помощью pattern matching-а. Плюс автоматом получаем well-formed xml/html. Xslt, конечно, не лишён многих недостатков (самый большой, пожалуй - неудобный и чрезмерно многословный синтаксис), но даже не смотря на них лично мне делать шаблоны на xslt приятнее чем на plaintext движках. Быть может, можно сделать что-то подобное, но с нормальным синтаксисом.
По поводу cl-closure-template - я её щупал какое-то время назад (наверное уже с полгода назад), впечатления скорее отрицательные. Вообще довольно тяжело написать библиотеку общего назначения (чтобы было "удобно всем" а не "удобно мне"); cl-closure-template archimag всё-таки пишет для себя и под себя - ему, возможно, там всё удобно и всё работает так, как надо, а мне из-за всяких разной величины косяков от её использования пришлось вообще отказался. Очень неудобно полное отсутствие сообщений об ошибках (вот подправил ты шаблон чуть-чуть, перекомпилил - ошибок вроде нет; а потом смотришь на результат и видишь какую-то лажу); производительность тоже никуда не годится - мне надо было отображать на странице несколько тысяч небольших строк таблицы с данными - cl-closure-template генерил это страницу ~20 секунд - и это при том что он комилируется в cl-код, т. е. вроде как должен быть довольно шустрым. А получается почему-то наоборот. Для сравнения, какой-то cl-who-подобный шаблонизатор, который я воткнул вместо cl-closure-template, генерировал тот же самый html менее чем за секунду.
Не знаю, может сейчас это всё уже поправлено, но полгода назад до состояния "шаблонный движок общего назначения" его нужно было ещё пилить и пилить...