YHTML-Template is a part of YstokHTML collection. It accepts more "Lispy" expressions and provides the following extensions to the original HTML-TEMPLATE code.

A Lisp form in place of "plane attribute" is allowed.
Forms are read by the standard read function.
All starting tags (except TMPL_INCLUDE) accept forms
instead of "old style" attributes.
The *attributes-are-lisp-forms* special variable was introduced.
Bind or set it to NIL to treating those tags in the compatibility mode.

Symbols follow standard Lisp syntax: a package specifier is allowed
in front of the name. By default, symbols are interned into the
package stored in *template-package*, a new special variable.

To interpret the forms in run-time, the template-eval was introduced.
It is a simple evaluator akin to the standard eval function except for:

A limited number of special-forms is supported, namely:
IF WHEN UNLESS AND OR NOT QUOTE.

The symbol with a name like *var* is treated as a dynamic variable
and is retrieved via symbol-value.

The values of other symbols are looked up via *value-access-function*.

The TMPL_EVAL tag and create-eval-printer were introduced;
the former should be used instead of the TMPL_VAR tag.

The value of *format-non-strings* has got an additional meaning.
If it equals to T, the result is produced by means of
princ-to-string, i.e. (format nil "~A" ...).
If it is true but not equals to T, the value must be a single-parameter
function, which returns two values:
(1) a string resulted from its argument, and optionally
(2) do-not-modify flag controlling whether *string-modifier*
is applied afterwards.
The truth as second value can prevent the result of converting
from predefined format, e.g. LHTML, from further escaping.

Tag TMPL_ELSE and all ending tags /TMPL_... can
embed an optional text
between the tag name and the closing marker "-->". This text is intended
for readability only and completely ignored by the template parser.
For example:

The TMPL_ELIF tag was introduced to allow
a more concise code. In full, now the "if" pattern looks like: