Differences between YstokHTML and Franz HTMLGen

  1. Renamed html macro to htm (a la Edi Weitz's CL-WHO).
  2. YstokHTML is XHTML compatible with close tags so that
      (htm :hr)
    can produce '<hr>' or '<hr />' depending on *html-mode*. Whether print-html-... functions produce XHTML termination '/>' also depends on *html-mode*.
  3. Lowercase tag names when *html-mode* is :xml.
  4. Lowercase attribute names when *html-mode* is :xml or *attribute-case* is :downcase; so (htm ((:p class 'a))) produces '<p class="a"></p>'.
  5. Added new tags :include, :nbsp, :jscript, :format, :format-safe, :!doctype, :?xml.
  6. Added new custom tag :escape, which invokes full-fledged html-template:escape-string and escapes not only four characters, but all satisfying template:*escape-char-p*.
  7. Added special attribute tag :optional, which is similar to :if*. The :if* pseudo-attribute is deprecated in favor of :when.
  8. Automatic conversion attribute values to strings (quoting).
  9. Removed the if* macro from all the source code.
  10. Renamed html-process to descriptor:
  11. Function prin1-safe-http-string replaced by generic prin1-attribute-value of signature:
     (val &optional stream).
  12. Added special variable *lhtml-safe*. When it is true, You can always override by means of explicit pseudo-tags :escape, :some-safe, etc.
  13. Changed html-print-list and html-print signature:
     (form &optional stream).
  14. def-std-html now defines a macro named as follows:
  15. Owing to calls of attribute-name-string and prin1-attribute-value, now html-standard-print generates HTML close to what is produced by the htm macro.