Skip to content


Subversion checkout URL

You can clone with
Download ZIP
branch: html5

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "">
<html xmlns=""><head><title>LML2 README</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><meta name="Copyright" content="Kevin Rosenberg 2002 &lt;;" /><meta name="description" content="Lisp Markup Language Documentation" /><meta name="author" content="Kevin Rosenberg" /><meta name="keywords" content="Common Lisp, HTML, Markup Langauge" /></head><body><h1>LML2 Documentation</h1><h2>Overview</h2><p><a href="">LML2</a> is a Common Lisp package for generating HTML and XHTML documents. LML2 is based on:</p><ul><li><a href="">LML</a> by <a href="">Kevin Rosenberg</a></li><li>htmlgen by <a href="">Franz, Inc.</a></li></ul><p>The home page for LML2 is <a href=""></a>.</p><h2>Prerequisites</h2><ul><li><a href="">ASDF</a></li><li><a href="">KMRCL</a></li></ul><h2>Differences between LML2 and LML</h2><p>The syntax and HTML generation for LML2 are based on Franz's htmlgen macro. Personally, I like the syntax of LML better than LML2, but there are advantages of Franz's approach:</p><ul><li>Faster compilation and runtime HTML generation</li><li>Behavior of tags is extensible</li></ul><h2>Differences between LML2 and htmlgen</h2><ul><li>LML2 is XHTML compatible with close tags so that (html :hr) now produces '&lt;hr /&gt;'</li><li>Lowercase tag names so that (html ((:p class 'a))) now produces '&lt;p class="a"&gt;&lt;/p&gt;</li><li>Addition of new tags such as :insert-file, :nbsp, :jscript</li><li>Removal of the if* macro from the htmlgen.lisp source code</li><li>Incorporation of LML's standard site macro and other helper functions.</li><li>Addition of special attribute tags (:if :when :optional :format :format</li><li>Automatic quoting of attribute values for non-string values</li><li>Post macroexpansion code walker to collape sequential write-string calls</li></ul><h2>Installation</h2><p>The easiest way to install LML is to use the <a href="">Debian</a> GNU/Linux operating system. You can then use the command <tt>apt-get install cl-lml2</tt> to automatically download and install the LML2 package.</p><p>On a non-Debian system, you need to have <a href="">ASDF</a> installed to load the system definition file. You will need to change the source 
       pathname in the system file to match the location where you have installed LML.</p><h2>Usage</h2><p>Currently, there is no documentation on the functions provided by LML2. However, the source code is instructive and there are example files included in the LML2 package.</p><h2>Examples</h2><table border="1" cellpadding="3"><tbody><tr><td colspan="2" style="color:#000;background-color:#ccc;font-weight:bold;">Iteration</td></tr><tr><td><pre>(html
   (:i "The square of the first five integers are: ")
   (:b (loop as x from 1 to 5 
           doing (html  (:princ (* x x))))))</pre></td><td><i>The square of the first five integers are: </i><b> 1 4 9 16 25</b></td></tr></tbody></table><hr /><p>View this page's <a href="">LML2</a> <a href="readme.lml">source</a>.</p></body></html>
Something went wrong with that request. Please try again.