        HaXml - Haskell utilities for processing XML
        --------------------------------------------

Installation instructions:
We currently support nhc98, ghc, and Hugs.  The automatic configuration
detects which compilers/interpreters you have, and prepares a build
tree for each.  Installation requires write-permission on the system
directories of the compiler/interpreter - the libraries and interfaces
can then be used as "-package HaXml" (for ghc/nhc98 - no extra options
required for Hugs).  The standalone tools are installed to a directory of
your choice.

    ./configure
    make
    make install

Options to configure are:
    --buildwith=...  e.g. ghc-6.2,        to build for a specific compiler
    --prefix=...     e.g. /usr/local/bin, installation location for HaXml tools

Complaints to:  :-)
    Malcolm.Wallace@cs.york.ac.uk

----
What this package contains:

  docs/         Some rudimentary HTML documentation about the libraries.
  docs/haxml/       Haddock-generated API documentation.
  examples/     Some small examples of how the libraries/tools are used.

  src/text/xml/haxml/   Numerous support modules for processing XML.
            (The main APIs are as follows:)
    types.hs    Defines a (generic) representation for any XML document.
    parse.hs    Parses an XML document into the generic representation.
    pretty.hs   Pretty-prints an XML document.
    validate.hs Validates an XML document against a DTD.
    combinators.hs  Provides the combinators described in the ICFP'99 paper
            together with some other useful functions.
    wrappers.hs Simple top-level wrappers for processing a single
            document using the combinators.
    haskell2xml.hs  A replacement class for Show/Read, to dump Haskell
            values as XML documents.  Use in conjunction with DrIFT.
    xml2haskell.hs  A support class for XML DTDs which have been translated
            to Haskell types by tools/DtdToHaskell.
    oneofn.hs   Some support types (OneOf2 - OneOf20) for code
            generated by tools/DtdToHaskell.

  src/text/xml/haxml/html   Extra support modules for processing HTML.
    parse.hs    An error-correcting HTML parser, produces the generic
            XML representation.
    pretty.hs   An HTML-specific pretty-printer.
    generate.hs Some useful combinators for generating HTML content.

  src/tools/        Standalone tools based on the library above.
    dtdtohaskell    Translates an XML doc containing a DTD into a Haskell
            module containing data/newtype definitions.
    xtract      A structured 'grep' for XML docs, loosely based on
            the XPath and XQL query languages.
    validate    A simple validation tool for XML docs.  Give it a DTD
            file and an XML file, and it reports all validation
            errors it can find.
    canonicalise    A 'cat' filter for XML docs, shows our "standard"
            parsing and pretty-printing behaviour.
    mkoneof     Generates a OneOfN type, given an N, together with
            its required instance of XmlContent.  Sometimes types
            larger than OneOf20 are required in code generated by
            DtdToHaskell.

  src/text/xml/haxml/xtract Internal APIs of the Xtract tool.
    parse.hs    Parse an XPath query to produce a filter.
    combinators.hs  Modified version of the standard combinators.

  src/text/xml/haxml/dtdtohaskell   Internal APIs of the DtdToHaskell tool.
    typedef.hs  A representation of the Haskell types corresponding
            to an XML DTD, and a pretty printer for them.
    convert.hs  Convert the standard DTD representation to the
            Haskell-like TypeDef representation.
    instance.hs Generate appropriate Xml2Haskell class instances for
            the TypeDefs.

----
