Download tarballs for both cxml itself and closure-common.
Or get it from git:
git clone git://repo.or.cz/cxml.git
git clone git://repo.or.cz/closure-common.git (gitweb)
CXML should be portable to all Common Lisp implementations supported by trivial-gray-streams.
On Lisps without Unicode support, cxml uses integers instead of characters to represent code points internally. By default, however, the parser will recode all data to strings containing characters representing UTF-8 bytes before passing it to user code.
ASDF is used for compilation. The following instructions assume that ASDF has already been loaded.
Prerequisites. CXML needs:
Compiling and loading CXML. Register the .asd file, e.g. by symlinking it:
$ ln -sf `pwd`/cxml/cxml.asd /path/to/your/registry/ $ ln -sf `pwd`/closure-common/closure-common.asd /path/to/your/registry/
Then compile CXML using:
* (asdf:operate 'asdf:load-op :cxml)
You can then try the quick-start example.
Check out the XML and DOM testsuites:
$ export CVSROOT=:pserver:firstname.lastname@example.org:/sources/public $ cvs login # password is "anonymous" $ cvs co 2001/XML-Test-Suite/xmlconf $ cvs co -D '2005-05-06 23:00' 2001/DOM-Test-Suite $ cd 2001/DOM-Test-Suite && ant dom1-dtd dom2-dtd
Omit -D to get the latest version, which may not work with cxml yet. The ant step is necessary to run the DOM tests.
* (xmlconf:run-all-tests "/path/to/2001/XML-Test-Suite/xmlconf/") * (domtest:run-all-tests "/path/to/2001/DOM-Test-Suite/")
To compare your results with known output, refer to the files XMLCONF and DOMTEST in the cxml distribution.
fixme: Add an explanation of xml/sax-tests here.
fixme domtest.lisp does not understand the current testsuite driver anymore. To fix this problem, revert the affected files manually after check-out:
$ cd 2001/XML-Test-Suite/xmlconf/ xmltest$ patch -p0 -R </path/to/cxml/test/xmlconf-base.diff
The log message for the changes reads "Removed unnecessary xml:base attribute". If I understand correctly, only DOM 3 parsers provide the baseURI attribute necessary for understanding xmlconf.xml now. We don't have that yet.