gk at ninebynine.org
Wed Jun 9 07:35:03 EDT 2004
Over the past few weeks I've been working on the HaXml library with a view to:
creating a regression test suite
improving handling of diagnostics
separating stand-alone functionality from functionality requiring I/O
laying groundwork for XML namespace processing
improving conformance to the XML specification
support for UTF-8 and UTF-18 input, as required by the XML spec
access to external entities via HTTP
This phase of work is pretty much done (though the code could still be much
tidied up in many places, particularly the removal of code in the parser
and lexer that is now effectively unused).
The work has involved some small but extensive changes to the HaXml source
code, including fairly radical restructuring in a couple of areas (notably
the introduction of a new layer between the lexer and parser to handle
parameter entity subsitution).
The package now depends on Network.HTTP and my revised version of
Network.URI (which in turn uses the Parsec parser combinators) [Two
separate parser libraries required. Oh well.] The regression tests use HUnit.
I'd like to think the improvements are sufficient to warrant their eventual
folding back into the hierarchical library components, despite some small
interface changes (mainly to type declarations rather than function
interfaces). Also, I've not done any of the re-packaging work for
incorporation into (say) the GHC distribution -- that's still rather a
black art to me.
I've created a snapshot of my work at:
in the hope that folks can check it out and see if I've introduced any
unacceptable incompatibilities with the existing HaXml package. The former
ZIP file includes a copy of the W3C XML test suite, parts of which I'm
using for my regression tests.
A more detailed list of changes made can be found in the file:
(and also in CVS logs that I've included at the end of each source file
I should also note that all my development/testing has been done under
Windows using Hugs, so there may possible be some wrinkles to iron out on
other platforms (but I've generally not messed with likely
I plan to push ahead with the various aspects of new functionality that I
require for my applications, but I'll be happy to help where I can to fold
these changes into the mainstream version of HaXml.
More information about the Libraries