HaXml revisions

Graham Klyne 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've changed.)

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 
platform-dependent code).

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.


Graham Klyne
For email:

More information about the Libraries mailing list