From: Bill Clementson

Subject: Transforming XML using CL

Date: 2002-10-18 18:11

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