Like any templating engine I've seen - there are "for each", "if then else" etc.<p>It's just matter of convention - designer should know what he can change, and what he cannot - lisp-encoded html is almost like normal html, and has the adventage of being compiled - some static checking can be done.<p>When you extract data producing into functions only called b name in code that is emiting html it will lokk just like html template, and it has all the clojure power when it's needed.