...............................................................................
Xmlm - Streaming XML input/output for OCaml
       Release 1.0.2
...............................................................................

Xmlm is an OCaml module for streaming XML input/output. It aims
at making XML processing robust and painless. The streaming interface
can process documents without building an in-memory representation. It
lets the programmer translate its data structures to XML documents and
vice-versa. Functions are provided to easily transform arborescent
data structures to/from XML documents.

To facilitate its integration into projects Xmlm is made of a single
module and distributed under the new BSD license.

Project home page : http://erratique.ch/software/xmlm
Contact : daniel.buenzl i@erratique.ch


# Installation

Xmlm was tested with OCaml 3.10. xmlm.mli and xmlm.ml contain everything,
the code, the documentation and the license. You can just copy them to
your project directory or better, if you use ocamlbuild, issue the following
commands from the root directory of your project :

 > ln -s /path/to/xmlm-1.0.2/src xmlm
 > echo "<xmlm> : include" >> _tags

The documentation is generated by ocamldoc from xmlm.mli. You can find
a generated version in the doc/ directory of the distribution.

If you have ocamlbuild, Xmlm can be installed in the xmlm/ directory 
of `ocamlc -where` by typing :
 
  > ./build 
  > ./build install 

to install to a different location :

  > INSTALLDIR=/path/to/install/dir ./build install 

A test program, xmltrip, is provided in the test/ directory. It can
be built with :

  > ./build xmltrip.native

xmltrip reads XML files with Xmlm and outputs them back in various
ways. It is useful to understand how Xmlm handles documents. xmltrip
-help has more information.

If you need to parse XHTML, there is a file named xhtml.ml in the
test/ directory. It contains an OCaml list coupling each XHTML
character entity with its corresponding UTF-8 encoded character
string. You can use it to program a suitable entity callback.