18 Oct 2002 20:19
Transforming XML using CL
Bill Clementson <bc19191 <at> attbi.com>
2002-10-18 18:19:32 GMT
2002-10-18 18:19:32 GMT
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
RSS Feed