= Template components = They should: * Be format-agnostic (not specific to HTML nor XML); * Allow custom tags; * Allow access to external parameters (through either dynamic bindings, or explicit injection); and, * Have a logical syntax. ---- Existing systems under investigation are: * Lisp * [http://www.bitmuse.com/code/btl.html BTL] * [http://common-lisp.net/project/cl-emb/ CL-EMB] * [http://common-lisp.net/project/clhp/ CLHP] * [http://weitz.de/html-template/ HTML-TEMPLATE] * [http://homepage.mac.com/svc/kpax/ KPAX] * [http://www.cliki.net/text-template text-template] * [http://random-state.net/files/trivial-template.lisp trivial-template] * [http://www.nicklevine.org/play/xhtml.lisp xhtml.lisp] * [http://sourceforge.net/projects/lsp XLSP (a.k.a. "lisp server pages" or lsp)] * [http://common-lisp.net/project/bese/yaclml.html yaclml] * Other * [http://ahts.sourceforge.net/ AHTS] * [http://www.cheetahtemplate.org/ Cheetah] * [http://www.clearsilver.net/ Clearsilver] * [http://www.djangoproject.com/documentation/templates/ The Django template language] * [http://www.alcyone.com/pyos/empy/ EmPy] * [http://htmltmpl.sourceforge.net/ htmltmpl] * [http://java.sun.com/products/jsp/ JSP (Java Server Pages)] * [http://webware.sourceforge.net/Webware/PSP/Docs/ PSP (Python Server Pages)] * [http://www.smarty.net/ Smarty] * [http://spyce.sourceforge.net/ Spyce (Python)] * [http://template-toolkit.org/ Template Toolkit] Systems no longer under consideration (at least for syntax) are: || '''System''' || '''Reason''' || || CL-WHO || Not a markup language || || HTOUT || Not a markup language || || HUNCHENTOOT || No template functionality || || LML || Not a markup language || || LML2 || Not a markup language || || Weblocks || No template functionality || Note, however, that LML2 does claim to have user-extensible tags. It would be good to see how they did it. Weblocks also has a ''render'' architecture that may be good.