The idea is to have a full set of appropriate types, which various XML
libraries can share. Instead of having equivalent-but-incompatible types
for every binding, parser, or client, they all share the same types can
can thus interoperate easily.
This library contains complete types for most parts of an XML document,
including the prologue, node tree, and doctype. Some basic combinators
are included for common tasks, including traversing the node tree and
filtering children.
Prefixes are not semantically important; they are included only to
simplify pass-through parsing. When comparing names with Eq or Ord
methods, prefixes are ignored.
Note: due to the incredible complexity of DTDs, this type only supports
external subsets. I've tried adding internal subset types, but they
quickly gain more code than the rest of this module put together.
It is possible that some future version of this library might support
internal subsets, but I am no longer actively working on adding them.
Some XML processing tools are incremental, and work in terms of events
rather than node trees. The Event type allows a document to be fully
specified as a sequence of events.