183 lines
6.7 KiB
HTML
183 lines
6.7 KiB
HTML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
|
<head>
|
|
<title>Closure XML</title>
|
|
<link rel="stylesheet" type="text/css" href="doc/cxml.css"/>
|
|
</head>
|
|
<body>
|
|
<div class="sidebar">
|
|
<p>
|
|
<a href="README.html">CXML Homepage</a>
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<a href="doc/installation.html">Installing Closure XML</a>
|
|
<ul>
|
|
<li><a href="doc/installation.html#download"><b>Download</b></a></li>
|
|
<li><a href="doc/installation.html#implementations">Implementation-specific notes</a></li>
|
|
<li><a href="doc/installation.html#compilation"><b>Compilation</b></a></li>
|
|
<li><a href="doc/installation.html#tests">Tests</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="doc/using.html">Using Closure XML</a>
|
|
<ul>
|
|
<li><a href="doc/using.html#quickstart"><b>Quick-Start Example</b></a></li>
|
|
<li><a href="doc/using.html#parser">Parsing and Validating</a></li>
|
|
<li><a href="doc/using.html#serialization">Serialization</a></li>
|
|
<li><a href="doc/using.html#misc">Miscellaneous Utility Functions</a></li>
|
|
<li><a href="doc/using.html#xmls">XMLS Compatibility</a></li>
|
|
<li><a href="doc/using.html#rods">Dealing with Rods</a></li>
|
|
<li><a href="doc/using.html#dtdcache">Caching of DTD Objects</a></li>
|
|
<li><a href="doc/using.html#catalogs">XML Catalogs</a></li>
|
|
<li><a href="doc/using.html#sax">SAX Interface</a></li>
|
|
<li><a href="doc/using.html#dom">DOM Notes</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h1>Closure XML Parser</h1>
|
|
|
|
<p>An XML parser written in Common Lisp.</p>
|
|
|
|
<p>
|
|
Closure XML was written by <a
|
|
href="http://www.stud.uni-karlsruhe.de/~unk6/">Gilbert Baumann</a>
|
|
(unk6 at rz.uni-karlsruhe.de) as part of the Closure web
|
|
browser.<br/>
|
|
Contributions to the parser by
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Henrik Motakef (hmot at henrik-motakef.de)<br/>
|
|
(SAX layer; namespace support)
|
|
</li>
|
|
<li>
|
|
<a href="mailto:david@lichteblau.com">David Lichteblau</a> for <a
|
|
href="http://www.knowledgetools.de">knowledgeTools</a>
|
|
(conversion into an independent package; DOM bug fixing; validation)
|
|
and <a href="http://www.headcraft.de/">headcraft</a>
|
|
(most september/october 2004 changes) and privately (changes
|
|
since then).
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
CXML currently implements a namespace-aware, validating SAX-like
|
|
<a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML 1.0</a>
|
|
parser as well as the <a
|
|
href="http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html">DOM Level 1 Core</a>
|
|
interfaces.
|
|
</p>
|
|
|
|
<p>
|
|
CXML is licensed under (L)LGPL.
|
|
</p>
|
|
|
|
<p>
|
|
Send bug reports to <a
|
|
href="mailto:cxml-devel@common-lisp.net">cxml-devel@common-lisp.net</a>
|
|
(<a
|
|
href="http://common-lisp.net/cgi-bin/mailman/listinfo/cxml-devel">list
|
|
information</a>).
|
|
</p>
|
|
|
|
<a name="changes"/>
|
|
<h2>Recent Changes</h2>
|
|
<p class="nomargin"><tt>rel-2005-xx-yy</tt></p>
|
|
<ul class="nomargin">
|
|
<li>Use trivial-gray-streams.</li>
|
|
</ul>
|
|
<p class="nomargin"><tt>rel-2005-06-25</tt></p>
|
|
<ul class="nomargin">
|
|
<li>Port to OpenMCL (thanks to Rudi Schlatte).</li>
|
|
<li>Port to LispWorks (thanks to Edi Weitz).</li>
|
|
<li>Minor new features: <tt>include-default-values</tt> argument to
|
|
<tt>make-xmls-builder</tt>; <tt>handler</tt> argument
|
|
to <tt>parse-dtd-stream</tt>; SAX proxy class</li>
|
|
<li>Various bugfixes.</li>
|
|
</ul>
|
|
<p class="nomargin"><tt>patch-357</tt> (2004-10-10)</p>
|
|
<ul class="nomargin">
|
|
<li>Auto-detect unicode support for better asdf-installability.</li>
|
|
<li>Use the puri library for Sys-ID handling.</li>
|
|
<li>Semi-automatic caching of DTD instances.</li>
|
|
<li>Support user-defined entity resolvers.</li>
|
|
<li>Support for Oasis XML Catalogs.</li>
|
|
<li>xhtmlgen version of Franz htmlgen.</li>
|
|
<li>Fixes for SBCL's unicode support.</li>
|
|
</ul>
|
|
<p class="nomargin"><tt>patch-306</tt> (2004-09-03)</p>
|
|
<ul class="nomargin">
|
|
<li>Event-based serialization which does not require DOM documents</li>
|
|
<li>XMLS compatiblity</li>
|
|
<li>minor bugfixes (thread safety; should work on clisp again)</li>
|
|
</ul>
|
|
<p class="nomargin"><tt>patch-279</tt> (2004-05-11)</p>
|
|
<ul class="nomargin">
|
|
<li>Validation</li>
|
|
<li>bugfixes; XHTML DTD parses again; corrected SAX entity handling</li>
|
|
</ul>
|
|
<p class="nomargin"><tt>patch-204</tt></p>
|
|
<ul class="nomargin">
|
|
<li>Renamed package <tt>XML</tt> to <tt>CXML</tt>.</li>
|
|
<li>The unparse functions support non-canonical output now.</li>
|
|
</ul>
|
|
<p class="nomargin"><tt>patch-191</tt> (2004-03-18)</p>
|
|
<ul class="nomargin">
|
|
<li>Initial release.</li>
|
|
</ul>
|
|
|
|
<!--
|
|
<a name="todo"/>
|
|
<h2>To Do</h2>
|
|
<ul>
|
|
<li>
|
|
<strike>David's changes might have affected performance. Some
|
|
benchmarking needs to be done here.</strike> (The actual parser
|
|
seems to be faster than xmls - - good enough for me.)
|
|
</li>
|
|
<li>
|
|
DOM in general is pretty heavyweight. There is/was a
|
|
"simple-dom" which should be faster. This might be worth
|
|
reviving.
|
|
</li>
|
|
<li>
|
|
<strike>For those who don't like DOM at all, it would be a very simple
|
|
exercise to write a SAX handler for "Lisp-XML" output instead of
|
|
DOM.</strike> (done)
|
|
<li>
|
|
<strike>The serializer supports only <a
|
|
href="http://www.w3.org/TR/2001/REC-xml-c14n-20010315">Canonical
|
|
XML</a> right now.</strike> In the future we want support for:
|
|
<strike>Including doctype declarations in the output</strike>
|
|
(done), <strike>ordinary output with less character reference
|
|
noise</strike> (done), <strike>optional indentation</strike>
|
|
(done), user-specified encoding, etc.
|
|
</li>
|
|
<li>
|
|
<strike>There are still thread-safety issues.</strike> (fixed)
|
|
</li>
|
|
<li>
|
|
<strike>Validation!</strike> (done)
|
|
</li>
|
|
<li>
|
|
Upgrade to DOM Level 2 for complete namespace support.
|
|
</li>
|
|
<li>
|
|
Unless <tt>rune-is-character</tt> is enabled, rod hashing
|
|
currently uses <tt>equalp</tt> hash tables, which can be very slow.
|
|
(See <tt>%make-rod-hash-table</tt>.)
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
(Compare also with Gilbert Baumann's older TODO list in
|
|
<tt>xml-parse.lisp</tt>.)
|
|
</p>
|
|
-->
|
|
|
|
</body>
|
|
</html>
|