From: Bill Clementson
Subject: Transforming XML with CL
Date: 
Message-ID: <wkn0pczffq.fsf@attbi.com>
I have written a small CL utility that generates HTML slides (either 
all in one HTML page or a separate page for each slide) from an XML 
definition of the presentation. The utility uses AllegroServe, the XML 
parser (parse-xml) and the HTML generator (htmlgen) that Franz developed
as open source utilities. 

My goals were:

1. Learn how to use AllegroServe & the xml/html utilities
2. Experiment with using CL to transform xml to html in a manner similar
   to xslt
3. Improve my CL programming skills

The presentation that I created is a self-documenting presentation 
describing what I did. I have put the all-in-one-html-page version of 
the presentation up on the web. It contains a link to a zip file that 
you can download if you want to run the utility but the presentation 
also has links and code contained within the presentation if you don't 
want to download the zip file but are interested in seeing what I did.

I would appreciate feedback on a number of different things:

1. I had difficulty finding the correct way to do something like 
   (eql element-name '|slide|) in the apply-template function. My 
   work-around was to do a string compare on the symbol name of the xml
   element name instead. I would appreciate any advice on how to do the 
   former.
2. The link to the single slide presentation on the title page (first 
   slide) of the presentation doesn't work but the button on the initial 
   http://localhost:8000 start page does. They both point to the same 
   url. Any ideas why AllegroServe generates the single slide 
   presentation when the button is selected but not when the link is 
   selected? 
3. This is my first attempt at processing XML with Lisp and I would 
   appreciate any pointers on how I could improve the code. Either:
   a. Alternative approaches that others have used to do the same type 
      of thing (converting xml to html using CL).
      i. An alternative that I tried was creating a generic 
         apply-template function and specializing the methods using eql. 
   b. Any suggestions for improvements to my Lisp code (I'm still 
      learning).

The generated slide presentation can be found at:
http://lisp.home.attbi.com/all-slides.htm

Note: the all-slides.hmt page at this site is a static page as my ISP
provides disk space but doesn't allow me to run applications. The 
utility uses AllegroServe to dynamically generate both the all-slides 
page as well as the single-slide pages.

TIA.
--
Bill Clementson