CL-XML is a collection of Common LISP modules for data stream parsing and serialization according to the "Extensible Markup Language" and anscilliary standards. The modules perform parsing and serialization between XML, XML Query, and XML Path expressions and DOM-compatible CLOS instances. The XML processor includes a conformant, validating, namespace-aware model-based parser. It supports, in particular, namespace-aware DTD-based validation. The XPATH module comprises LISP bindings for the XML Path library, an S-expression-based namespace-aware path model, and a macro-based path model compiler which implements an XPATH-algebra. The XQUERY module comprises LISP bindings for the XML Query library, an S-expression-based query model which incorporates the XPATH facilities, and a macro-based query compiler. The base CLOS model implements the XML Query Data Model in a class hierarchy which presents an Infoset compatible programming interface.
A description is available here.
The respective BNF descriptions of the respective XML, XPath, and XQuery syntax used to generate the parsers are available individually. In some cases, they have been normalized and otherwise edited to expedite parsing. I'd be interested to hear if any of the modifications would appear to affect conformance.
The following source archives are available.
email (from "xml:tests:xml:email.xml") : DOM,
DTD
channel (from "xml:tests:xml:channel.xml"): DOM,
DTD
REC-xml-20001006.xml: DTD as DOT, as SVG(768K)
REC-xhtml1-20000126.html: DTD as DOT, as SVG(444K)
Anyone curious about DOCBOOK?
AuctionWatchList.xml
AuctionWatchList.dtd
record.dtd
AuctionWatchListOut.xml