A communiqué from James Anderson reports on a "preliminary re-release of CL-XML which (1) includes not only a validating XML parser/processor, but also XPath and XQuery compilers, (2) supports namespace-aware DTD-based validation, and (3) can claim conformance. CL-XML is a collection of Common LISP modules for data stream parsing and serialization according to the Extensible Markup Language and ancillary standards. The modules perform parsing and serialization between XML, XML Query, and XML Path expressions and DOM-compatible CLOS instances." The associated Web site provides extensive doumentation for CL-XML, including separate BNF descriptions of the XML, XPath, and XQuery syntax used to generate the parsers. According to the site description: "The processor is intended for use both as a stand-alone XML interface and as an extension to the CL-HTTP server. The XML module implements a conformant, namespace-aware, validating XML processor which instantitiates an Info-Model compatible document model. The processor always incorporates external references. A referenced document definition is instantiated and incorporated in the document instance as an internal document type definition model. The definition is used to effect instance defaulting and typing and to perform in-line document validation. The parser can be invoked with validation enabled or disabled. It can be invoked so as to produce a data instance, a parse tree, or to parse without generating a result. The XMLPath module implements access to document models based on XML Path expressions. It includes an implementation for the XML Path library, an interpreter for paths formulated as S-expressions and, a parser to translate string-encoded expressions into the equivalent S-expression form. The XMLQuery module implements access to document models based on XML Query expressions. These incorporate XML Path expressions to address document elements and extend them with construction operations. The module includes an implementation for the XML Query library, an interpreter for queries formulated as S-expressions and, a parser to translate string-encoded expressions into the equivalent S-expression form. The base CLOS model comprises a class library which implements the XML Query Data Model and presents an Infoset compatiable programming interface."
Sources for the CL-XML modules are available. Version 0.906 is "a preliminary version, providing CL-HTTP integration for MCL. Allegro supports HTTP/1.0 access only. Full Allegro support and a Lispworks port are in progress... The runtime environment is examined during compilation to determine if the if HTTP support is already present. If so, then the existing facilities are used and server extensions are generated to support XML. If CL-HTTP is not present, then these extensions are not generated and only file streams and primitive http streams are supported. Releases releases have been tested with [1] MCL(4.2) +/- CL-HTTP(cl-http-70-108a-devo) and [2] ALLEGRO(5.0.1)-CL-HTTP.
Principal references:
- CL-XML web site
- CL-XML description
- XML BNF [excerpted and edited from REC-xml-19980210]
- XPath BNF
- XQuery BNF [adapted from the WD as of 20010215]
- W3C XML Query (XQuery)
- W3C XPath
- "XML and Query Languages" - Main reference page.