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.

Doctypes

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.