Closure XML Parser
An XML parser written in Common Lisp.
Closure XML was written by Gilbert Baumann
(unk6 at rz.uni-karlsruhe.de) as part of the Closure web
browser.
Contributions to the parser by
-
Henrik Motakef (hmot at henrik-motakef.de)
(SAX layer; namespace support)
-
David Lichteblau for knowledgeTools
(conversion into an independent package; DOM bug fixing; validation)
and headcraft
(most september/october 2004 changes) and privately (changes
since then).
CXML implements a namespace-aware,
validating XML 1.0
parser as well as the DOM Level 2 Core
interfaces. Two parser interfaces are offered, one SAX-like, the
other similar to StAX.
CXML is licensed under Lisp-LGPL.
Send bug reports to cxml-devel@common-lisp.net
(list
information).
See also
Relax NG validation is available as a separate
project: cxml-rng.
Recent Changes
rel-2007-xx-yy
- xml:base support (SAX and Klacks only, not yet used in DOM).
See documentation here and here.
- New class broadcast-handler as a generalization
of the older sax-proxy.
- New class tapping-source, a klacks source that
relays events from an upstream klacks source unchanged, while also
emitting them as SAX events to a user-specified handler at the
same time.
- Changed attributes to carry an lname even when occurring
without a namespace.
- Klacks improvements: Incompatibly changed
klacks:find-element and find-event to consider the current event
as a result. Added klacks-error, klacks:expect, klacks:skip,
klacks:expecting-element. Fixed serialize-event to generate
start-prefix-mapping and end-prefix-mapping events. New function
map-current-namespace-declarations.
rel-2007-02-18
- New StAX-like parser interface.
- Serialization fixes (thanks to Nathan Bird, Donavon Keithley).
- characters.lisp cleanup (thanks to Nathan Bird).
- Namespace normalizer bugfixes.
- Minor changes: clone-node on document as an extension. DOM
class hierarchy reworked. New function parse-empty-document.
Fixed the DOM serializer to not throw away local names.
Fixed a long-standing bug in the parser for documents without a
doctype. ANSI conformance fixes.
rel-2006-01-05
- Implemented DOM 2 Core.
- Error handling overhaul.
- UTF-8 string support in DOM on Lisps without Unicode characters.
- Sink API has been changed.
- Support internal subset serialization.
- Whitespace normalizer.
- Gilbert Baumann has clarified the license as Lisp-LGPL.
- Use trivial-gray-streams.
rel-2005-06-25
- Port to OpenMCL (thanks to Rudi Schlatte).
- Port to LispWorks (thanks to Edi Weitz).
- Minor new features: include-default-values argument to
make-xmls-builder; handler argument
to parse-dtd-stream; SAX proxy class
- Various bugfixes.
patch-357 (2004-10-10)
- Auto-detect unicode support for better asdf-installability.
- Use the puri library for Sys-ID handling.
- Semi-automatic caching of DTD instances.
- Support user-defined entity resolvers.
- Support for Oasis XML Catalogs.
- xhtmlgen version of Franz htmlgen.
- Fixes for SBCL's unicode support.
patch-306 (2004-09-03)
- Event-based serialization which does not require DOM documents
- XMLS compatiblity
- minor bugfixes (thread safety; should work on clisp again)
patch-279 (2004-05-11)
- Validation
- bugfixes; XHTML DTD parses again; corrected SAX entity handling
patch-204
- Renamed package XML to CXML.
- The unparse functions support non-canonical output now.
patch-191 (2004-03-18)