diff --git a/HaXml.cabal b/HaXml.cabal
--- a/HaXml.cabal
+++ b/HaXml.cabal
@@ -1,5 +1,5 @@
 name:		HaXml
-version:	1.19.5
+version:	1.19.6
 license:	LGPL
 license-file:	COPYRIGHT
 author:		Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>
@@ -46,6 +46,8 @@
         Text.XML.HaXml.Verbatim,
         Text.XML.HaXml.Wrappers,
         Text.XML.HaXml.XmlContent,
+        Text.XML.HaXml.XmlContent.Parser,
+        Text.XML.HaXml.XmlContent.Haskell,
         Text.XML.HaXml.Xtract.Combinators,
         Text.XML.HaXml.Xtract.Lex,
         Text.XML.HaXml.Xtract.Parse
@@ -60,7 +62,7 @@
   else
     build-depends: base < 2 || >= 3, bytestring
   extensions: CPP, ExistentialQuantification
-  cpp-options: -DVERSION=1.19.4
+  cpp-options: -DVERSION=1.19.6
   nhc98-options: -K10M
 
 Executable Canonicalise
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,12 @@
 SOFTWARE = HaXml
-VERSION  = 1.19.5
+VERSION  = 1.19.6
 
 #CPP      = cpp -traditional
 CPP     = cpphs --text --noline	# useful e.g. on MacOS X
 
 DIRS = Text Text/XML Text/XML/HaXml Text/XML/HaXml/Html \
-	Text/XML/HaXml/Xtract Text/XML/HaXml/DtdToHaskell
+	Text/XML/HaXml/Xtract Text/XML/HaXml/DtdToHaskell \
+	Text/XML/HaXml/XmlContent
 
 SRCS = \
 	src/Text/XML/HaXml.hs src/Text/XML/HaXml/Combinators.hs \
@@ -17,7 +18,10 @@
 	src/Text/XML/HaXml/OneOfN.hs \
 	src/Text/XML/HaXml/ParseLazy.hs \
 	src/Text/XML/HaXml/ByteStringPP.hs \
-	src/Text/XML/HaXml/TypeMapping.hs src/Text/XML/HaXml/XmlContent.hs \
+	src/Text/XML/HaXml/TypeMapping.hs \
+	src/Text/XML/HaXml/XmlContent.hs \
+	src/Text/XML/HaXml/XmlContent/Parser.hs \
+	src/Text/XML/HaXml/XmlContent/Haskell.hs \
 	src/Text/XML/HaXml/SAX.hs \
 	src/Text/XML/HaXml/ShowXmlLazy.hs \
 	src/Text/XML/HaXml/Util.hs \
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -2,7 +2,7 @@
 #       configure -- prepare to compile/install the HaXml package
 #       author:   Malcolm.Wallace@cs.york.ac.uk, August 2002
 
-VERSION="1.19.5"
+VERSION="1.19.6"
 
 if [ -f obj/prefix ]
 then INSTALLDIR=`cat obj/prefix`
diff --git a/docs/HaXml/Text-XML-HaXml-OneOfN.html b/docs/HaXml/Text-XML-HaXml-OneOfN.html
--- a/docs/HaXml/Text-XML-HaXml-OneOfN.html
+++ b/docs/HaXml/Text-XML-HaXml-OneOfN.html
@@ -166,11 +166,11 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"
 >OneOf2</A
@@ -287,13 +287,13 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"
 >OneOf3</A
@@ -422,15 +422,15 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"
 >OneOf4</A
@@ -571,17 +571,17 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"
 >OneOf5</A
@@ -734,19 +734,19 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"
 >OneOf6</A
@@ -911,21 +911,21 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"
 >OneOf7</A
@@ -1102,23 +1102,23 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"
 >OneOf8</A
@@ -1307,25 +1307,25 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"
 >OneOf9</A
@@ -1526,27 +1526,27 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"
 >OneOf10</A
@@ -1759,29 +1759,29 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"
 >OneOf11</A
@@ -2006,31 +2006,31 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"
 >OneOf12</A
@@ -2267,33 +2267,33 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"
 >OneOf13</A
@@ -2542,35 +2542,35 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"
 >OneOf14</A
@@ -2831,37 +2831,37 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"
 >OneOf15</A
@@ -3134,39 +3134,39 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"
 >OneOf16</A
@@ -3451,41 +3451,41 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"
 >OneOf17</A
@@ -3782,43 +3782,43 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"
 >OneOf18</A
@@ -4127,45 +4127,45 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"
 >OneOf19</A
@@ -4486,47 +4486,47 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> s, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> s, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
-> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"
 >OneOf20</A
diff --git a/docs/HaXml/Text-XML-HaXml-ShowXmlLazy.html b/docs/HaXml/Text-XML-HaXml-ShowXmlLazy.html
--- a/docs/HaXml/Text-XML-HaXml-ShowXmlLazy.html
+++ b/docs/HaXml/Text-XML-HaXml-ShowXmlLazy.html
@@ -81,7 +81,7 @@
 ><TD CLASS="decl"
 ><A HREF="#v%3AshowXmlLazy"
 >showXmlLazy</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > a =&gt; Bool -&gt; a -&gt; String</TD
 ></TR
@@ -109,7 +109,7 @@
 ></A
 ><B
 >showXmlLazy</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
 >XmlContent</A
 > a =&gt; Bool -&gt; a -&gt; String</TD
 ><TD CLASS="declbut"
diff --git a/docs/HaXml/Text-XML-HaXml-TypeMapping.html b/docs/HaXml/Text-XML-HaXml-TypeMapping.html
--- a/docs/HaXml/Text-XML-HaXml-TypeMapping.html
+++ b/docs/HaXml/Text-XML-HaXml-TypeMapping.html
@@ -365,7 +365,7 @@
 ><TD CLASS="decl"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
 >HTypeable</A
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"
 >ANYContent</A
 ></TD
 ></TR
@@ -739,7 +739,7 @@
 >HTypeable</A
 > a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
 >HTypeable</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"
 >List1</A
 > a)</TD
 ></TR
diff --git a/docs/HaXml/Text-XML-HaXml-XmlContent-Haskell.html b/docs/HaXml/Text-XML-HaXml-XmlContent-Haskell.html
new file mode 100644
--- /dev/null
+++ b/docs/HaXml/Text-XML-HaXml-XmlContent-Haskell.html
@@ -0,0 +1,674 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Rendered using the Haskell Html Library v0.2-->
+<HTML
+><HEAD
+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
+><TITLE
+>Text.XML.HaXml.XmlContent.Haskell</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock.js" TYPE="text/javascript"
+></SCRIPT
+></HEAD
+><BODY
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topbar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
+></TD
+><TD CLASS="title"
+>HaXml</TD
+><TD CLASS="topbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html"
+>Source code</A
+></TD
+><TD CLASS="topbut"
+><A HREF="index.html"
+>Contents</A
+></TD
+><TD CLASS="topbut"
+><A HREF="doc-index.html"
+>Index</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="modulebar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><FONT SIZE="6"
+>Text.XML.HaXml.XmlContent.Haskell</FONT
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+><B
+>Contents</B
+></TD
+></TR
+><TR
+><TD
+><DL
+><DT
+><A HREF="#1"
+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.
+</A
+></DT
+><DT
+><A HREF="#2"
+>Instances (only) for the XmlContent class, for datatypes that
+</A
+></DT
+><DT
+><A HREF="#3"
+>Whole-document conversion functions
+</A
+></DT
+></DL
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>The class <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+></TT
+> is a kind of replacement for Read and Show:
+   it provides conversions between a generic XML tree representation
+   and your own more specialised typeful Haskell data trees.
+</P
+><P
+>If you are starting with a set of Haskell datatypes, use DrIFT to
+   derive instances of this class for you:
+       http://repetae.net/john/computer/haskell/DrIFT
+   and use the current module for instances of the standard Haskell
+   datatypes list, Maybe, and so on.
+</P
+><P
+>If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
+   to generate both the Haskell types and the corresponding instances,
+   but _do_not_ use the current module for instances: use
+   Text.XML.HaXml.XmlContent instead.
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"
+>Text.XML.HaXml.XmlContent.Parser</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoXml"
+>toXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfromXml"
+>fromXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; Either String a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AreadXml"
+>readXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; String -&gt; Either String a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AshowXml"
+>showXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfpsShowXml"
+>fpsShowXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; ByteString</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfReadXml"
+>fReadXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; IO a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfWriteXml"
+>fWriteXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfpsWriteXml"
+>fpsWriteXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AhGetXml"
+>hGetXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; IO a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AhPutXml"
+>hPutXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfpsHPutXml"
+>fpsHPutXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="1"
+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"
+>Text.XML.HaXml.XmlContent.Parser</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="2"
+>Instances (only) for the XmlContent class, for datatypes that
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="3"
+>Whole-document conversion functions
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoXml"
+></A
+><B
+>toXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#toXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert a fully-typed XML document to a string (with or without DTD).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfromXml"
+></A
+><B
+>fromXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; Either String a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fromXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read a Haskell value from an XML document, ignoring the DTD and
+   using the Haskell result type to determine how to parse it.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AreadXml"
+></A
+><B
+>readXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; String -&gt; Either String a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#readXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read a fully-typed XML document from a string.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AshowXml"
+></A
+><B
+>showXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#showXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert a fully-typed XML document to a string (without DTD).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfpsShowXml"
+></A
+><B
+>fpsShowXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; ByteString</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fpsShowXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert a fully-typed XML document to a ByteString (without DTD).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfReadXml"
+></A
+><B
+>fReadXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; IO a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fReadXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read an XML document from a file and convert it to a fully-typed
+   Haskell value.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfWriteXml"
+></A
+><B
+>fWriteXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fWriteXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write a fully-typed Haskell value to the given file as an XML
+   document.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfpsWriteXml"
+></A
+><B
+>fpsWriteXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fpsWriteXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write any Haskell value to the given file as an XML document,
+   using the FastPackedString interface (output will not be prettified).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AhGetXml"
+></A
+><B
+>hGetXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; IO a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#hGetXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read a fully-typed XML document from a file handle.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AhPutXml"
+></A
+><B
+>hPutXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#hPutXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write a fully-typed XML document to a file handle.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfpsHPutXml"
+></A
+><B
+>fpsHPutXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fpsHPutXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write a fully-typed XML document to a file handle, using the
+   FastPackedString interface (output will not be prettified).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="botbar"
+>Produced by <A HREF="http://www.haskell.org/haddock/"
+>Haddock</A
+> version 0.8</TD
+></TR
+></TABLE
+></BODY
+></HTML
+>
diff --git a/docs/HaXml/Text-XML-HaXml-XmlContent-Parser.html b/docs/HaXml/Text-XML-HaXml-XmlContent-Parser.html
new file mode 100644
--- /dev/null
+++ b/docs/HaXml/Text-XML-HaXml-XmlContent-Parser.html
@@ -0,0 +1,4341 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Rendered using the Haskell Html Library v0.2-->
+<HTML
+><HEAD
+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
+><TITLE
+>Text.XML.HaXml.XmlContent.Parser</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock.js" TYPE="text/javascript"
+></SCRIPT
+></HEAD
+><BODY
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topbar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
+></TD
+><TD CLASS="title"
+>HaXml</TD
+><TD CLASS="topbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html"
+>Source code</A
+></TD
+><TD CLASS="topbut"
+><A HREF="index.html"
+>Contents</A
+></TD
+><TD CLASS="topbut"
+><A HREF="doc-index.html"
+>Index</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="modulebar"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD
+><FONT SIZE="6"
+>Text.XML.HaXml.XmlContent.Parser</FONT
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+><B
+>Contents</B
+></TD
+></TR
+><TR
+><TD
+><DL
+><DT
+><A HREF="#1"
+>Re-export the relevant set of generic XML document type definitions
+</A
+></DT
+><DT
+><A HREF="#2"
+>The enabling classes, that define parsing/unparsing between Haskell
+</A
+></DT
+><DD
+><DL
+><DT
+><A HREF="#3"
+>Auxiliaries for writing parsers in the XmlContent class
+</A
+></DT
+><DT
+><A HREF="#4"
+>Auxiliaries for generating in the XmlContent class
+</A
+></DT
+><DT
+><A HREF="#5"
+>Auxiliaries for the attribute-related classes
+</A
+></DT
+></DL
+></DD
+><DT
+><A HREF="#6"
+>Explicit representation of Haskell datatype information
+</A
+></DT
+><DT
+><A HREF="#7"
+>Types useful for some content models
+</A
+></DT
+></DL
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>The class <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+></TT
+> is a kind of replacement for Read and Show:
+   it provides conversions between a generic XML tree representation
+   and your own more specialised typeful Haskell data trees.
+</P
+><P
+>If you are starting with a set of Haskell datatypes, use DrIFT to
+   derive instances of this class for you:
+       http://repetae.net/john/computer/haskell/DrIFT
+   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
+   to generate both the Haskell types and the corresponding instances.
+</P
+><P
+>This unified class interface replaces two previous (somewhat similar)
+   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have
+   separate classes depending on how you originally defined your datatypes.
+   However, some instances for basic types like lists will depend on which 
+   direction you are using.  See Text.XML.HaXml.XmlContent and
+   Text.XML.HaXml.XmlContent.Haskell.
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3ADocument"
+>Document</A
+> i = <A HREF="#v%3ADocument"
+>Document</A
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"
+>Prolog</A
+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"
+>SymTab</A
+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"
+>EntityDef</A
+>) (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+>]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AElement"
+>Element</A
+> i = <A HREF="#v%3AElem"
+>Elem</A
+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
+>Name</A
+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> i]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AElemTag"
+>ElemTag</A
+>  = <A HREF="#v%3AElemTag"
+>ElemTag</A
+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
+>Name</A
+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AContent"
+>Content</A
+> i</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ACElem"
+>CElem</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i) i</TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ACString"
+>CString</A
+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"
+>CharData</A
+> i</TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ACRef"
+>CRef</A
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Reference</A
+> i</TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ACMisc"
+>CMisc</A
+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+> i</TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>type</SPAN
+> <A HREF="#t%3AAttribute"
+>Attribute</A
+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"
+>Name</A
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+>)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AAttValue"
+>AttValue</A
+>  = <A HREF="#v%3AAttValue"
+>AttValue</A
+> [Either String <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Reference</A
+>]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AProlog"
+>Prolog</A
+>  = <A HREF="#v%3AProlog"
+>Prolog</A
+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"
+>XMLDecl</A
+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"
+>DocTypeDecl</A
+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+>]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AReference"
+>Reference</A
+> </TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ARefEntity"
+>RefEntity</A
+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"
+>EntityRef</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ARefChar"
+>RefChar</A
+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"
+>CharRef</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>class</SPAN
+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
+>HTypeable</A
+> a =&gt; <A HREF="#t%3AXmlContent"
+>XmlContent</A
+> a  <SPAN CLASS="keyword"
+>where</SPAN
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AparseContents"
+>parseContents</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoContents"
+>toContents</A
+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()]</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AxToChar"
+>xToChar</A
+> :: a -&gt; Char</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AxFromChar"
+>xFromChar</A
+> :: Char -&gt; a</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>class</SPAN
+> <A HREF="#t%3AXmlAttributes"
+>XmlAttributes</A
+> a  <SPAN CLASS="keyword"
+>where</SPAN
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfromAttrs"
+>fromAttrs</A
+> :: [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; a</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoAttrs"
+>toAttrs</A
+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>]</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>class</SPAN
+> <A HREF="#t%3AXmlAttrType"
+>XmlAttrType</A
+> a  <SPAN CLASS="keyword"
+>where</SPAN
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfromAttrToTyp"
+>fromAttrToTyp</A
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoAttrFrTyp"
+>toAttrFrTyp</A
+> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>type</SPAN
+> <A HREF="#t%3AXMLParser"
+>XMLParser</A
+> a = Parser (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>) a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Acontent"
+>content</A
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AposnElement"
+>posnElement</A
+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Aelement"
+>element</A
+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Ainterior"
+>interior</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AinElement"
+>inElement</A
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Atext"
+>text</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Aattributes"
+>attributes</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttributes"
+>XmlAttributes</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AposnElementWith"
+>posnElementWith</A
+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AelementWith"
+>elementWith</A
+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AinElementWith"
+>inElementWith</A
+> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Achoice"
+>choice</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> b -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> b</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Adefinite"
+>definite</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AmkElem"
+>mkElem</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AmkElemC"
+>mkElemC</A
+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AmkAttr"
+>mkAttr</A
+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoText"
+>toText</A
+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoCData"
+>toCData</A
+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AmaybeToAttr"
+>maybeToAttr</A
+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AdefaultToAttr"
+>defaultToAttr</A
+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"
+>Defaultable</A
+> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AdefiniteA"
+>definiteA</A
+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AdefaultA"
+>defaultA</A
+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"
+>Defaultable</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3ApossibleA"
+>possibleA</A
+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; Maybe a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfromAttrToStr"
+>fromAttrToStr</A
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoAttrFrStr"
+>toAttrFrStr</A
+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3ADefaultable"
+>Defaultable</A
+> a</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <A HREF="#v%3ADefault"
+>Default</A
+> a</TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3ANonDefault"
+>NonDefault</A
+> a</TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Astr2attr"
+>str2attr</A
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Aattr2str"
+>attr2str</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+> -&gt; String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Aattval"
+>attval</A
+> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i -&gt; a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HaXml-TypeMapping.html"
+>Text.XML.HaXml.TypeMapping</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AList1"
+>List1</A
+> a = <A HREF="#v%3ANonEmpty"
+>NonEmpty</A
+> [a]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A HREF="#t%3AANYContent"
+>ANYContent</A
+> </TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>= <SPAN CLASS="keyword"
+>forall</SPAN
+> a . (XmlContent a, Show a) =&gt; <A HREF="#v%3AANYContent"
+>ANYContent</A
+> a</TD
+></TR
+><TR
+><TD CLASS="decl"
+>| <A HREF="#v%3AUnConverted"
+>UnConverted</A
+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>]</TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="1"
+>Re-export the relevant set of generic XML document type definitions
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3ADocument"
+></A
+><B
+>Document</B
+> i</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Document"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+>The symbol table stored in a document holds all its general entity
+   reference definitions.
+</TD
+></TR
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ADocument"
+></A
+><B
+>Document</B
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"
+>Prolog</A
+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"
+>SymTab</A
+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"
+>EntityDef</A
+>) (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+>]</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Document')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:Document" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Functor <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADocument"
+>Document</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADocument"
+>Document</A
+> i)</TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AElement"
+></A
+><B
+>Element</B
+> i</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Element"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3AElem"
+></A
+><B
+>Elem</B
+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
+>Name</A
+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> i]</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:Element" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Functor <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"
+>Verbatim</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i)</TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AElemTag"
+></A
+><B
+>ElemTag</B
+> </TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#ElemTag"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3AElemTag"
+></A
+><B
+>ElemTag</B
+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
+>Name</A
+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>]</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ElemTag')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:ElemTag" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElemTag"
+>ElemTag</A
+></TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AContent"
+></A
+><B
+>Content</B
+> i</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Content"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ACElem"
+></A
+><B
+>CElem</B
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i) i</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ACString"
+></A
+><B
+>CString</B
+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"
+>CharData</A
+> i</TD
+><TD CLASS="rdoc"
+>bool is whether whitespace is significant
+</TD
+></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ACRef"
+></A
+><B
+>CRef</B
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Reference</A
+> i</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ACMisc"
+></A
+><B
+>CMisc</B
+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+> i</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:Content" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Functor <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>(Eq i, ??? i) =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> i)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"
+>Verbatim</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> i)</TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>type</SPAN
+> <A NAME="t%3AAttribute"
+></A
+><B
+>Attribute</B
+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"
+>Name</A
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+>)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Attribute"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AAttValue"
+></A
+><B
+>AttValue</B
+> </TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#AttValue"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3AAttValue"
+></A
+><B
+>AttValue</B
+> [Either String <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Reference</A
+>]</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AttValue')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:AttValue" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>Show <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+></TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AProlog"
+></A
+><B
+>Prolog</B
+> </TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Prolog"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3AProlog"
+></A
+><B
+>Prolog</B
+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"
+>XMLDecl</A
+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"
+>DocTypeDecl</A
+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
+>Misc</A
+>]</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Prolog')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:Prolog" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"
+>Prolog</A
+></TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AReference"
+></A
+><B
+>Reference</B
+> </TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Reference"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ARefEntity"
+></A
+><B
+>RefEntity</B
+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"
+>EntityRef</A
+></TD
+><TD CLASS="rdoc"
+></TD
+></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ARefChar"
+></A
+><B
+>RefChar</B
+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"
+>CharRef</A
+></TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reference')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:Reference" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Reference</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>Show <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Reference</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"
+>Verbatim</A
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Reference</A
+></TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="2"
+>The enabling classes, that define parsing/unparsing between Haskell
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>class</SPAN
+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
+>HTypeable</A
+> a =&gt; <A NAME="t%3AXmlContent"
+></A
+><B
+>XmlContent</B
+> a  <SPAN CLASS="keyword"
+>where</SPAN
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XmlContent"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+>The <TT
+>XmlContent</TT
+> class promises that an XML Content element can be
+   converted to and from a Haskell value.
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+>Methods</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AparseContents"
+></A
+><B
+>parseContents</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#parseContents"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert from XML to Haskell
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoContents"
+></A
+><B
+>toContents</B
+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toContents"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert from Haskell to XML
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AxToChar"
+></A
+><B
+>xToChar</B
+> :: a -&gt; Char</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#xToChar"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Dummy functions (for most types): used <EM
+>only</EM
+> in the Char instance
+   for coercing lists of Char into String.
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AxFromChar"
+></A
+><B
+>xFromChar</B
+> :: Char -&gt; a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#xFromChar"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:XmlContent')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:XmlContent" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"
+>ANYContent</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> Bool</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> Char</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> Char</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> Double</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> Float</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> Int</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> Integer</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> ()</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h, i)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h, i, j)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h, i, j, k)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h, i, j, k, l)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h, i, j, k, l, m)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h, i, j, k, l, m, n)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"
+>List1</A
+> a)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (Maybe a)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (Maybe a)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> [a]</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> [a]</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (Either a b)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"
+>OneOf2</A
+> a b)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"
+>OneOf3</A
+> a b c)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"
+>OneOf4</A
+> a b c d)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"
+>OneOf5</A
+> a b c d e)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"
+>OneOf6</A
+> a b c d e f)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"
+>OneOf7</A
+> a b c d e f g)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"
+>OneOf8</A
+> a b c d e f g h)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"
+>OneOf9</A
+> a b c d e f g h i)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"
+>OneOf10</A
+> a b c d e f g h i j)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"
+>OneOf11</A
+> a b c d e f g h i j k)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"
+>OneOf12</A
+> a b c d e f g h i j k l)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"
+>OneOf13</A
+> a b c d e f g h i j k l m)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"
+>OneOf14</A
+> a b c d e f g h i j k l m n)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"
+>OneOf15</A
+> a b c d e f g h i j k l m n o)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"
+>OneOf16</A
+> a b c d e f g h i j k l m n o p)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"
+>OneOf17</A
+> a b c d e f g h i j k l m n o p q)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"
+>OneOf18</A
+> a b c d e f g h i j k l m n o p q r)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"
+>OneOf19</A
+> a b c d e f g h i j k l m n o p q r s)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> s, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"
+>OneOf20</A
+> a b c d e f g h i j k l m n o p q r s t)</TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>class</SPAN
+> <A NAME="t%3AXmlAttributes"
+></A
+><B
+>XmlAttributes</B
+> a  <SPAN CLASS="keyword"
+>where</SPAN
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XmlAttributes"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+>The <TT
+>XmlAttributes</TT
+> class promises that a list of XML tag attributes
+   can be converted to and from a Haskell value.
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+>Methods</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfromAttrs"
+></A
+><B
+>fromAttrs</B
+> :: [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#fromAttrs"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoAttrs"
+></A
+><B
+>toAttrs</B
+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toAttrs"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>class</SPAN
+> <A NAME="t%3AXmlAttrType"
+></A
+><B
+>XmlAttrType</B
+> a  <SPAN CLASS="keyword"
+>where</SPAN
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XmlAttrType"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+>The <TT
+>XmlAttrType</TT
+> class promises that an attribute taking an XML
+   enumerated type can be converted to and from a Haskell value.
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+>Methods</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfromAttrToTyp"
+></A
+><B
+>fromAttrToTyp</B
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#fromAttrToTyp"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoAttrFrTyp"
+></A
+><B
+>toAttrFrTyp</B
+> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toAttrFrTyp"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section2"
+><A NAME="3"
+>Auxiliaries for writing parsers in the XmlContent class
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>type</SPAN
+> <A NAME="t%3AXMLParser"
+></A
+><B
+>XMLParser</B
+> a = Parser (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>) a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XMLParser"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>We need a parsing monad for reading generic XML Content into specific
+   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly
+   ones, where the input token type is fixed as XML Content.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Acontent"
+></A
+><B
+>content</B
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#content"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>The most primitive combinator for XMLParser - get one content item.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AposnElement"
+></A
+><B
+>posnElement</B
+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#posnElement"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>A specialisation of <TT
+>posnElementWith (==)</TT
+>.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Aelement"
+></A
+><B
+>element</B
+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#element"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Get the next content element, checking that it has one of the required
+   tags.  (Skips over comments and whitespace, rejects text and refs.)
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Ainterior"
+></A
+><B
+>interior</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#interior"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Run an XMLParser on the contents of the given element (i.e. not on the
+   current monadic content sequence), checking that the contents are
+   exhausted, before returning the calculated value within the current
+   parser context.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AinElement"
+></A
+><B
+>inElement</B
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#inElement"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>A combination of element + interior.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Atext"
+></A
+><B
+>text</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#text"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Atext"
+>text</A
+></TT
+> is a counterpart to <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aelement"
+>element</A
+></TT
+>, parsing text content if it
+   exists.  Adjacent text and references are coalesced.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Aattributes"
+></A
+><B
+>attributes</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttributes"
+>XmlAttributes</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#attributes"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Do some parsing of the attributes of the given element
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AposnElementWith"
+></A
+><B
+>posnElementWith</B
+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#posnElementWith"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Get the next content element, checking that it has one of the required
+   tags, using the given matching function.
+   (Skips over comments and whitespace, rejects text and refs.
+    Also returns position of element.)
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AelementWith"
+></A
+><B
+>elementWith</B
+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#elementWith"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Like element, only permits a more flexible match against the tagname.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AinElementWith"
+></A
+><B
+>inElementWith</B
+> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#inElementWith"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>A combination of elementWith + interior.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Achoice"
+></A
+><B
+>choice</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> b -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> b</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#choice"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>'choice f p' means if parseContents succeeds, apply f to the result,
+   otherwise use the continuation parser.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Adefinite"
+></A
+><B
+>definite</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>XMLParser</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#definite"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>not sure this is needed now.   'definite p' previously ensured that
+   an element was definitely present.  Now I think the monad might take
+   care of that for us.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section2"
+><A NAME="4"
+>Auxiliaries for generating in the XmlContent class
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AmkElem"
+></A
+><B
+>mkElem</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#mkElem"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Generate an element with no attributes, named for its HType.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AmkElemC"
+></A
+><B
+>mkElemC</B
+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#mkElemC"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Generate an element with no attributes, named directly.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AmkAttr"
+></A
+><B
+>mkAttr</B
+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#mkAttr"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Generate a single attribute.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoText"
+></A
+><B
+>toText</B
+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toText"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Turn a simple string into XML text.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoCData"
+></A
+><B
+>toCData</B
+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> ()]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toCData"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Turn a string into an XML CDATA section.
+   (i.e. special characters like &amp; are preserved without interpretation.)
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section2"
+><A NAME="5"
+>Auxiliaries for the attribute-related classes
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AmaybeToAttr"
+></A
+><B
+>maybeToAttr</B
+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#maybeToAttr"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AdefaultToAttr"
+></A
+><B
+>defaultToAttr</B
+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"
+>Defaultable</A
+> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#defaultToAttr"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AdefiniteA"
+></A
+><B
+>definiteA</B
+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#definiteA"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AdefaultA"
+></A
+><B
+>defaultA</B
+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"
+>Defaultable</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#defaultA"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3ApossibleA"
+></A
+><B
+>possibleA</B
+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+>] -&gt; Maybe a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#possibleA"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfromAttrToStr"
+></A
+><B
+>fromAttrToStr</B
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+> -&gt; Maybe String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#fromAttrToStr"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoAttrFrStr"
+></A
+><B
+>toAttrFrStr</B
+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Attribute</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toAttrFrStr"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3ADefaultable"
+></A
+><B
+>Defaultable</B
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Defaultable"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+>If an attribute is defaultable, then it either takes the default
+   value (which is omitted from the output), or a non-default value
+   (which obviously must be printed).
+</TD
+></TR
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ADefault"
+></A
+><B
+>Default</B
+> a</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ANonDefault"
+></A
+><B
+>NonDefault</B
+> a</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Defaultable')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:Defaultable" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Eq a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"
+>Defaultable</A
+> a)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>Show a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"
+>Defaultable</A
+> a)</TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Astr2attr"
+></A
+><B
+>str2attr</B
+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#str2attr"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Aattr2str"
+></A
+><B
+>attr2str</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>AttValue</A
+> -&gt; String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#attr2str"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Aattval"
+></A
+><B
+>attval</B
+> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Element</A
+> i -&gt; a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#attval"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read a single attribute called <A HREF="value.html"
+>value</A
+>.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="6"
+>Explicit representation of Haskell datatype information
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HaXml-TypeMapping.html"
+>Text.XML.HaXml.TypeMapping</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="7"
+>Types useful for some content models
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AList1"
+></A
+><B
+>List1</B
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#List1"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+>The List1 type represents lists with at least one element.
+   It is required for DTD content models that use + as a modifier.
+</TD
+></TR
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><A NAME="v%3ANonEmpty"
+></A
+><B
+>NonEmpty</B
+> [a]</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:List1')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:List1" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>??? a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"
+>List1</A
+> a)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
+>HTypeable</A
+> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
+>HTypeable</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"
+>List1</A
+> a)</TD
+></TR
+><TR
+><TD CLASS="decl"
+>??? a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"
+>List1</A
+> a)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"
+>List1</A
+> a)</TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><SPAN CLASS="keyword"
+>data</SPAN
+> <A NAME="t%3AANYContent"
+></A
+><B
+>ANYContent</B
+> </TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#ANYContent"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="ndoc"
+><P
+>A type corresponding to XML's ANY contentspec.
+   It is either a list of unconverted xml <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+></TT
+>
+   or some <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+></TT
+>-able value.
+</P
+><P
+>Parsing functions (e.g. <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AparseContents"
+>parseContents</A
+></TT
+>) will always produce <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AUnConverted"
+>UnConverted</A
+></TT
+>.
+ Note: The Show instance for <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AUnConverted"
+>UnConverted</A
+></TT
+> uses <TT
+><A HREF="Text-XML-HaXml-Verbatim.html#v%3Averbatim"
+>verbatim</A
+></TT
+>.
+</P
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+>Constructors</TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="arg"
+><SPAN CLASS="keyword"
+>forall</SPAN
+> a . (XmlContent a, Show a) =&gt; <A NAME="v%3AANYContent"
+></A
+><B
+>ANYContent</B
+> a</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3AUnConverted"
+></A
+><B
+>UnConverted</B
+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Content</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+>]</TD
+><TD CLASS="rdoc"
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="section4"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ANYContent')" ALT="show/hide"
+> Instances</TD
+></TR
+><TR
+><TD CLASS="body"
+><DIV ID="i:ANYContent" STYLE="display:block;"
+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"
+>ANYContent</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
+>HTypeable</A
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"
+>ANYContent</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>Show <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"
+>ANYContent</A
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"
+>ANYContent</A
+></TD
+></TR
+></TABLE
+></DIV
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="botbar"
+>Produced by <A HREF="http://www.haskell.org/haddock/"
+>Haddock</A
+> version 0.8</TD
+></TR
+></TABLE
+></BODY
+></HTML
+>
diff --git a/docs/HaXml/Text-XML-HaXml-XmlContent.html b/docs/HaXml/Text-XML-HaXml-XmlContent.html
--- a/docs/HaXml/Text-XML-HaXml-XmlContent.html
+++ b/docs/HaXml/Text-XML-HaXml-XmlContent.html
@@ -66,4723 +66,596 @@
 ><DL
 ><DT
 ><A HREF="#1"
->Re-export the relevant set of generic XML document type definitions
-</A
-></DT
-><DT
-><A HREF="#2"
->The enabling classes, that define parsing/unparsing between Haskell
-</A
-></DT
-><DD
-><DL
-><DT
-><A HREF="#3"
->Auxiliaries for writing parsers in the XmlContent class
-</A
-></DT
-><DT
-><A HREF="#4"
->Auxiliaries for generating in the XmlContent class
-</A
-></DT
-><DT
-><A HREF="#5"
->Auxiliaries for the attribute-related classes
-</A
-></DT
-></DL
-></DD
-><DT
-><A HREF="#6"
->Whole-document conversion functions
-</A
-></DT
-><DT
-><A HREF="#7"
->Explicit representation of Haskell datatype information
-</A
-></DT
-><DT
-><A HREF="#8"
->Types useful for some content models
-</A
-></DT
-></DL
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->The class <TT
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-></TT
-> is a kind of replacement for Read and Show:
-   it provides conversions between a generic XML tree representation
-   and your own more specialised typeful Haskell data trees.
-</P
-><P
->If you are starting with a set of Haskell datatypes, use DrIFT to
-   derive instances of this class for you:
-       http://repetae.net/john/computer/haskell/DrIFT
-   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
-   to generate both the Haskell types and the corresponding instances.
-</P
-><P
->This unified class interface replaces two previous (somewhat similar)
-   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have
-   separate classes depending on how you originally defined your datatypes.
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Synopsis</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3ADocument"
->Document</A
-> i = <A HREF="#v%3ADocument"
->Document</A
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"
->Prolog</A
-> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"
->SymTab</A
-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"
->EntityDef</A
->) (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
->]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AElement"
->Element</A
-> i = <A HREF="#v%3AElem"
->Elem</A
-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
->Name</A
-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> i]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AElemTag"
->ElemTag</A
->  = <A HREF="#v%3AElemTag"
->ElemTag</A
-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
->Name</A
-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AContent"
->Content</A
-> i</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->= <A HREF="#v%3ACElem"
->CElem</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i) i</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ACString"
->CString</A
-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"
->CharData</A
-> i</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ACRef"
->CRef</A
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Reference</A
-> i</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ACMisc"
->CMisc</A
-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
-> i</TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->type</SPAN
-> <A HREF="#t%3AAttribute"
->Attribute</A
-> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"
->Name</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
->)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AAttValue"
->AttValue</A
->  = <A HREF="#v%3AAttValue"
->AttValue</A
-> [Either String <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Reference</A
->]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AProlog"
->Prolog</A
->  = <A HREF="#v%3AProlog"
->Prolog</A
-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"
->XMLDecl</A
->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
->] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"
->DocTypeDecl</A
->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
->]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AReference"
->Reference</A
-> </TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->= <A HREF="#v%3ARefEntity"
->RefEntity</A
-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"
->EntityRef</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARefChar"
->RefChar</A
-> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"
->CharRef</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->class</SPAN
-> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
->HTypeable</A
-> a =&gt; <A HREF="#t%3AXmlContent"
->XmlContent</A
-> a  <SPAN CLASS="keyword"
->where</SPAN
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AparseContents"
->parseContents</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtoContents"
->toContents</A
-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()]</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AxToChar"
->xToChar</A
-> :: a -&gt; Char</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AxFromChar"
->xFromChar</A
-> :: Char -&gt; a</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->class</SPAN
-> <A HREF="#t%3AXmlAttributes"
->XmlAttributes</A
-> a  <SPAN CLASS="keyword"
->where</SPAN
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfromAttrs"
->fromAttrs</A
-> :: [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; a</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtoAttrs"
->toAttrs</A
-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->]</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->class</SPAN
-> <A HREF="#t%3AXmlAttrType"
->XmlAttrType</A
-> a  <SPAN CLASS="keyword"
->where</SPAN
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfromAttrToTyp"
->fromAttrToTyp</A
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtoAttrFrTyp"
->toAttrFrTyp</A
-> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->type</SPAN
-> <A HREF="#t%3AXMLParser"
->XMLParser</A
-> a = Parser (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->) a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Acontent"
->content</A
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AposnElement"
->posnElement</A
-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aelement"
->element</A
-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Ainterior"
->interior</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AinElement"
->inElement</A
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Atext"
->text</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aattributes"
->attributes</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"
->XmlAttributes</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AposnElementWith"
->posnElementWith</A
-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AelementWith"
->elementWith</A
-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AinElementWith"
->inElementWith</A
-> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Achoice"
->choice</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> b -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> b</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Adefinite"
->definite</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AmkElem"
->mkElem</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AmkElemC"
->mkElemC</A
-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AmkAttr"
->mkAttr</A
-> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtoText"
->toText</A
-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtoCData"
->toCData</A
-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AmaybeToAttr"
->maybeToAttr</A
-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AdefaultToAttr"
->defaultToAttr</A
-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"
->Defaultable</A
-> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AdefiniteA"
->definiteA</A
-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AdefaultA"
->defaultA</A
-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"
->Defaultable</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3ApossibleA"
->possibleA</A
-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; Maybe a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfromAttrToStr"
->fromAttrToStr</A
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtoAttrFrStr"
->toAttrFrStr</A
-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3ADefaultable"
->Defaultable</A
-> a</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->= <A HREF="#v%3ADefault"
->Default</A
-> a</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ANonDefault"
->NonDefault</A
-> a</TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Astr2attr"
->str2attr</A
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aattr2str"
->attr2str</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
-> -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aattval"
->attval</A
-> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i -&gt; a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtoXml"
->toXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"
->Document</A
-> ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfromXml"
->fromXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"
->Document</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
-> -&gt; Either String a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AreadXml"
->readXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; String -&gt; Either String a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AshowXml"
->showXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Bool -&gt; a -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfpsShowXml"
->fpsShowXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Bool -&gt; a -&gt; ByteString</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfReadXml"
->fReadXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; FilePath -&gt; IO a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfWriteXml"
->fWriteXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfpsWriteXml"
->fpsWriteXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AhGetXml"
->hGetXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Handle -&gt; IO a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AhPutXml"
->hPutXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AfpsHPutXml"
->fpsHPutXml</A
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HaXml-TypeMapping.html"
->Text.XML.HaXml.TypeMapping</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AList1"
->List1</A
-> a = <A HREF="#v%3ANonEmpty"
->NonEmpty</A
-> [a]</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AANYContent"
->ANYContent</A
-> </TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->= <SPAN CLASS="keyword"
->forall</SPAN
-> a . (XmlContent a, Show a) =&gt; <A HREF="#v%3AANYContent"
->ANYContent</A
-> a</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3AUnConverted"
->UnConverted</A
-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->]</TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
-><A NAME="1"
->Re-export the relevant set of generic XML document type definitions
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3ADocument"
-></A
-><B
->Document</B
-> i</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#Document"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->The symbol table stored in a document holds all its general entity
-   reference definitions.
-</TD
-></TR
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ADocument"
-></A
-><B
->Document</B
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"
->Prolog</A
-> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"
->SymTab</A
-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"
->EntityDef</A
->) (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
->]</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Document')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:Document" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"
->Document</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"
->Document</A
-> i)</TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AElement"
-></A
-><B
->Element</B
-> i</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#Element"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AElem"
-></A
-><B
->Elem</B
-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
->Name</A
-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> i]</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:Element" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i)</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"
->Verbatim</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i)</TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AElemTag"
-></A
-><B
->ElemTag</B
-> </TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#ElemTag"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AElemTag"
-></A
-><B
->ElemTag</B
-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"
->Name</A
-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->]</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ElemTag')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:ElemTag" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElemTag"
->ElemTag</A
-></TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AContent"
-></A
-><B
->Content</B
-> i</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#Content"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ACElem"
-></A
-><B
->CElem</B
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i) i</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ACString"
-></A
-><B
->CString</B
-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"
->CharData</A
-> i</TD
-><TD CLASS="rdoc"
->bool is whether whitespace is significant
-</TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ACRef"
-></A
-><B
->CRef</B
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Reference</A
-> i</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ACMisc"
-></A
-><B
->CMisc</B
-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
-> i</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:Content" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->(Eq i, ??? i) =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> i)</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"
->Verbatim</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> i)</TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->type</SPAN
-> <A NAME="t%3AAttribute"
-></A
-><B
->Attribute</B
-> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"
->Name</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
->)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#Attribute"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AAttValue"
-></A
-><B
->AttValue</B
-> </TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#AttValue"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AAttValue"
-></A
-><B
->AttValue</B
-> [Either String <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Reference</A
->]</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AttValue')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:AttValue" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
-></TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AProlog"
-></A
-><B
->Prolog</B
-> </TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#Prolog"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AProlog"
-></A
-><B
->Prolog</B
-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"
->XMLDecl</A
->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
->] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"
->DocTypeDecl</A
->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"
->Misc</A
->]</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Prolog')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:Prolog" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"
->Prolog</A
-></TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AReference"
-></A
-><B
->Reference</B
-> </TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#Reference"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARefEntity"
-></A
-><B
->RefEntity</B
-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"
->EntityRef</A
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARefChar"
-></A
-><B
->RefChar</B
-> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"
->CharRef</A
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reference')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:Reference" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Reference</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Reference</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"
->Verbatim</A
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Reference</A
-></TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
-><A NAME="2"
->The enabling classes, that define parsing/unparsing between Haskell
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->class</SPAN
-> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
->HTypeable</A
-> a =&gt; <A NAME="t%3AXmlContent"
-></A
-><B
->XmlContent</B
-> a  <SPAN CLASS="keyword"
->where</SPAN
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlContent"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->The <TT
->XmlContent</TT
-> class promises that an XML Content element can be
-   converted to and from a Haskell value.
-</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="section4"
->Methods</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AparseContents"
-></A
-><B
->parseContents</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#parseContents"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Convert from XML to Haskell
-</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtoContents"
-></A
-><B
->toContents</B
-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()]</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#toContents"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Convert from Haskell to XML
-</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AxToChar"
-></A
-><B
->xToChar</B
-> :: a -&gt; Char</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#xToChar"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Dummy functions (for most types): used <EM
->only</EM
-> in the Char instance
-   for coercing lists of Char into String.
-</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AxFromChar"
-></A
-><B
->xFromChar</B
-> :: Char -&gt; a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#xFromChar"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:XmlContent')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:XmlContent" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"
->ANYContent</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> Bool</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> Char</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> Double</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> Float</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> Int</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> Integer</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> ()</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h, i)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h, i, j)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h, i, j, k)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h, i, j, k, l)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h, i, j, k, l, m)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"
->List1</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (Maybe a)</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> [a]</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (Either a b)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"
->OneOf2</A
-> a b)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"
->OneOf3</A
-> a b c)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"
->OneOf4</A
-> a b c d)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"
->OneOf5</A
-> a b c d e)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"
->OneOf6</A
-> a b c d e f)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"
->OneOf7</A
-> a b c d e f g)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"
->OneOf8</A
-> a b c d e f g h)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"
->OneOf9</A
-> a b c d e f g h i)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"
->OneOf10</A
-> a b c d e f g h i j)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"
->OneOf11</A
-> a b c d e f g h i j k)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"
->OneOf12</A
-> a b c d e f g h i j k l)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"
->OneOf13</A
-> a b c d e f g h i j k l m)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"
->OneOf14</A
-> a b c d e f g h i j k l m n)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"
->OneOf15</A
-> a b c d e f g h i j k l m n o)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"
->OneOf16</A
-> a b c d e f g h i j k l m n o p)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"
->OneOf17</A
-> a b c d e f g h i j k l m n o p q)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"
->OneOf18</A
-> a b c d e f g h i j k l m n o p q r)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"
->OneOf19</A
-> a b c d e f g h i j k l m n o p q r s)</TD
-></TR
-><TR
-><TD CLASS="decl"
->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> s, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"
->OneOf20</A
-> a b c d e f g h i j k l m n o p q r s t)</TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->class</SPAN
-> <A NAME="t%3AXmlAttributes"
-></A
-><B
->XmlAttributes</B
-> a  <SPAN CLASS="keyword"
->where</SPAN
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlAttributes"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->The <TT
->XmlAttributes</TT
-> class promises that a list of XML tag attributes
-   can be converted to and from a Haskell value.
-</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="section4"
->Methods</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfromAttrs"
-></A
-><B
->fromAttrs</B
-> :: [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrs"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtoAttrs"
-></A
-><B
->toAttrs</B
-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->]</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrs"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->class</SPAN
-> <A NAME="t%3AXmlAttrType"
-></A
-><B
->XmlAttrType</B
-> a  <SPAN CLASS="keyword"
->where</SPAN
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlAttrType"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->The <TT
->XmlAttrType</TT
-> class promises that an attribute taking an XML
-   enumerated type can be converted to and from a Haskell value.
-</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="section4"
->Methods</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfromAttrToTyp"
-></A
-><B
->fromAttrToTyp</B
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrToTyp"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtoAttrFrTyp"
-></A
-><B
->toAttrFrTyp</B
-> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrFrTyp"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section2"
-><A NAME="3"
->Auxiliaries for writing parsers in the XmlContent class
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->type</SPAN
-> <A NAME="t%3AXMLParser"
-></A
-><B
->XMLParser</B
-> a = Parser (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->) a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#XMLParser"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->We need a parsing monad for reading generic XML Content into specific
-   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly
-   ones, where the input token type is fixed as XML Content.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Acontent"
-></A
-><B
->content</B
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#content"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->The most primitive combinator for XMLParser - get one content item.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AposnElement"
-></A
-><B
->posnElement</B
-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#posnElement"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->A specialisation of <TT
->posnElementWith (==)</TT
->.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Aelement"
-></A
-><B
->element</B
-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#element"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Get the next content element, checking that it has one of the required
-   tags.  (Skips over comments and whitespace, rejects text and refs.)
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Ainterior"
-></A
-><B
->interior</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#interior"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Run an XMLParser on the contents of the given element (i.e. not on the
-   current monadic content sequence), checking that the contents are
-   exhausted, before returning the calculated value within the current
-   parser context.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AinElement"
-></A
-><B
->inElement</B
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#inElement"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->A combination of element + interior.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Atext"
-></A
-><B
->text</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#text"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><TT
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Atext"
->text</A
-></TT
-> is a counterpart to <TT
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aelement"
->element</A
-></TT
->, parsing text content if it
-   exists.  Adjacent text and references are coalesced.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Aattributes"
-></A
-><B
->attributes</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"
->XmlAttributes</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#attributes"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Do some parsing of the attributes of the given element
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AposnElementWith"
-></A
-><B
->posnElementWith</B
-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#posnElementWith"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Get the next content element, checking that it has one of the required
-   tags, using the given matching function.
-   (Skips over comments and whitespace, rejects text and refs.
-    Also returns position of element.)
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AelementWith"
-></A
-><B
->elementWith</B
-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#elementWith"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Like element, only permits a more flexible match against the tagname.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AinElementWith"
-></A
-><B
->inElementWith</B
-> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#inElementWith"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->A combination of elementWith + interior.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Achoice"
-></A
-><B
->choice</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> b -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> b</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#choice"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->'choice f p' means if parseContents succeeds, apply f to the result,
-   otherwise use the continuation parser.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Adefinite"
-></A
-><B
->definite</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->XMLParser</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#definite"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->not sure this is needed now.   'definite p' previously ensured that
-   an element was definitely present.  Now I think the monad might take
-   care of that for us.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section2"
-><A NAME="4"
->Auxiliaries for generating in the XmlContent class
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AmkElem"
-></A
-><B
->mkElem</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#mkElem"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Generate an element with no attributes, named for its HType.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AmkElemC"
-></A
-><B
->mkElemC</B
-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#mkElemC"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Generate an element with no attributes, named directly.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AmkAttr"
-></A
-><B
->mkAttr</B
-> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#mkAttr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Generate a single attribute.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtoText"
-></A
-><B
->toText</B
-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()]</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#toText"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Turn a simple string into XML text.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtoCData"
-></A
-><B
->toCData</B
-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> ()]</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#toCData"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Turn a string into an XML CDATA section.
-   (i.e. special characters like &amp; are preserved without interpretation.)
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section2"
-><A NAME="5"
->Auxiliaries for the attribute-related classes
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AmaybeToAttr"
-></A
-><B
->maybeToAttr</B
-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#maybeToAttr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AdefaultToAttr"
-></A
-><B
->defaultToAttr</B
-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"
->Defaultable</A
-> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#defaultToAttr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AdefiniteA"
-></A
-><B
->definiteA</B
-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#definiteA"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AdefaultA"
-></A
-><B
->defaultA</B
-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"
->Defaultable</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#defaultA"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3ApossibleA"
-></A
-><B
->possibleA</B
-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
->] -&gt; Maybe a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#possibleA"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfromAttrToStr"
-></A
-><B
->fromAttrToStr</B
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-> -&gt; Maybe String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrToStr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtoAttrFrStr"
-></A
-><B
->toAttrFrStr</B
-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Attribute</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrFrStr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3ADefaultable"
-></A
-><B
->Defaultable</B
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#Defaultable"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->If an attribute is defaultable, then it either takes the default
-   value (which is omitted from the output), or a non-default value
-   (which obviously must be printed).
-</TD
-></TR
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ADefault"
-></A
-><B
->Default</B
-> a</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ANonDefault"
-></A
-><B
->NonDefault</B
-> a</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Defaultable')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:Defaultable" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"
->Defaultable</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->Show a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"
->Defaultable</A
-> a)</TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Astr2attr"
-></A
-><B
->str2attr</B
-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#str2attr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Aattr2str"
-></A
-><B
->attr2str</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->AttValue</A
-> -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#attr2str"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Aattval"
-></A
-><B
->attval</B
-> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Element</A
-> i -&gt; a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#attval"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Read a single attribute called <A HREF="value.html"
->value</A
->.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
-><A NAME="6"
->Whole-document conversion functions
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtoXml"
-></A
-><B
->toXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"
->Document</A
-> ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#toXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Convert a fully-typed XML document to a string (with or without DTD).
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfromXml"
-></A
-><B
->fromXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"
->Document</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
-> -&gt; Either String a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Read a Haskell value from an XML document, ignoring the DTD and
-   using the Haskell result type to determine how to parse it.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AreadXml"
-></A
-><B
->readXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; String -&gt; Either String a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#readXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Read a fully-typed XML document from a string.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AshowXml"
-></A
-><B
->showXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Bool -&gt; a -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#showXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Convert a fully-typed XML document to a string (without DTD).
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfpsShowXml"
-></A
-><B
->fpsShowXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Bool -&gt; a -&gt; ByteString</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsShowXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Convert a fully-typed XML document to a ByteString (without DTD).
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfReadXml"
-></A
-><B
->fReadXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; FilePath -&gt; IO a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fReadXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Read an XML document from a file and convert it to a fully-typed
-   Haskell value.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfWriteXml"
-></A
-><B
->fWriteXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fWriteXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Write a fully-typed Haskell value to the given file as an XML
-   document.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfpsWriteXml"
-></A
-><B
->fpsWriteXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsWriteXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Write any Haskell value to the given file as an XML document,
-   using the FastPackedString interface (output will not be prettified).
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AhGetXml"
-></A
-><B
->hGetXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Handle -&gt; IO a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#hGetXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Read a fully-typed XML document from a file handle.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AhPutXml"
-></A
-><B
->hPutXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#hPutXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Write a fully-typed XML document to a file handle.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AfpsHPutXml"
-></A
-><B
->fpsHPutXml</B
-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsHPutXml"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Write a fully-typed XML document to a file handle, using the
-   FastPackedString interface (output will not be prettified).
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
-><A NAME="7"
->Explicit representation of Haskell datatype information
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HaXml-TypeMapping.html"
->Text.XML.HaXml.TypeMapping</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
-><A NAME="8"
->Types useful for some content models
-</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AList1"
-></A
-><B
->List1</B
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#List1"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->The List1 type represents lists with at least one element.
-   It is required for DTD content models that use + as a modifier.
-</TD
-></TR
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ANonEmpty"
-></A
-><B
->NonEmpty</B
-> [a]</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:List1')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:List1" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->??? a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"
->List1</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
->HTypeable</A
-> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
->HTypeable</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"
->List1</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->??? a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"
->List1</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"
->List1</A
-> a)</TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A NAME="t%3AANYContent"
-></A
-><B
->ANYContent</B
-> </TD
-><TD CLASS="declbut"
-><A HREF="src/Text/XML/HaXml/XmlContent.html#ANYContent"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
-><P
->A type corresponding to XML's ANY contentspec.
-   It is either a list of unconverted xml <TT
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-></TT
->
-   or some <TT
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-></TT
->-able value.
-</P
-><P
->Parsing functions (e.g. <TT
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AparseContents"
->parseContents</A
-></TT
->) will always produce <TT
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"
->UnConverted</A
-></TT
->.
- Note: The Show instance for <TT
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"
->UnConverted</A
-></TT
-> uses <TT
-><A HREF="Text-XML-HaXml-Verbatim.html#v%3Averbatim"
->verbatim</A
-></TT
->.
-</P
-></TD
-></TR
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><SPAN CLASS="keyword"
->forall</SPAN
-> a . (XmlContent a, Show a) =&gt; <A NAME="v%3AANYContent"
-></A
-><B
->ANYContent</B
-> a</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AUnConverted"
-></A
-><B
->UnConverted</B
-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Content</A
-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
->Posn</A
->]</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ANYContent')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:ANYContent" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"
->ANYContent</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
->HTypeable</A
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"
->ANYContent</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"
->ANYContent</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->XmlContent</A
-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"
->ANYContent</A
-></TD
-></TR
-></TABLE
-></DIV
-></TD
-></TR
-></TABLE
-></TD
+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.
+</A
+></DT
+><DT
+><A HREF="#2"
+>Contains instances of the XmlContent classes,
+</A
+></DT
+><DT
+><A HREF="#3"
+>Whole-document conversion functions
+</A
+></DT
+></DL
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>The class <TT
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+></TT
+> is a kind of replacement for Read and Show:
+   it provides conversions between a generic XML tree representation
+   and your own more specialised typeful Haskell data trees.
+</P
+><P
+>If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
+   to generate both the Haskell types and the corresponding instances.
+</P
+><P
+>If you are starting with a set of Haskell datatypes, use DrIFT to
+   derive instances of this class for you:
+       http://repetae.net/john/computer/haskell/DrIFT
+   and _do_not_ use the current module, but rather
+   Text.XML.HaXml.XmlContent.Haskell, for the correct matching
+   instances for standard Haskell datatypes.
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Synopsis</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="body"
+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"
+>Text.XML.HaXml.XmlContent.Parser</A
+></TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AtoXml"
+>toXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfromXml"
+>fromXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; Either String a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AreadXml"
+>readXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; String -&gt; Either String a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AshowXml"
+>showXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfpsShowXml"
+>fpsShowXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; ByteString</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfReadXml"
+>fReadXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; IO a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfWriteXml"
+>fWriteXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfpsWriteXml"
+>fpsWriteXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AhGetXml"
+>hGetXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; IO a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AhPutXml"
+>hPutXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AfpsHPutXml"
+>fpsHPutXml</A
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="1"
+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"
+>Text.XML.HaXml.XmlContent.Parser</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="2"
+>Contains instances of the XmlContent classes,
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="3"
+>Whole-document conversion functions
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AtoXml"
+></A
+><B
+>toXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#toXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert a fully-typed XML document to a string (with or without DTD).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfromXml"
+></A
+><B
+>fromXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
+>Document</A
+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"
+>Posn</A
+> -&gt; Either String a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#fromXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read a Haskell value from an XML document, ignoring the DTD and
+   using the Haskell result type to determine how to parse it.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AreadXml"
+></A
+><B
+>readXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; String -&gt; Either String a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#readXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read a fully-typed XML document from a string.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AshowXml"
+></A
+><B
+>showXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#showXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert a fully-typed XML document to a string (without DTD).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfpsShowXml"
+></A
+><B
+>fpsShowXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Bool -&gt; a -&gt; ByteString</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsShowXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Convert a fully-typed XML document to a ByteString (without DTD).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfReadXml"
+></A
+><B
+>fReadXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; IO a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#fReadXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read an XML document from a file and convert it to a fully-typed
+   Haskell value.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfWriteXml"
+></A
+><B
+>fWriteXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#fWriteXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write a fully-typed Haskell value to the given file as an XML
+   document.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfpsWriteXml"
+></A
+><B
+>fpsWriteXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsWriteXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write any Haskell value to the given file as an XML document,
+   using the FastPackedString interface (output will not be prettified).
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AhGetXml"
+></A
+><B
+>hGetXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; IO a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#hGetXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Read a fully-typed XML document from a file handle.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AhPutXml"
+></A
+><B
+>hPutXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#hPutXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write a fully-typed XML document to a file handle.
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AfpsHPutXml"
+></A
+><B
+>fpsHPutXml</B
+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>XmlContent</A
+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD
+><TD CLASS="declbut"
+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsHPutXml"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Write a fully-typed XML document to a file handle, using the
+   FastPackedString interface (output will not be prettified).
+</TD
 ></TR
 ><TR
 ><TD CLASS="s15"
diff --git a/docs/HaXml/doc-index-A.html b/docs/HaXml/doc-index-A.html
--- a/docs/HaXml/doc-index-A.html
+++ b/docs/HaXml/doc-index-A.html
@@ -177,17 +177,17 @@
 ><TD CLASS="indexannot"
 >1 (Type/Class)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
 >2 (Data Constructor)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AANYContent"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AANYContent"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -271,9 +271,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
@@ -281,9 +281,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3AAttValue"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AAttValue"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AAttValue"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -299,9 +299,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -363,9 +363,9 @@
 ><TD CLASS="indexentry"
 >attr2str</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattr2str"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aattr2str"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -387,9 +387,9 @@
 ><TD CLASS="indexentry"
 >attributes</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattributes"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aattributes"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -411,9 +411,9 @@
 ><TD CLASS="indexentry"
 >attval</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattval"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aattval"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ></TABLE
 ></TD
diff --git a/docs/HaXml/doc-index-C.html b/docs/HaXml/doc-index-C.html
--- a/docs/HaXml/doc-index-C.html
+++ b/docs/HaXml/doc-index-C.html
@@ -183,9 +183,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3ACElem"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACElem"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACElem"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -201,9 +201,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3ACMisc"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACMisc"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACMisc"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -219,9 +219,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3ACRef"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACRef"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACRef"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -229,9 +229,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3ACString"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACString"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACString"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -295,7 +295,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AConstr"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
@@ -303,7 +303,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AConstr"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -319,9 +319,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3AContent"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -367,8 +367,12 @@
 ><TD CLASS="indexentry"
 >catMaybes</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AcatMaybes"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AcatMaybes"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AcatMaybes"
 >Text.XML.HaXml.XmlContent</A
+>, <A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AcatMaybes"
+>Text.XML.HaXml.XmlContent.Haskell</A
 ></TD
 ></TR
 ><TR
@@ -447,9 +451,9 @@
 ><TD CLASS="indexentry"
 >choice</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Achoice"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Achoice"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -519,9 +523,9 @@
 ><TD CLASS="indexannot"
 >6 (Function)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Acontent"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Acontent"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/doc-index-D.html b/docs/HaXml/doc-index-D.html
--- a/docs/HaXml/doc-index-D.html
+++ b/docs/HaXml/doc-index-D.html
@@ -213,9 +213,9 @@
 ><TD CLASS="indexentry"
 >Default</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ADefault"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ADefault"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -249,9 +249,9 @@
 ><TD CLASS="indexannot"
 >2 (Type/Class)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -271,7 +271,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3ADefined"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -291,9 +291,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3ADocument"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADocument"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
@@ -301,9 +301,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3ADocument"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ADocument"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ADocument"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -349,33 +349,33 @@
 ><TD CLASS="indexentry"
 >defaultA</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefaultA"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AdefaultA"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >defaultToAttr</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefaultToAttr"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AdefaultToAttr"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >definite</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Adefinite"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Adefinite"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >definiteA</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefiniteA"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AdefiniteA"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/doc-index-E.html b/docs/HaXml/doc-index-E.html
--- a/docs/HaXml/doc-index-E.html
+++ b/docs/HaXml/doc-index-E.html
@@ -359,9 +359,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3AElem"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AElem"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AElem"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -373,9 +373,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElemTag"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElemTag"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
@@ -383,9 +383,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3AElemTag"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AElemTag"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AElemTag"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -397,9 +397,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3AElement"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
@@ -825,17 +825,17 @@
 ><TD CLASS="indexannot"
 >6 (Function)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aelement"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aelement"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >elementWith</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AelementWith"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AelementWith"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
diff --git a/docs/HaXml/doc-index-F.html b/docs/HaXml/doc-index-F.html
--- a/docs/HaXml/doc-index-F.html
+++ b/docs/HaXml/doc-index-F.html
@@ -550,22 +550,46 @@
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >fReadXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfReadXml"
 >Text.XML.HaXml.XmlContent</A
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfReadXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry" COLSPAN="2"
 >fWriteXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfWriteXml"
 >Text.XML.HaXml.XmlContent</A
 ></TD
 ></TR
 ><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfWriteXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+></TR
+><TR
 ><TD CLASS="indexentry"
 >find</TD
 ><TD CLASS="indexlinks"
@@ -598,59 +622,107 @@
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >fpsHPutXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsHPutXml"
 >Text.XML.HaXml.XmlContent</A
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfpsHPutXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry" COLSPAN="2"
 >fpsShowXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsShowXml"
 >Text.XML.HaXml.XmlContent</A
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfpsShowXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry" COLSPAN="2"
 >fpsWriteXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsWriteXml"
 >Text.XML.HaXml.XmlContent</A
 ></TD
 ></TR
 ><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfpsWriteXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+></TR
+><TR
 ><TD CLASS="indexentry"
 >fromAttrToStr</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrToStr"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AfromAttrToStr"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >fromAttrToTyp</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrToTyp"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AfromAttrToTyp"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >fromAttrs</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrs"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AfromAttrs"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >fromXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromXml"
 >Text.XML.HaXml.XmlContent</A
+></TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfromXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
 ></TD
 ></TR
 ><TR
diff --git a/docs/HaXml/doc-index-H.html b/docs/HaXml/doc-index-H.html
--- a/docs/HaXml/doc-index-H.html
+++ b/docs/HaXml/doc-index-H.html
@@ -167,7 +167,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -175,7 +175,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -210,14 +210,26 @@
 >, Text.XML.HaXml</TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >hGetXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AhGetXml"
 >Text.XML.HaXml.XmlContent</A
 ></TD
 ></TR
 ><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AhGetXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+></TR
+><TR
 ><TD CLASS="indexentry"
 >hName</TD
 ><TD CLASS="indexlinks"
@@ -226,11 +238,23 @@
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >hPutXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AhPutXml"
 >Text.XML.HaXml.XmlContent</A
+></TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AhPutXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
 ></TD
 ></TR
 ><TR
diff --git a/docs/HaXml/doc-index-I.html b/docs/HaXml/doc-index-I.html
--- a/docs/HaXml/doc-index-I.html
+++ b/docs/HaXml/doc-index-I.html
@@ -333,17 +333,17 @@
 ><TD CLASS="indexentry"
 >inElement</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AinElement"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AinElement"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >inElementWith</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AinElementWith"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AinElementWith"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -365,9 +365,9 @@
 ><TD CLASS="indexentry"
 >interior</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Ainterior"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Ainterior"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/doc-index-L.html b/docs/HaXml/doc-index-L.html
--- a/docs/HaXml/doc-index-L.html
+++ b/docs/HaXml/doc-index-L.html
@@ -187,7 +187,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AList"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -205,9 +205,9 @@
 ><TD CLASS="indexannot"
 >2 (Type/Class)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/doc-index-M.html b/docs/HaXml/doc-index-M.html
--- a/docs/HaXml/doc-index-M.html
+++ b/docs/HaXml/doc-index-M.html
@@ -195,7 +195,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AMaybe"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -269,17 +269,17 @@
 ><TD CLASS="indexentry"
 >maybeToAttr</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmaybeToAttr"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmaybeToAttr"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >mkAttr</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkAttr"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmkAttr"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -297,9 +297,9 @@
 ><TD CLASS="indexannot"
 >2 (Function)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkElem"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmkElem"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -313,9 +313,9 @@
 ><TD CLASS="indexentry"
 >mkElemC</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkElemC"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmkElemC"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/doc-index-N.html b/docs/HaXml/doc-index-N.html
--- a/docs/HaXml/doc-index-N.html
+++ b/docs/HaXml/doc-index-N.html
@@ -377,17 +377,17 @@
 ><TD CLASS="indexentry"
 >NonDefault</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ANonDefault"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ANonDefault"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >NonEmpty</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ANonEmpty"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ANonEmpty"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/doc-index-P.html b/docs/HaXml/doc-index-P.html
--- a/docs/HaXml/doc-index-P.html
+++ b/docs/HaXml/doc-index-P.html
@@ -303,7 +303,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3APrim"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -323,9 +323,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3AProlog"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexannot"
@@ -333,9 +333,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3AProlog"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AProlog"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AProlog"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -377,9 +377,9 @@
 ><TD CLASS="indexentry"
 >parseContents</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AparseContents"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AparseContents"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -433,17 +433,17 @@
 ><TD CLASS="indexentry"
 >posnElement</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AposnElement"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AposnElement"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >posnElementWith</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AposnElementWith"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AposnElementWith"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -465,9 +465,9 @@
 ><TD CLASS="indexentry"
 >possibleA</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ApossibleA"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ApossibleA"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/doc-index-R.html b/docs/HaXml/doc-index-R.html
--- a/docs/HaXml/doc-index-R.html
+++ b/docs/HaXml/doc-index-R.html
@@ -175,9 +175,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3ARefChar"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ARefChar"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ARefChar"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -185,9 +185,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#v%3ARefEntity"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ARefEntity"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ARefEntity"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -195,9 +195,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-Types.html#t%3AReference"
 >Text.XML.HaXml.Types</A
->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"
->Text.XML.HaXml.XmlContent</A
->, Text.XML.HaXml</TD
+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -208,11 +208,23 @@
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >readXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AreadXml"
 >Text.XML.HaXml.XmlContent</A
+></TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AreadXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
 ></TD
 ></TR
 ><TR
diff --git a/docs/HaXml/doc-index-S.html b/docs/HaXml/doc-index-S.html
--- a/docs/HaXml/doc-index-S.html
+++ b/docs/HaXml/doc-index-S.html
@@ -603,7 +603,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AString"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -671,7 +671,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AshowConstr"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -679,17 +679,29 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AshowHType"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >showXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AshowXml"
 >Text.XML.HaXml.XmlContent</A
 ></TD
 ></TR
 ><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AshowXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+></TR
+><TR
 ><TD CLASS="indexentry"
 >showXmlLazy</TD
 ><TD CLASS="indexlinks"
@@ -737,9 +749,9 @@
 ><TD CLASS="indexentry"
 >str2attr</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Astr2attr"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Astr2attr"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ></TABLE
 ></TD
diff --git a/docs/HaXml/doc-index-T.html b/docs/HaXml/doc-index-T.html
--- a/docs/HaXml/doc-index-T.html
+++ b/docs/HaXml/doc-index-T.html
@@ -843,7 +843,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3ATuple"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -1129,9 +1129,9 @@
 ><TD CLASS="indexentry"
 >text</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Atext"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Atext"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -1165,41 +1165,41 @@
 ><TD CLASS="indexentry"
 >toAttrFrStr</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrFrStr"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoAttrFrStr"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >toAttrFrTyp</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrFrTyp"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoAttrFrTyp"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >toAttrs</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrs"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoAttrs"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >toCData</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoCData"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoCData"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >toContents</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoContents"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoContents"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -1207,7 +1207,7 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoDTD"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -1215,22 +1215,34 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoHType"
 >Text.XML.HaXml.TypeMapping</A
->, Text.XML.HaXml.XmlContent</TD
+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >toText</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoText"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoText"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >toXml</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoXml"
 >Text.XML.HaXml.XmlContent</A
+></TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AtoXml"
+>Text.XML.HaXml.XmlContent.Haskell</A
 ></TD
 ></TR
 ><TR
diff --git a/docs/HaXml/doc-index-U.html b/docs/HaXml/doc-index-U.html
--- a/docs/HaXml/doc-index-U.html
+++ b/docs/HaXml/doc-index-U.html
@@ -165,9 +165,9 @@
 ><TD CLASS="indexentry"
 >UnConverted</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AUnConverted"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
diff --git a/docs/HaXml/doc-index-X.html b/docs/HaXml/doc-index-X.html
--- a/docs/HaXml/doc-index-X.html
+++ b/docs/HaXml/doc-index-X.html
@@ -185,9 +185,9 @@
 ><TD CLASS="indexentry"
 >XMLParser</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry" COLSPAN="2"
@@ -213,25 +213,25 @@
 ><TD CLASS="indexentry"
 >XmlAttrType</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttrType"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttrType"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >XmlAttributes</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttributes"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >XmlContent</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -253,9 +253,9 @@
 ><TD CLASS="indexentry"
 >xFromChar</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AxFromChar"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AxFromChar"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -269,9 +269,9 @@
 ><TD CLASS="indexentry"
 >xToChar</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AxToChar"
->Text.XML.HaXml.XmlContent</A
-></TD
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AxToChar"
+>Text.XML.HaXml.XmlContent.Parser</A
+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/docs/HaXml/index.html b/docs/HaXml/index.html
--- a/docs/HaXml/index.html
+++ b/docs/HaXml/index.html
@@ -348,7 +348,8 @@
 ></TD
 ></TR
 ><TR
-><TD STYLE="padding-left: 1.25em;width: 44em"
+><TD STYLE="width: 44em"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:5')" ALT="show/hide"
 ><A HREF="Text-XML-HaXml-XmlContent.html"
 >Text.XML.HaXml.XmlContent</A
 ></TD
@@ -358,8 +359,34 @@
 ></TD
 ></TR
 ><TR
+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;"
+><TR
+><TD STYLE="padding-left: 1.25em;width: 42em"
+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html"
+>Text.XML.HaXml.XmlContent.Haskell</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding-left: 1.25em;width: 42em"
+><A HREF="Text-XML-HaXml-XmlContent-Parser.html"
+>Text.XML.HaXml.XmlContent.Parser</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:5')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:6')" ALT="show/hide"
 >Xtract</TD
 ><TD
 ></TD
@@ -368,7 +395,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:6" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HaXml-Xtract-Combinators.html"
diff --git a/docs/HaXml/src/Text/XML/HaXml/XmlContent.html b/docs/HaXml/src/Text/XML/HaXml/XmlContent.html
--- a/docs/HaXml/src/Text/XML/HaXml/XmlContent.html
+++ b/docs/HaXml/src/Text/XML/HaXml/XmlContent.html
@@ -5,894 +5,182 @@
 <title>src/Text/XML/HaXml/XmlContent.hs</title>
 </head>
 <body>
-<pre><a name="line-1"></a><font color=Blue>{-# LANGUAGE ExistentialQuantification #-}</font>
-<a name="line-2"></a>
-<a name="line-3"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>
-<a name="line-4"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>
-<a name="line-5"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>
-<a name="line-6"></a><font color=Blue>--</font>
-<a name="line-7"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>
-<a name="line-8"></a><font color=Blue>--   derive instances of this class for you:</font>
-<a name="line-9"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>
-<a name="line-10"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>
-<a name="line-11"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances.</font>
-<a name="line-12"></a><font color=Blue>--</font>
-<a name="line-13"></a><font color=Blue>--   This unified class interface replaces two previous (somewhat similar)</font>
-<a name="line-14"></a><font color=Blue>--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have</font>
-<a name="line-15"></a><font color=Blue>--   separate classes depending on how you originally defined your datatypes.</font>
-<a name="line-16"></a>
-<a name="line-17"></a><font color=Blue>--   The methods 'toContents' and 'parseContents' convert a value to and from</font>
-<a name="line-18"></a><font color=Blue>--   a generic internal representation of an XML document /without/ a DTD.</font>
-<a name="line-19"></a><font color=Blue>--   The functions 'toXml' and 'fromXml' convert a value to and from a generic</font>
-<a name="line-20"></a><font color=Blue>--   internal representation of an XML document /including/ a DTD.</font>
-<a name="line-21"></a><font color=Blue>--   The functions 'readXml' and 'showXml' convert to and from Strings.</font>
-<a name="line-22"></a><font color=Blue>--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from</font>
-<a name="line-23"></a><font color=Blue>--   the given filenames.</font>
-<a name="line-24"></a><font color=Blue>--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from</font>
-<a name="line-25"></a><font color=Blue>--   the given file handles.</font>
-<a name="line-26"></a><font color=Blue>--   (See the type signatures.)</font>
-<a name="line-27"></a><font color=Blue>--</font>
-<a name="line-28"></a>
-<a name="line-29"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent
-<a name="line-30"></a>  <font color=Cyan>(</font> <font color=Blue>-- * Re-export the relevant set of generic XML document type definitions</font>
-<a name="line-31"></a>    Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-32"></a>  <font color=Cyan>,</font> Element<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-33"></a>  <font color=Cyan>,</font> ElemTag<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-34"></a>  <font color=Cyan>,</font> Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-35"></a>  <font color=Cyan>,</font> Attribute()
-<a name="line-36"></a>  <font color=Cyan>,</font> AttValue<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-37"></a>  <font color=Cyan>,</font> Prolog<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-38"></a>  <font color=Cyan>,</font> Reference<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-39"></a>  <font color=Blue>-- * The enabling classes, that define parsing\/unparsing between Haskell</font>
-<a name="line-40"></a>  <font color=Blue>--   datatypes and a generic XML representation.</font>
-<a name="line-41"></a>  <font color=Cyan>,</font> XmlContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-42"></a>  <font color=Cyan>,</font> XmlAttributes<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-43"></a>  <font color=Cyan>,</font> XmlAttrType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-44"></a>  <font color=Blue>-- ** Auxiliaries for writing parsers in the XmlContent class</font>
-<a name="line-45"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly
-<a name="line-46"></a>  <font color=Cyan>,</font> XMLParser
-<a name="line-47"></a>  <font color=Cyan>,</font> content<font color=Cyan>,</font> posnElement<font color=Cyan>,</font> element<font color=Cyan>,</font> interior<font color=Cyan>,</font> inElement<font color=Cyan>,</font> text<font color=Cyan>,</font> attributes
-<a name="line-48"></a>  <font color=Cyan>,</font> posnElementWith<font color=Cyan>,</font> elementWith<font color=Cyan>,</font> inElementWith
-<a name="line-49"></a>  <font color=Cyan>,</font> choice<font color=Cyan>,</font> definite <font color=Blue>-- ???</font>
-<a name="line-50"></a>  <font color=Blue>-- ** Auxiliaries for generating in the XmlContent class</font>
-<a name="line-51"></a>  <font color=Cyan>,</font> mkElem<font color=Cyan>,</font> mkElemC<font color=Cyan>,</font> mkAttr
-<a name="line-52"></a>  <font color=Cyan>,</font> toText<font color=Cyan>,</font> toCData
-<a name="line-53"></a>  <font color=Blue>-- ** Auxiliaries for the attribute-related classes</font>
-<a name="line-54"></a>  <font color=Cyan>,</font> maybeToAttr<font color=Cyan>,</font> defaultToAttr
-<a name="line-55"></a>  <font color=Cyan>,</font> definiteA<font color=Cyan>,</font> defaultA<font color=Cyan>,</font> possibleA<font color=Cyan>,</font> fromAttrToStr<font color=Cyan>,</font> toAttrFrStr
-<a name="line-56"></a>  <font color=Cyan>,</font> Defaultable<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-57"></a>  <font color=Cyan>,</font> str2attr<font color=Cyan>,</font> attr2str<font color=Cyan>,</font> attval
-<a name="line-58"></a>  <font color=Cyan>,</font> catMaybes   <font color=Blue>-- re-exported from Maybe</font>
-<a name="line-59"></a>  <font color=Blue>-- * Whole-document conversion functions</font>
-<a name="line-60"></a>  <font color=Cyan>,</font> toXml<font color=Cyan>,</font> fromXml
-<a name="line-61"></a>  <font color=Cyan>,</font> readXml<font color=Cyan>,</font> showXml<font color=Cyan>,</font> fpsShowXml
-<a name="line-62"></a>  <font color=Cyan>,</font> fReadXml<font color=Cyan>,</font> fWriteXml<font color=Cyan>,</font> fpsWriteXml
-<a name="line-63"></a>  <font color=Cyan>,</font> hGetXml<font color=Cyan>,</font>  hPutXml<font color=Cyan>,</font> fpsHPutXml
-<a name="line-64"></a>  <font color=Blue>-- * Explicit representation of Haskell datatype information</font>
-<a name="line-65"></a>  <font color=Blue>--   (for conversion to a DTD)</font>
-<a name="line-66"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping
-<a name="line-67"></a>  <font color=Blue>-- * Types useful for some content models</font>
-<a name="line-68"></a>  <font color=Cyan>,</font> List1<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-69"></a>  <font color=Cyan>,</font> ANYContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
-<a name="line-70"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-71"></a>
-<a name="line-72"></a><font color=Green><u>import</u></font> IO
-<a name="line-73"></a><font color=Green><u>import</u></font> Maybe <font color=Cyan>(</font>catMaybes<font color=Cyan>)</font>
-<a name="line-74"></a><font color=Green><u>import</u></font> Char  <font color=Cyan>(</font>chr<font color=Cyan>,</font> isSpace<font color=Cyan>)</font>
-<a name="line-75"></a><font color=Green><u>import</u></font> List  <font color=Cyan>(</font>isPrefixOf<font color=Cyan>,</font> isSuffixOf<font color=Cyan>)</font>
-<a name="line-76"></a>
-<a name="line-77"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>
-<a name="line-78"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP
-<a name="line-79"></a>
-<a name="line-80"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types
-<a name="line-81"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping
-<a name="line-82"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>
-<a name="line-83"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>
-<a name="line-84"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>
-<a name="line-85"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Cyan>(</font>Verbatim<font color=Cyan>(</font>verbatim<font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-86"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>
-<a name="line-87"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS
-<a name="line-88"></a>
-<a name="line-89"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly
-<a name="line-90"></a>
-<a name="line-91"></a><font color=Blue>--  #define DEBUG</font>
-<a name="line-92"></a>
-<a name="line-93"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>
-<a name="line-94"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>
-<a name="line-95"></a><a name="debug"></a><font color=Blue>debug</font> <font color=Red>::</font> a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> a
-<a name="line-96"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> s <font color=Red>=</font> trace s v
-<a name="line-97"></a><font color=Magenta><em>#else</em></font>
-<a name="line-98"></a><font color=Blue>debug</font> <font color=Red>::</font> t <font color=Red>-&gt;</font> t1 <font color=Red>-&gt;</font> t
-<a name="line-99"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> <font color=Green><u>_</u></font> <font color=Red>=</font> v
-<a name="line-100"></a><font color=Magenta><em>#endif</em></font>
-<a name="line-101"></a>
-<a name="line-102"></a>
-<a name="line-103"></a><a name="attval"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-104"></a><font color=Blue>-- | Read a single attribute called "value".</font>
-<a name="line-105"></a><font color=Blue>attval</font> <font color=Red>::</font> <font color=Cyan>(</font>Read a<font color=Cyan>)</font> <font color=Red>=&gt;</font> Element i <font color=Red>-&gt;</font> a
-<a name="line-106"></a><font color=Blue>attval</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font>v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> <font color=Red>=</font> read <font color=Cyan>(</font>show v<font color=Cyan>)</font>
-<a name="line-107"></a>
-<a name="line-108"></a><a name="mkAttr"></a><font color=Blue>-- | Generate a single attribute.</font>
-<a name="line-109"></a><font color=Blue>mkAttr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Attribute
-<a name="line-110"></a><font color=Blue>mkAttr</font> n v <font color=Red>=</font> <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue <font color=Red>[</font>Left v<font color=Red>]</font><font color=Cyan>)</font>
-<a name="line-111"></a>
-<a name="line-112"></a><a name="mkElem"></a><font color=Blue>-- | Generate an element with no attributes, named for its HType.</font>
-<a name="line-113"></a><font color=Blue>mkElem</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()
-<a name="line-114"></a><font color=Blue>mkElem</font> x cs  <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem <font color=Cyan>(</font>showHType <font color=Cyan>(</font>toHType x<font color=Cyan>)</font> <font color=Magenta>""</font><font color=Cyan>)</font> [] cs<font color=Cyan>)</font> ()
-<a name="line-115"></a>
-<a name="line-116"></a><a name="mkElemC"></a><font color=Blue>-- | Generate an element with no attributes, named directly.</font>
-<a name="line-117"></a><font color=Blue>mkElemC</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()
-<a name="line-118"></a><font color=Blue>mkElemC</font> x cs <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem x [] cs<font color=Cyan>)</font> ()
-<a name="line-119"></a>
-<a name="line-120"></a><a name="toText"></a><font color=Blue>-- | Turn a simple string into XML text.</font>
-<a name="line-121"></a><font color=Blue>toText</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>
-<a name="line-122"></a><font color=Blue>toText</font> s <font color=Red>=</font> <font color=Red>[</font>CString False s ()<font color=Red>]</font>
-<a name="line-123"></a>
-<a name="line-124"></a><a name="toCData"></a><font color=Blue>-- | Turn a string into an XML CDATA section.</font>
-<a name="line-125"></a><font color=Blue>--   (i.e. special characters like '&amp;' are preserved without interpretation.)</font>
-<a name="line-126"></a><font color=Blue>toCData</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>
-<a name="line-127"></a><font color=Blue>toCData</font> s <font color=Red>=</font> <font color=Red>[</font>CString True s ()<font color=Red>]</font>
-<a name="line-128"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-129"></a>
-<a name="line-130"></a>        <font color=Blue>-- probably want to write DTD separately from value, and have</font>
-<a name="line-131"></a>        <font color=Blue>-- easy ways to combine DTD + value into a document, or write</font>
-<a name="line-132"></a>        <font color=Blue>-- them to separate files.</font>
-<a name="line-133"></a>
-<a name="line-134"></a><a name="fReadXml"></a><font color=Blue>-- | Read an XML document from a file and convert it to a fully-typed</font>
-<a name="line-135"></a><font color=Blue>--   Haskell value.</font>
-<a name="line-136"></a><font color=Blue>fReadXml</font>  <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> IO a
-<a name="line-137"></a><font color=Blue>fReadXml</font> fp <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-138"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdin
-<a name="line-139"></a>           <font color=Green><u>else</u></font> openFile fp ReadMode <font color=Cyan>)</font>
-<a name="line-140"></a>    x <font color=Red>&lt;-</font> hGetContents f
-<a name="line-141"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse fp x
-<a name="line-142"></a>        y' <font color=Red>=</font> CElem y <font color=Cyan>(</font>posInNewCxt fp Nothing<font color=Cyan>)</font>
-<a name="line-143"></a>    either fail return <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>y'<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-144"></a>
-<a name="line-145"></a><a name="fWriteXml"></a><font color=Blue>-- | Write a fully-typed Haskell value to the given file as an XML</font>
-<a name="line-146"></a><font color=Blue>--   document.</font>
-<a name="line-147"></a><font color=Blue>fWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
-<a name="line-148"></a><font color=Blue>fWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-149"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout
-<a name="line-150"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>
-<a name="line-151"></a>    hPutXml f False x
-<a name="line-152"></a>    hClose f
-<a name="line-153"></a>
-<a name="line-154"></a><a name="fpsWriteXml"></a><font color=Blue>-- | Write any Haskell value to the given file as an XML document,</font>
-<a name="line-155"></a><font color=Blue>--   using the FastPackedString interface (output will not be prettified).</font>
-<a name="line-156"></a><font color=Blue>fpsWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
-<a name="line-157"></a><font color=Blue>fpsWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-158"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout
-<a name="line-159"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>
-<a name="line-160"></a>    fpsHPutXml f False x
-<a name="line-161"></a>    hClose f
-<a name="line-162"></a>
-<a name="line-163"></a><a name="readXml"></a><font color=Blue>-- | Read a fully-typed XML document from a string.</font>
-<a name="line-164"></a><font color=Blue>readXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Either String a
-<a name="line-165"></a><font color=Blue>readXml</font> s <font color=Red>=</font>
-<a name="line-166"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"string input"</font> s <font color=Green><u>in</u></font>
-<a name="line-167"></a>    fst <font color=Cyan>(</font>runParser parseContents
-<a name="line-168"></a>                   <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"string input"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>
-<a name="line-169"></a>
-<a name="line-170"></a><a name="showXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).</font>
-<a name="line-171"></a><font color=Blue>showXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String
-<a name="line-172"></a><font color=Blue>showXml</font> dtd x <font color=Red>=</font>
-<a name="line-173"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>
-<a name="line-174"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
-<a name="line-175"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>
-<a name="line-176"></a>
-<a name="line-177"></a><a name="fpsShowXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a ByteString (without DTD).</font>
-<a name="line-178"></a><font color=Blue>fpsShowXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>ByteString
-<a name="line-179"></a><font color=Blue>fpsShowXml</font> dtd x <font color=Red>=</font>
-<a name="line-180"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>
-<a name="line-181"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
-<a name="line-182"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>empty
-<a name="line-183"></a>
-<a name="line-184"></a>
-<a name="line-185"></a><a name="toXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).</font>
-<a name="line-186"></a><font color=Blue>toXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()
-<a name="line-187"></a><font color=Blue>toXml</font> dtd value <font color=Red>=</font>
-<a name="line-188"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>
-<a name="line-189"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-190"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>
-<a name="line-191"></a>             emptyST
-<a name="line-192"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> <font color=Cyan>(</font>ht<font color=Cyan>,</font> toContents value<font color=Cyan>)</font> <font color=Green><u>of</u></font>
-<a name="line-193"></a>                 <font color=Cyan>(</font>Tuple <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font>       <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> [] cs
-<a name="line-194"></a>                 <font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>"-XML"</font><font color=Cyan>)</font> [] cs
-<a name="line-195"></a>                 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Red>[</font>CElem e ()<font color=Red>]</font><font color=Cyan>)</font>   <font color=Red>-&gt;</font> e <font color=Cyan>)</font>
-<a name="line-196"></a>             []
-<a name="line-197"></a>
-<a name="line-198"></a><a name="fromXml"></a><font color=Blue>-- | Read a Haskell value from an XML document, ignoring the DTD and</font>
-<a name="line-199"></a><font color=Blue>--   using the Haskell result type to determine how to parse it.</font>
-<a name="line-200"></a><font color=Blue>fromXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Document Posn <font color=Red>-&gt;</font> Either String a
-<a name="line-201"></a><font color=Blue>fromXml</font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>
-<a name="line-202"></a>  <font color=Red>|</font> <font color=Magenta>"tuple"</font> <font color=Cyan>`isPrefixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>
-<a name="line-203"></a>  <font color=Red>|</font> <font color=Magenta>"-XML"</font>  <font color=Cyan>`isSuffixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>
-<a name="line-204"></a>  <font color=Red>|</font> otherwise <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents
-<a name="line-205"></a>                               <font color=Red>[</font>CElem e <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"document"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>
-<a name="line-206"></a>
-<a name="line-207"></a>
-<a name="line-208"></a><a name="hGetXml"></a><font color=Blue>-- | Read a fully-typed XML document from a file handle.</font>
-<a name="line-209"></a><font color=Blue>hGetXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> IO a
-<a name="line-210"></a><font color=Blue>hGetXml</font> h <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-211"></a>    x <font color=Red>&lt;-</font> hGetContents h
-<a name="line-212"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"file handle"</font> x
-<a name="line-213"></a>    either fail return
-<a name="line-214"></a>           <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents
-<a name="line-215"></a>                           <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"file handle"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-216"></a>
-<a name="line-217"></a><a name="hPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle.</font>
-<a name="line-218"></a><font color=Blue>hPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
-<a name="line-219"></a><font color=Blue>hPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-220"></a>    <font color=Cyan>(</font>hPutStrLn h <font color=Cyan>.</font> render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
-<a name="line-221"></a>
-<a name="line-222"></a><a name="fpsHPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle, using the</font>
-<a name="line-223"></a><font color=Blue>--   FastPackedString interface (output will not be prettified).</font>
-<a name="line-224"></a><font color=Blue>fpsHPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
-<a name="line-225"></a><font color=Blue>fpsHPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-226"></a>    <font color=Cyan>(</font>FPS<font color=Cyan>.</font>hPut h <font color=Cyan>.</font> FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
-<a name="line-227"></a>
-<a name="line-228"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-229"></a>
-<a name="line-230"></a><a name="XMLParser"></a><font color=Blue>-- | We need a parsing monad for reading generic XML Content into specific</font>
-<a name="line-231"></a><a name="XMLParser"></a><font color=Blue>--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly</font>
-<a name="line-232"></a><a name="XMLParser"></a><font color=Blue>--   ones, where the input token type is fixed as XML Content.</font>
-<a name="line-233"></a><a name="XMLParser"></a><font color=Green><u>type</u></font> XMLParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font> a
-<a name="line-234"></a>
-<a name="line-235"></a>
-<a name="line-236"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-237"></a><font color=Blue>-- Some useful parsing combinators</font>
-<a name="line-238"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-239"></a>
-<a name="line-240"></a><a name="content"></a><font color=Blue>-- | The most primitive combinator for XMLParser - get one content item.</font>
-<a name="line-241"></a><font color=Blue>content</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font>
-<a name="line-242"></a><font color=Blue>content</font> word <font color=Red>=</font> next <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>" when expecting "</font><font color=Cyan>++</font>word<font color=Cyan>)</font>
-<a name="line-243"></a>
-<a name="line-244"></a><a name="posnElementWith"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>
-<a name="line-245"></a><font color=Blue>--   tags, using the given matching function.</font>
-<a name="line-246"></a><font color=Blue>--   (Skips over comments and whitespace, rejects text and refs.</font>
-<a name="line-247"></a><font color=Blue>--    Also returns position of element.)</font>
-<a name="line-248"></a><font color=Blue>posnElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>
-<a name="line-249"></a>                   <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>
-<a name="line-250"></a><font color=Blue>posnElementWith</font> match tags <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-251"></a>    <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Cyan>(</font>formatted tags<font color=Cyan>)</font>
-<a name="line-252"></a>    <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>
-<a name="line-253"></a>          CElem e<font color=Red>@</font><font color=Cyan>(</font>Elem t <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos
-<a name="line-254"></a>              <font color=Red>|</font> any <font color=Cyan>(</font>match t<font color=Cyan>)</font> tags <font color=Red>-&gt;</font> return <font color=Cyan>(</font>pos<font color=Cyan>,</font> e<font color=Cyan>)</font>
-<a name="line-255"></a>              <font color=Red>|</font> otherwise          <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;, but expected "</font>
-<a name="line-256"></a>                                           <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>
-<a name="line-257"></a>          CString b s pos
-<a name="line-258"></a>              <font color=Red>|</font> not b <font color=Cyan>&amp;&amp;</font> all isSpace s <font color=Red>-&gt;</font> posnElementWith match tags
-<a name="line-259"></a>                                                        <font color=Blue>-- ignore blank space</font>
-<a name="line-260"></a>              <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found text content, but expected "</font>
-<a name="line-261"></a>                                  <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\ntext is: "</font><font color=Cyan>++</font>s
-<a name="line-262"></a>                                  <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>
-<a name="line-263"></a>          CRef r pos <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found reference, but expected "</font>
-<a name="line-264"></a>                             <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nreference is: "</font><font color=Cyan>++</font>verbatim r
-<a name="line-265"></a>                             <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>
-<a name="line-266"></a>          CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> posnElementWith match tags  <font color=Blue>-- skip comments, PIs, etc.</font>
-<a name="line-267"></a>    <font color=Cyan>}</font>
-<a name="line-268"></a>  <font color=Green><u>where</u></font>
-<a name="line-269"></a>    formatted <font color=Red>[</font>t<font color=Red>]</font>  <font color=Red>=</font> <font color=Magenta>"a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font>
-<a name="line-270"></a>    formatted tgs <font color=Red>=</font> <font color=Magenta>"one of"</font><font color=Cyan>++</font> concatMap <font color=Cyan>(</font><font color=Red>\</font>t<font color=Red>-&gt;</font><font color=Magenta>" &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font> tgs
-<a name="line-271"></a>
-<a name="line-272"></a><a name="posnElement"></a><font color=Blue>-- | A specialisation of @posnElementWith (==)@.</font>
-<a name="line-273"></a><font color=Blue>posnElement</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>
-<a name="line-274"></a><font color=Blue>posnElement</font> <font color=Red>=</font> posnElementWith <font color=Cyan>(</font><font color=Cyan>==</font><font color=Cyan>)</font>
-<a name="line-275"></a>
-<a name="line-276"></a><a name="element"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>
-<a name="line-277"></a><font color=Blue>--   tags.  (Skips over comments and whitespace, rejects text and refs.)</font>
-<a name="line-278"></a><font color=Blue>element</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>
-<a name="line-279"></a><font color=Blue>element</font> tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElement tags<font color=Cyan>)</font>
-<a name="line-280"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>
-<a name="line-281"></a>
-<a name="line-282"></a><a name="elementWith"></a><font color=Blue>-- | Like element, only permits a more flexible match against the tagname.</font>
-<a name="line-283"></a><font color=Blue>elementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>
-<a name="line-284"></a><font color=Blue>elementWith</font> match tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElementWith match tags<font color=Cyan>)</font>
-<a name="line-285"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>
-<a name="line-286"></a>
-<a name="line-287"></a><a name="interior"></a><font color=Blue>-- | Run an XMLParser on the contents of the given element (i.e. not on the</font>
-<a name="line-288"></a><font color=Blue>--   current monadic content sequence), checking that the contents are</font>
-<a name="line-289"></a><font color=Blue>--   exhausted, before returning the calculated value within the current</font>
-<a name="line-290"></a><font color=Blue>--   parser context.</font>
-<a name="line-291"></a><font color=Blue>interior</font> <font color=Red>::</font> Element Posn <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a
-<a name="line-292"></a><font color=Blue>interior</font> <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> p <font color=Red>=</font>
-<a name="line-293"></a>    <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>
-<a name="line-294"></a>        <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fail msg
-<a name="line-295"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return x
-<a name="line-296"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> ds<font color=Red>@</font><font color=Cyan>(</font>d<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-297"></a>            <font color=Red>|</font> all onlyMisc ds <font color=Red>-&gt;</font> return x
-<a name="line-298"></a>            <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Too many elements inside &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>
-<a name="line-299"></a>                                      <font color=Cyan>++</font>show <font color=Cyan>(</font>info d<font color=Cyan>)</font><font color=Cyan>++</font><font color=Magenta>"\n"</font>
-<a name="line-300"></a>                                      <font color=Cyan>++</font><font color=Magenta>"Found excess: "</font><font color=Cyan>++</font>verbatim d<font color=Cyan>)</font>
-<a name="line-301"></a>  <font color=Green><u>where</u></font> onlyMisc <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True
-<a name="line-302"></a>        onlyMisc <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> all isSpace s <font color=Red>=</font> True
-<a name="line-303"></a>        onlyMisc <font color=Green><u>_</u></font> <font color=Red>=</font> False
-<a name="line-304"></a>
-<a name="line-305"></a><a name="inElement"></a><font color=Blue>-- | A combination of element + interior.</font>
-<a name="line-306"></a><font color=Blue>inElement</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a
-<a name="line-307"></a><font color=Blue>inElement</font> tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font>tag<font color=Red>]</font><font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>
-<a name="line-308"></a>
-<a name="line-309"></a><a name="inElementWith"></a><font color=Blue>-- | A combination of elementWith + interior.</font>
-<a name="line-310"></a><font color=Blue>inElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a
-<a name="line-311"></a><font color=Blue>inElementWith</font> match tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith match <font color=Red>[</font>tag<font color=Red>]</font>
-<a name="line-312"></a>                               <font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>
-<a name="line-313"></a>
-<a name="line-314"></a><a name="attributes"></a><font color=Blue>-- | Do some parsing of the attributes of the given element</font>
-<a name="line-315"></a><font color=Blue>attributes</font> <font color=Red>::</font> XmlAttributes a <font color=Red>=&gt;</font> Element Posn <font color=Red>-&gt;</font> XMLParser a
-<a name="line-316"></a><font color=Blue>attributes</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> return <font color=Cyan>(</font>fromAttrs <font color=Green><u>as</u></font><font color=Cyan>)</font>
-<a name="line-317"></a>
-<a name="line-318"></a><a name="text"></a><font color=Blue>-- | 'text' is a counterpart to 'element', parsing text content if it</font>
-<a name="line-319"></a><font color=Blue>--   exists.  Adjacent text and references are coalesced.</font>
-<a name="line-320"></a><font color=Blue>text</font> <font color=Red>::</font> XMLParser String
-<a name="line-321"></a><font color=Blue>text</font> <font color=Red>=</font> text' []
-<a name="line-322"></a>  <font color=Green><u>where</u></font> text' acc <font color=Red>=</font>
-<a name="line-323"></a>          <font color=Green><u>do</u></font> <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Magenta>"plain text"</font>
-<a name="line-324"></a>             <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>
-<a name="line-325"></a>                 CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font>        <font color=Red>-&gt;</font> text' <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font>
-<a name="line-326"></a>                 CRef <font color=Cyan>(</font>RefChar s<font color=Cyan>)</font> <font color=Green><u>_</u></font>   <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"&amp;#"</font><font color=Cyan>++</font>show s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font> <font color=Red><b>:</b></font>acc<font color=Cyan>)</font>
-<a name="line-327"></a>                 CRef <font color=Cyan>(</font>RefEntity s<font color=Cyan>)</font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'&amp;'</font><font color=Red><b>:</b></font>s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font><font color=Red><b>:</b></font>acc<font color=Cyan>)</font>
-<a name="line-328"></a>                 CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>            <font color=Red>-&gt;</font> text' acc
-<a name="line-329"></a>                 CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> reparse <font color=Red>[</font>c<font color=Red>]</font> <font color=Blue>-- put it back!</font>
-<a name="line-330"></a>                                         <font color=Cyan>;</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>
-<a name="line-331"></a>                                           <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-332"></a>                                         <font color=Cyan>}</font>
-<a name="line-333"></a>             <font color=Cyan>}</font>
-<a name="line-334"></a>          <font color=Cyan>`onFail`</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>
-<a name="line-335"></a>                     <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>)</font>
-<a name="line-336"></a>
-<a name="line-337"></a>
-<a name="line-338"></a><a name="choice"></a><font color=Blue>-- | 'choice f p' means if parseContents succeeds, apply f to the result,</font>
-<a name="line-339"></a><font color=Blue>--   otherwise use the continuation parser.</font>
-<a name="line-340"></a><font color=Blue>choice</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> b<font color=Cyan>)</font> <font color=Red>-&gt;</font> XMLParser b <font color=Red>-&gt;</font> XMLParser b
-<a name="line-341"></a><font color=Blue>choice</font> cons <font color=Cyan>(</font>P other<font color=Cyan>)</font> <font color=Red>=</font>
-<a name="line-342"></a>    P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser parseContents cs <font color=Green><u>of</u></font>
-<a name="line-343"></a>                 <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> other cs
-<a name="line-344"></a>                 <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>cons x<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-345"></a>
-<a name="line-346"></a><font color=Blue>--choice cons other = fmap cons parseContents `onFail` other</font>
-<a name="line-347"></a>
-<a name="line-348"></a><a name="definite"></a><font color=Blue>-- | not sure this is needed now.   'definite p' previously ensured that</font>
-<a name="line-349"></a><font color=Blue>--   an element was definitely present.  Now I think the monad might take</font>
-<a name="line-350"></a><font color=Blue>--   care of that for us.</font>
-<a name="line-351"></a><font color=Blue>definite</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> XMLParser a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a
-<a name="line-352"></a><font color=Blue>definite</font> p inner tag <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>
-<a name="line-353"></a>                                   <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg'<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font>
-<a name="line-354"></a>                                   <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font>   cs'<font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-355"></a>  <font color=Green><u>where</u></font> msg' <font color=Red>=</font> <font color=Magenta>"content error: expected "</font><font color=Cyan>++</font>inner<font color=Cyan>++</font><font color=Magenta>" inside &lt;"</font><font color=Cyan>++</font>tag
-<a name="line-356"></a>               <font color=Cyan>++</font><font color=Magenta>"&gt; element\n"</font>
-<a name="line-357"></a>
-<a name="line-358"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-359"></a>
-<a name="line-360"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlContent@ class promises that an XML Content element can be</font>
-<a name="line-361"></a><a name="XmlContent"></a><font color=Blue>--   converted to and from a Haskell value.</font>
-<a name="line-362"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> HTypeable a <font color=Red>=&gt;</font> XmlContent a <font color=Green><u>where</u></font>
-<a name="line-363"></a>    <font color=Blue>-- | Convert from XML to Haskell</font>
-<a name="line-364"></a>    parseContents <font color=Red>::</font> XMLParser a
-<a name="line-365"></a>    <font color=Blue>-- | Convert from Haskell to XML</font>
-<a name="line-366"></a>    toContents    <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>
-<a name="line-367"></a>
-<a name="line-368"></a>    <font color=Blue>-- | Dummy functions (for most types): used /only/ in the Char instance</font>
-<a name="line-369"></a>    <font color=Blue>--   for coercing lists of Char into String.</font>
-<a name="line-370"></a>    xToChar       <font color=Red>::</font> a <font color=Red>-&gt;</font> Char
-<a name="line-371"></a>    xFromChar     <font color=Red>::</font> Char <font color=Red>-&gt;</font> a
-<a name="line-372"></a>    xToChar        <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xToChar used in error"</font>
-<a name="line-373"></a>    xFromChar      <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xFromChar used in error"</font>
-<a name="line-374"></a>
-<a name="line-375"></a><a name="XmlAttributes"></a><font color=Blue>-- | The @XmlAttributes@ class promises that a list of XML tag attributes</font>
-<a name="line-376"></a><a name="XmlAttributes"></a><font color=Blue>--   can be converted to and from a Haskell value.</font>
-<a name="line-377"></a><a name="XmlAttributes"></a><font color=Green><u>class</u></font> XmlAttributes a <font color=Green><u>where</u></font>
-<a name="line-378"></a>    fromAttrs <font color=Red>::</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a
-<a name="line-379"></a>    toAttrs   <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font>
-<a name="line-380"></a><a name="XmlAttrType"></a><font color=Blue>-- | The @XmlAttrType@ class promises that an attribute taking an XML</font>
-<a name="line-381"></a><a name="XmlAttrType"></a><font color=Blue>--   enumerated type can be converted to and from a Haskell value.</font>
-<a name="line-382"></a><a name="XmlAttrType"></a><font color=Green><u>class</u></font> XmlAttrType a <font color=Green><u>where</u></font>
-<a name="line-383"></a>    fromAttrToTyp <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe a
-<a name="line-384"></a>    toAttrFrTyp   <font color=Red>::</font> String <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe Attribute
-<a name="line-385"></a>
-<a name="line-386"></a>
-<a name="line-387"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-388"></a><font color=Blue>-- Instances for all the standard basic datatypes.</font>
-<a name="line-389"></a><font color=Blue>-- These are for Haskell datatypes being derived to go to XML.</font>
-<a name="line-390"></a><font color=Blue>-- DtdToHaskell does not use these instances.</font>
-<a name="line-391"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-392"></a>
-<a name="line-393"></a><font color=Green><u>instance</u></font> XmlContent Bool <font color=Green><u>where</u></font>
-<a name="line-394"></a>    toContents b   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"bool"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show b<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
-<a name="line-395"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"bool"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
-<a name="line-396"></a>
-<a name="line-397"></a><font color=Green><u>instance</u></font> XmlContent Int <font color=Green><u>where</u></font>
-<a name="line-398"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"int"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
-<a name="line-399"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"int"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
-<a name="line-400"></a>
-<a name="line-401"></a><font color=Green><u>instance</u></font> XmlContent Integer <font color=Green><u>where</u></font>
-<a name="line-402"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"integer"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
-<a name="line-403"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"integer"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
-<a name="line-404"></a>
-<a name="line-405"></a><font color=Green><u>instance</u></font> XmlContent Float <font color=Green><u>where</u></font>
-<a name="line-406"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"float"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
-<a name="line-407"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"float"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
-<a name="line-408"></a>
-<a name="line-409"></a><font color=Green><u>instance</u></font> XmlContent Double <font color=Green><u>where</u></font>
-<a name="line-410"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"double"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
-<a name="line-411"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"double"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
-<a name="line-412"></a>
-<a name="line-413"></a><font color=Green><u>instance</u></font> XmlContent Char <font color=Green><u>where</u></font>
-<a name="line-414"></a>    <font color=Blue>-- NOT in a string</font>
-<a name="line-415"></a>    toContents c   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"char"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
-<a name="line-416"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font><font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font>
-<a name="line-417"></a>                             <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"char"</font><font color=Red>]</font>
-<a name="line-418"></a>                       <font color=Cyan>;</font> return c
-<a name="line-419"></a>                       <font color=Cyan>}</font>
-<a name="line-420"></a>    <font color=Blue>-- Only defined for Char and no other types:</font>
-<a name="line-421"></a>    xToChar   <font color=Red>=</font> id
-<a name="line-422"></a>    xFromChar <font color=Red>=</font> id
-<a name="line-423"></a>
-<a name="line-424"></a><font color=Green><u>instance</u></font> XmlContent a <font color=Red>=&gt;</font> XmlContent <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>
-<a name="line-425"></a>    toContents xs  <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>
-<a name="line-426"></a>                       <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>
-<a name="line-427"></a>                            <font color=Red>[</font>mkElem <font color=Magenta>"string"</font> <font color=Red>[</font>CString True <font color=Cyan>(</font>map xToChar xs<font color=Cyan>)</font> ()<font color=Red>]</font><font color=Red>]</font>
-<a name="line-428"></a>                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font>mkElem xs <font color=Cyan>(</font>concatMap toContents xs<font color=Cyan>)</font><font color=Red>]</font>
-<a name="line-429"></a>                   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs
-<a name="line-430"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>x <font color=Red>-&gt;</font>
-<a name="line-431"></a>        <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>
-<a name="line-432"></a>            <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>
-<a name="line-433"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
-<a name="line-434"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"string"</font> [] <font color=Red>[</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red>]</font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>
-<a name="line-435"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
-<a name="line-436"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e [] xs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"list"</font> <font color=Cyan>`isPrefixOf`</font> e
-<a name="line-437"></a>                   <font color=Red>-&gt;</font> scanElements xs
-<a name="line-438"></a>                   <font color=Green><u>where</u></font>
-<a name="line-439"></a>                  <font color=Blue>-- scanElements :: [Content] -&gt; (Either String [a],[Content])</font>
-<a name="line-440"></a>                     scanElements [] <font color=Red>=</font> <font color=Cyan>(</font>Right []<font color=Cyan>,</font> cs<font color=Cyan>)</font>
-<a name="line-441"></a>                     scanElements es <font color=Red>=</font>
-<a name="line-442"></a>                        <font color=Green><u>case</u></font> runParser parseContents es <font color=Green><u>of</u></font>
-<a name="line-443"></a>                            <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> es'<font color=Cyan>)</font>
-<a name="line-444"></a>                            <font color=Cyan>(</font>Right y<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font>
-<a name="line-445"></a>                                <font color=Green><u>case</u></font> scanElements es' <font color=Green><u>of</u></font>
-<a name="line-446"></a>                                    <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font>
-<a name="line-447"></a>                                    <font color=Cyan>(</font>Right ys<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>y<font color=Red><b>:</b></font>ys<font color=Cyan>)</font><font color=Cyan>,</font> ds<font color=Cyan>)</font>
-<a name="line-448"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>
-<a name="line-449"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False
-<a name="line-450"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>
-<a name="line-451"></a>                            <font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
-<a name="line-452"></a>            <font color=Cyan>(</font>CRef r pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>
-<a name="line-453"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False
-<a name="line-454"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a ref "</font>
-<a name="line-455"></a>                            <font color=Cyan>++</font>verbatim r<font color=Cyan>++</font><font color=Magenta>" at\n"</font><font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
-<a name="line-456"></a>            <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>P p<font color=Cyan>)</font><font color=Red>-&gt;</font> p<font color=Cyan>)</font> parseContents<font color=Cyan>)</font> cs  <font color=Blue>-- skip comments etc.</font>
-<a name="line-457"></a>            []     <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False
-<a name="line-458"></a>                            <font color=Cyan>,</font><font color=Magenta>"Ran out of input XML whilst secondary parsing"</font><font color=Cyan>)</font>
-<a name="line-459"></a>                      <font color=Cyan>,</font> []<font color=Cyan>)</font>
-<a name="line-460"></a>        <font color=Cyan>)</font>
-<a name="line-461"></a>
-<a name="line-462"></a><font color=Green><u>instance</u></font> XmlContent () <font color=Green><u>where</u></font>
-<a name="line-463"></a>    toContents ()  <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"unit"</font> [] []<font color=Cyan>)</font> ()<font color=Red>]</font>
-<a name="line-464"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> element <font color=Red>[</font><font color=Magenta>"unit"</font><font color=Red>]</font><font color=Cyan>;</font> return () <font color=Cyan>}</font>
-<a name="line-465"></a>
-<a name="line-466"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-467"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b
-<a name="line-468"></a>    parseContents    <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-469"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-470"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-471"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font>
-<a name="line-472"></a>        <font color=Cyan>}</font>
-<a name="line-473"></a>
-<a name="line-474"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-475"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
-<a name="line-476"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-477"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-478"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-479"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-480"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font>
-<a name="line-481"></a>        <font color=Cyan>}</font>
-<a name="line-482"></a>
-<a name="line-483"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d<font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-484"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-485"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
-<a name="line-486"></a>                           <font color=Cyan>++</font> toContents d
-<a name="line-487"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-488"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-489"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-490"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-491"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-492"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font>
-<a name="line-493"></a>        <font color=Cyan>}</font>
-<a name="line-494"></a>
-<a name="line-495"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-496"></a>         <font color=Cyan>,</font> XmlContent e <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-497"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-498"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
-<a name="line-499"></a>                             <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e
-<a name="line-500"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-501"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-502"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-503"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-504"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-505"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-506"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font>
-<a name="line-507"></a>        <font color=Cyan>}</font>
-<a name="line-508"></a>
-<a name="line-509"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-510"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-511"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-512"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
-<a name="line-513"></a>                               <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f
-<a name="line-514"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-515"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-516"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-517"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-518"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-519"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-520"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-521"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font>
-<a name="line-522"></a>        <font color=Cyan>}</font>
-<a name="line-523"></a>
-<a name="line-524"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-525"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-526"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-527"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>
-<a name="line-528"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-529"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g
-<a name="line-530"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-531"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-532"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-533"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-534"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-535"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-536"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-537"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-538"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>
-<a name="line-539"></a>        <font color=Cyan>}</font>
-<a name="line-540"></a>
-<a name="line-541"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-542"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-543"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-544"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>
-<a name="line-545"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-546"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-547"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-548"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-549"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-550"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-551"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-552"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-553"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-554"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-555"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-556"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>
-<a name="line-557"></a>        <font color=Cyan>}</font>
-<a name="line-558"></a>
-<a name="line-559"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-560"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
-<a name="line-561"></a>         <font color=Cyan>,</font> XmlContent i <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-562"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-563"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>
-<a name="line-564"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-565"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-566"></a>          <font color=Cyan>++</font> toContents i
-<a name="line-567"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-568"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-569"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-570"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-571"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-572"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-573"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-574"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-575"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-576"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
-<a name="line-577"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>
-<a name="line-578"></a>        <font color=Cyan>}</font>
-<a name="line-579"></a>
-<a name="line-580"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-581"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
-<a name="line-582"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-583"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-584"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>
-<a name="line-585"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-586"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-587"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j
-<a name="line-588"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-589"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-590"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-591"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-592"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-593"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-594"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-595"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-596"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-597"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
-<a name="line-598"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
-<a name="line-599"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>
-<a name="line-600"></a>        <font color=Cyan>}</font>
-<a name="line-601"></a>
-<a name="line-602"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-603"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
-<a name="line-604"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-605"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-606"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>
-<a name="line-607"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-608"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-609"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k
-<a name="line-610"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-611"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-612"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-613"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-614"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-615"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-616"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-617"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-618"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-619"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
-<a name="line-620"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
-<a name="line-621"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
-<a name="line-622"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>
-<a name="line-623"></a>        <font color=Cyan>}</font>
-<a name="line-624"></a>
-<a name="line-625"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-626"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
-<a name="line-627"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-628"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-629"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>
-<a name="line-630"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-631"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-632"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
-<a name="line-633"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-634"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-635"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-636"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-637"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-638"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-639"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-640"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-641"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-642"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
-<a name="line-643"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
-<a name="line-644"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
-<a name="line-645"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
-<a name="line-646"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>
-<a name="line-647"></a>        <font color=Cyan>}</font>
-<a name="line-648"></a>
-<a name="line-649"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-650"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
-<a name="line-651"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l
-<a name="line-652"></a>         <font color=Cyan>,</font> XmlContent m <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-653"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-654"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>
-<a name="line-655"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-656"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-657"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
-<a name="line-658"></a>          <font color=Cyan>++</font> toContents m
-<a name="line-659"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-660"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-661"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-662"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-663"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-664"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-665"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-666"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-667"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-668"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
-<a name="line-669"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
-<a name="line-670"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
-<a name="line-671"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
-<a name="line-672"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents
-<a name="line-673"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>
-<a name="line-674"></a>        <font color=Cyan>}</font>
-<a name="line-675"></a>
-<a name="line-676"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-677"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
-<a name="line-678"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l
-<a name="line-679"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-680"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-681"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>
-<a name="line-682"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-683"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-684"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
-<a name="line-685"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n
-<a name="line-686"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-687"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-688"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-689"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-690"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-691"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-692"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-693"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-694"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-695"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
-<a name="line-696"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
-<a name="line-697"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
-<a name="line-698"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
-<a name="line-699"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents
-<a name="line-700"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents
-<a name="line-701"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>
-<a name="line-702"></a>        <font color=Cyan>}</font>
-<a name="line-703"></a>
-<a name="line-704"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
-<a name="line-705"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
-<a name="line-706"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l
-<a name="line-707"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n<font color=Cyan>,</font> XmlContent o <font color=Cyan>)</font> <font color=Red>=&gt;</font>
-<a name="line-708"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-709"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>
-<a name="line-710"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
-<a name="line-711"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
-<a name="line-712"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
-<a name="line-713"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n <font color=Cyan>++</font> toContents o
-<a name="line-714"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-715"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
-<a name="line-716"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
-<a name="line-717"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
-<a name="line-718"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
-<a name="line-719"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
-<a name="line-720"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
-<a name="line-721"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
-<a name="line-722"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
-<a name="line-723"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
-<a name="line-724"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
-<a name="line-725"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
-<a name="line-726"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
-<a name="line-727"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents
-<a name="line-728"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents
-<a name="line-729"></a>        <font color=Cyan>;</font> o <font color=Red>&lt;-</font> parseContents
-<a name="line-730"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>
-<a name="line-731"></a>        <font color=Cyan>}</font>
-<a name="line-732"></a>
-<a name="line-733"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-734"></a>    toContents m   <font color=Red>=</font> <font color=Red>[</font>mkElem m <font color=Cyan>(</font>maybe [] toContents m<font color=Cyan>)</font><font color=Red>]</font>
-<a name="line-735"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
-<a name="line-736"></a>        <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Red>[</font><font color=Magenta>"maybe"</font><font color=Red>]</font>
-<a name="line-737"></a>        <font color=Cyan>;</font> <font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return Nothing
-<a name="line-738"></a>                    <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> fmap Just <font color=Cyan>(</font>interior e parseContents<font color=Cyan>)</font>
-<a name="line-739"></a>        <font color=Cyan>}</font>
-<a name="line-740"></a>
-<a name="line-741"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-742"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Left aa<font color=Cyan>)</font> <font color=Red>=</font>
-<a name="line-743"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>0</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents aa<font color=Cyan>)</font><font color=Red>]</font>
-<a name="line-744"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Right ab<font color=Cyan>)</font> <font color=Red>=</font>
-<a name="line-745"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>1</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents ab<font color=Cyan>)</font><font color=Red>]</font>
-<a name="line-746"></a>    parseContents <font color=Red>=</font>
-<a name="line-747"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Left"</font>  <font color=Cyan>$</font> fmap Left  parseContents<font color=Cyan>)</font>
-<a name="line-748"></a>          <font color=Cyan>`onFail`</font>
-<a name="line-749"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Right"</font> <font color=Cyan>$</font> fmap Right parseContents<font color=Cyan>)</font>
-<a name="line-750"></a>
-<a name="line-751"></a><font color=Blue>--    do{ e@(Elem t [] _) &lt;- element ["Left","Right"]</font>
-<a name="line-752"></a><font color=Blue>--      ; case t of</font>
-<a name="line-753"></a><font color=Blue>--          _ | "Left"  `isPrefixOf` t -&gt; fmap Left  (interior e parseContents)</font>
-<a name="line-754"></a><font color=Blue>--            | "Right" `isPrefixOf` t -&gt; fmap Right (interior e parseContents)</font>
-<a name="line-755"></a><font color=Blue>--      }</font>
-<a name="line-756"></a>
-<a name="line-757"></a>
-<a name="line-758"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-759"></a><font color=Blue>-- Useful auxiliaries for "fromAttributes"</font>
-<a name="line-760"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-761"></a>
-<a name="line-762"></a><a name="Defaultable"></a><font color=Blue>-- | If an attribute is defaultable, then it either takes the default</font>
-<a name="line-763"></a><a name="Defaultable"></a><font color=Blue>--   value (which is omitted from the output), or a non-default value</font>
-<a name="line-764"></a><a name="Defaultable"></a><font color=Blue>--   (which obviously must be printed).</font>
-<a name="line-765"></a><a name="Defaultable"></a><font color=Green><u>data</u></font> Defaultable a  <font color=Red>=</font> Default a    <font color=Red>|</font> NonDefault a    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>
-<a name="line-766"></a>
-<a name="line-767"></a><a name="searchMaybe"></a><font color=Blue>searchMaybe</font> <font color=Red>::</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> Maybe b<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe b
-<a name="line-768"></a><font color=Blue>searchMaybe</font> <font color=Green><u>_</u></font> [] <font color=Red>=</font> Nothing
-<a name="line-769"></a><font color=Blue>searchMaybe</font> f <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Red>=</font>
-<a name="line-770"></a>    <font color=Green><u>let</u></font> fx <font color=Red>=</font> f x <font color=Green><u>in</u></font>
-<a name="line-771"></a>    <font color=Green><u>case</u></font> fx <font color=Green><u>of</u></font>
-<a name="line-772"></a>      Nothing  <font color=Red>-&gt;</font> searchMaybe f xs
-<a name="line-773"></a>      <font color=Cyan>(</font>Just <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fx
-<a name="line-774"></a>
-<a name="line-775"></a><a name="maybeToAttr"></a><font color=Blue>maybeToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe a
-<a name="line-776"></a>               <font color=Red>-&gt;</font> Maybe Attribute
-<a name="line-777"></a><font color=Blue>maybeToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> Nothing  <font color=Red>=</font> Nothing
-<a name="line-778"></a><font color=Blue>maybeToAttr</font> to n <font color=Cyan>(</font>Just v<font color=Cyan>)</font> <font color=Red>=</font> to n v
-<a name="line-779"></a>
-<a name="line-780"></a><a name="defaultToAttr"></a><font color=Blue>defaultToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Defaultable a
-<a name="line-781"></a>                 <font color=Red>-&gt;</font> Maybe Attribute
-<a name="line-782"></a><font color=Blue>defaultToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Cyan>(</font>Default <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> Nothing
-<a name="line-783"></a><font color=Blue>defaultToAttr</font> to n <font color=Cyan>(</font>NonDefault v<font color=Cyan>)</font> <font color=Red>=</font> to n v
-<a name="line-784"></a>
-<a name="line-785"></a><a name="definiteA"></a><font color=Blue>definiteA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
-<a name="line-786"></a>             <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a
-<a name="line-787"></a><font color=Blue>definiteA</font> from tag at <font color=Green><u>as</u></font> <font color=Red>=</font>
-<a name="line-788"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>
-<a name="line-789"></a>      Nothing  <font color=Red>-&gt;</font> error <font color=Cyan>(</font><font color=Magenta>"missing attribute "</font><font color=Cyan>++</font>at<font color=Cyan>++</font><font color=Magenta>" in tag &lt;"</font><font color=Cyan>++</font>tag<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font>
-<a name="line-790"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a
-<a name="line-791"></a>
-<a name="line-792"></a><a name="defaultA"></a><font color=Blue>defaultA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String
-<a name="line-793"></a>            <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Defaultable a
-<a name="line-794"></a><font color=Blue>defaultA</font> from def at <font color=Green><u>as</u></font> <font color=Red>=</font>
-<a name="line-795"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>
-<a name="line-796"></a>      Nothing  <font color=Red>-&gt;</font> Default def
-<a name="line-797"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> NonDefault a
-<a name="line-798"></a>
-<a name="line-799"></a><a name="possibleA"></a><font color=Blue>possibleA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe a
-<a name="line-800"></a><font color=Blue>possibleA</font> from at <font color=Green><u>as</u></font> <font color=Red>=</font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font>
-<a name="line-801"></a>
-<a name="line-802"></a><a name="fromAttrToStr"></a><font color=Blue>fromAttrToStr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe String
-<a name="line-803"></a><font color=Blue>fromAttrToStr</font> n <font color=Cyan>(</font>n0<font color=Cyan>,</font>v<font color=Cyan>)</font>
-<a name="line-804"></a>        <font color=Red>|</font> n <font color=Cyan>==</font> n0   <font color=Red>=</font> Just <font color=Cyan>(</font>attr2str v<font color=Cyan>)</font>
-<a name="line-805"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> Nothing
-<a name="line-806"></a>
-<a name="line-807"></a><a name="toAttrFrStr"></a><font color=Blue>toAttrFrStr</font>   <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe Attribute
-<a name="line-808"></a><font color=Blue>toAttrFrStr</font> n v <font color=Red>=</font> Just <font color=Cyan>(</font>n<font color=Cyan>,</font> str2attr v<font color=Cyan>)</font>
-<a name="line-809"></a>
-<a name="line-810"></a><a name="str2attr"></a><font color=Blue>str2attr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> AttValue
-<a name="line-811"></a><font color=Blue>str2attr</font> s <font color=Red>=</font>
-<a name="line-812"></a>    <font color=Green><u>let</u></font> f t <font color=Red>=</font>
-<a name="line-813"></a>          <font color=Green><u>let</u></font> <font color=Cyan>(</font>l<font color=Cyan>,</font>r<font color=Cyan>)</font> <font color=Red>=</font> span <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> not <font color=Cyan>(</font>elem c <font color=Magenta>"\"&amp;&lt;&gt;'"</font><font color=Cyan>)</font><font color=Cyan>)</font> t
-<a name="line-814"></a>          <font color=Green><u>in</u></font> <font color=Green><u>if</u></font> null r <font color=Green><u>then</u></font> <font color=Red>[</font>Left l<font color=Red>]</font>
-<a name="line-815"></a>             <font color=Green><u>else</u></font> Left l<font color=Red><b>:</b></font> Right <font color=Cyan>(</font>g <font color=Cyan>(</font>head r<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font> f <font color=Cyan>(</font>tail r<font color=Cyan>)</font>
-<a name="line-816"></a>        g <font color=Magenta>'"'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"quot"</font>
-<a name="line-817"></a>        g <font color=Magenta>'&amp;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"amp"</font>
-<a name="line-818"></a>        g <font color=Magenta>'&lt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"lt"</font>
-<a name="line-819"></a>        g <font color=Magenta>'&gt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"gt"</font>
-<a name="line-820"></a>        g <font color=Magenta>'\''</font> <font color=Red>=</font> RefEntity <font color=Magenta>"apos"</font>
-<a name="line-821"></a>    <font color=Green><u>in</u></font> AttValue <font color=Cyan>(</font>f s<font color=Cyan>)</font>
-<a name="line-822"></a>
-<a name="line-823"></a><a name="attr2str"></a><font color=Blue>attr2str</font> <font color=Red>::</font> AttValue <font color=Red>-&gt;</font> String          <font color=Blue>-- really needs symbol table</font>
-<a name="line-824"></a><font color=Blue>attr2str</font> <font color=Cyan>(</font>AttValue xs<font color=Cyan>)</font> <font color=Red>=</font>
-<a name="line-825"></a>    <font color=Green><u>let</u></font> f <font color=Cyan>(</font>Left s<font color=Cyan>)</font> <font color=Red>=</font> s
-<a name="line-826"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefChar i<font color=Cyan>)</font><font color=Cyan>)</font>        <font color=Red>=</font> <font color=Red>[</font>chr i<font color=Red>]</font>
-<a name="line-827"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"quot"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\""</font>
-<a name="line-828"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"amp"</font><font color=Cyan>)</font><font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"&amp;"</font>
-<a name="line-829"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"lt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;"</font>
-<a name="line-830"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"gt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&gt;"</font>
-<a name="line-831"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"apos"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"'"</font>
-<a name="line-832"></a>        f <font color=Cyan>(</font>Right <font color=Green><u>_</u></font><font color=Cyan>)</font>                  <font color=Red>=</font> <font color=Magenta>"*"</font>  <font color=Blue>-- Ooops, ST needed here.</font>
-<a name="line-833"></a>    <font color=Green><u>in</u></font> concatMap f xs
-<a name="line-834"></a>
-<a name="line-835"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-836"></a><font color=Blue>--  New content-model types</font>
-<a name="line-837"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-838"></a>
-<a name="line-839"></a><font color=Blue>{-
-<a name="line-840"></a>data OneOf2 a b
-<a name="line-841"></a>data OneOf3 a b c
-<a name="line-842"></a>data OneOf4 a b c d
-<a name="line-843"></a>    ... etc are now defined (with instances) in module OneOfN.
-<a name="line-844"></a>-}</font>
-<a name="line-845"></a>
-<a name="line-846"></a><a name="ANYContent"></a><font color=Blue>-- | A type corresponding to XML's ANY contentspec.</font>
-<a name="line-847"></a><a name="ANYContent"></a><font color=Blue>--   It is either a list of unconverted xml 'Content'</font>
-<a name="line-848"></a><a name="ANYContent"></a><font color=Blue>--   or some 'XmlContent'-able value.</font>
-<a name="line-849"></a><a name="ANYContent"></a><font color=Blue>--</font>
-<a name="line-850"></a><a name="ANYContent"></a><font color=Blue>-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.</font>
-<a name="line-851"></a><a name="ANYContent"></a><font color=Blue>-- Note: The Show instance for 'UnConverted' uses 'verbatim'.</font>
-<a name="line-852"></a><a name="ANYContent"></a><font color=Green><u>data</u></font> ANYContent <font color=Red>=</font> <font color=Green><u>forall</u></font> a <font color=Cyan>.</font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> Show a<font color=Cyan>)</font> <font color=Red>=&gt;</font> ANYContent a
-<a name="line-853"></a>                <font color=Red>|</font> UnConverted <font color=Red>[</font>Content Posn<font color=Red>]</font>
-<a name="line-854"></a>
-<a name="line-855"></a><font color=Green><u>instance</u></font> Show ANYContent <font color=Green><u>where</u></font>
-<a name="line-856"></a>    show <font color=Cyan>(</font>UnConverted c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"UnConverted "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show <font color=Cyan>$</font> map verbatim c<font color=Cyan>)</font>
-<a name="line-857"></a>    show <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"ANYContent "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show a<font color=Cyan>)</font>
-<a name="line-858"></a>
-<a name="line-859"></a><font color=Green><u>instance</u></font> Eq ANYContent <font color=Green><u>where</u></font>
-<a name="line-860"></a>    a <font color=Cyan>==</font> b <font color=Red>=</font> show a <font color=Cyan>==</font> show b
-<a name="line-861"></a>
-<a name="line-862"></a><a name="List1"></a><font color=Blue>-- | The List1 type represents lists with at least one element.</font>
-<a name="line-863"></a><a name="List1"></a><font color=Blue>--   It is required for DTD content models that use + as a modifier.</font>
-<a name="line-864"></a><a name="List1"></a><font color=Green><u>data</u></font> List1 a <font color=Red>=</font> NonEmpty <font color=Red>[</font>a<font color=Red>]</font>  <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font> Show<font color=Cyan>)</font>
-<a name="line-865"></a>
-<a name="line-866"></a>
-<a name="line-867"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-868"></a><font color=Blue>--  Instances for new content-model types</font>
-<a name="line-869"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-870"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-871"></a>    toHType m  <font color=Red>=</font> Defined <font color=Magenta>"List1"</font> <font color=Red>[</font>hx<font color=Red>]</font>
-<a name="line-872"></a>                         <font color=Red>[</font>Constr <font color=Magenta>"NonEmpty"</font> <font color=Red>[</font>hx<font color=Red>]</font> <font color=Red>[</font>List hx<font color=Red>]</font> <font color=Blue>{-Nothing-}</font><font color=Red>]</font>
-<a name="line-873"></a>               <font color=Green><u>where</u></font> <font color=Cyan>(</font>NonEmpty x<font color=Cyan>)</font> <font color=Red>=</font> m
-<a name="line-874"></a>                     hx <font color=Red>=</font> toHType x
-<a name="line-875"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>
-<a name="line-876"></a>    toContents <font color=Cyan>(</font>NonEmpty xs<font color=Cyan>)</font> <font color=Red>=</font> concatMap toContents xs
-<a name="line-877"></a>    parseContents <font color=Red>=</font> fmap NonEmpty <font color=Cyan>$</font> many1 parseContents
-<a name="line-878"></a>
-<a name="line-879"></a><font color=Green><u>instance</u></font> HTypeable ANYContent <font color=Green><u>where</u></font>
-<a name="line-880"></a>    toHType <font color=Green><u>_</u></font>      <font color=Red>=</font> Prim <font color=Magenta>"ANYContent"</font> <font color=Magenta>"ANY"</font>
-<a name="line-881"></a><font color=Green><u>instance</u></font> XmlContent ANYContent <font color=Green><u>where</u></font>
-<a name="line-882"></a>    toContents <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> toContents a
-<a name="line-883"></a>    toContents <font color=Cyan>(</font>UnConverted s<font color=Cyan>)</font> <font color=Red>=</font> map <font color=Cyan>(</font>fmap <font color=Cyan>(</font>const ()<font color=Cyan>)</font><font color=Cyan>)</font> s
-<a name="line-884"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>UnConverted cs<font color=Cyan>)</font><font color=Cyan>,</font> []<font color=Cyan>)</font><font color=Cyan>)</font>
-<a name="line-885"></a>
-<a name="line-886"></a><font color=Blue>------------------------------------------------------------------------</font>
-<a name="line-887"></a><font color=Blue>--</font>
-<a name="line-888"></a><font color=Blue>------------------------------------------------------------------------</font>
+<pre><a name="line-1"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>
+<a name="line-2"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>
+<a name="line-3"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>
+<a name="line-4"></a><font color=Blue>--</font>
+<a name="line-5"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>
+<a name="line-6"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances.</font>
+<a name="line-7"></a><font color=Blue>--   </font>
+<a name="line-8"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>
+<a name="line-9"></a><font color=Blue>--   derive instances of this class for you:</font>
+<a name="line-10"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>
+<a name="line-11"></a><font color=Blue>--   and _do_not_ use the current module, but rather</font>
+<a name="line-12"></a><font color=Blue>--   Text.XML.HaXml.XmlContent.Haskell, for the correct matching</font>
+<a name="line-13"></a><font color=Blue>--   instances for standard Haskell datatypes.</font>
+<a name="line-14"></a>
+<a name="line-15"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent
+<a name="line-16"></a>  <font color=Cyan>(</font>
+<a name="line-17"></a>  <font color=Blue>-- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.</font>
+<a name="line-18"></a>    <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser
+<a name="line-19"></a>  <font color=Blue>-- * Contains instances of the XmlContent classes,</font>
+<a name="line-20"></a>  <font color=Blue>--   for the basic Haskell datatypes list and Maybe,</font>
+<a name="line-21"></a>  <font color=Blue>--   intended for use with DtdToHaskell-generated datatypes.</font>
+<a name="line-22"></a>  <font color=Blue>--   See the alternative instances in Text.XML.HaXml.XmlContent.Haskell</font>
+<a name="line-23"></a>  <font color=Blue>--   if your datatypes originate in Haskell instead.</font>
+<a name="line-24"></a><font color=Blue>--  , module Text.XML.HaXml.XmlContent</font>
+<a name="line-25"></a>
+<a name="line-26"></a>  <font color=Blue>-- * Whole-document conversion functions</font>
+<a name="line-27"></a>  <font color=Cyan>,</font> toXml<font color=Cyan>,</font> fromXml
+<a name="line-28"></a>  <font color=Cyan>,</font> readXml<font color=Cyan>,</font> showXml<font color=Cyan>,</font> fpsShowXml
+<a name="line-29"></a>  <font color=Cyan>,</font> fReadXml<font color=Cyan>,</font> fWriteXml<font color=Cyan>,</font> fpsWriteXml
+<a name="line-30"></a>  <font color=Cyan>,</font> hGetXml<font color=Cyan>,</font>  hPutXml<font color=Cyan>,</font> fpsHPutXml
+<a name="line-31"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-32"></a>
+<a name="line-33"></a><font color=Green><u>import</u></font> IO
+<a name="line-34"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>
+<a name="line-35"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS
+<a name="line-36"></a>
+<a name="line-37"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>
+<a name="line-38"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly
+<a name="line-39"></a>
+<a name="line-40"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types
+<a name="line-41"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping
+<a name="line-42"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>
+<a name="line-43"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>
+<a name="line-44"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>
+<a name="line-45"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser
+<a name="line-46"></a>
+<a name="line-47"></a>
+<a name="line-48"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-49"></a>
+<a name="line-50"></a>        <font color=Blue>-- probably want to write DTD separately from value, and have</font>
+<a name="line-51"></a>        <font color=Blue>-- easy ways to combine DTD + value into a document, or write</font>
+<a name="line-52"></a>        <font color=Blue>-- them to separate files.</font>
+<a name="line-53"></a>
+<a name="line-54"></a><a name="fReadXml"></a><font color=Blue>-- | Read an XML document from a file and convert it to a fully-typed</font>
+<a name="line-55"></a><font color=Blue>--   Haskell value.</font>
+<a name="line-56"></a><font color=Blue>fReadXml</font>  <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> IO a
+<a name="line-57"></a><font color=Blue>fReadXml</font> fp <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-58"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdin
+<a name="line-59"></a>           <font color=Green><u>else</u></font> openFile fp ReadMode <font color=Cyan>)</font>
+<a name="line-60"></a>    x <font color=Red>&lt;-</font> hGetContents f
+<a name="line-61"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse fp x
+<a name="line-62"></a>        y' <font color=Red>=</font> CElem y <font color=Cyan>(</font>posInNewCxt fp Nothing<font color=Cyan>)</font>
+<a name="line-63"></a>    either fail return <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>y'<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-64"></a>
+<a name="line-65"></a><a name="fWriteXml"></a><font color=Blue>-- | Write a fully-typed Haskell value to the given file as an XML</font>
+<a name="line-66"></a><font color=Blue>--   document.</font>
+<a name="line-67"></a><font color=Blue>fWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-68"></a><font color=Blue>fWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-69"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout
+<a name="line-70"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>
+<a name="line-71"></a>    hPutXml f False x
+<a name="line-72"></a>    hClose f
+<a name="line-73"></a>
+<a name="line-74"></a><a name="fpsWriteXml"></a><font color=Blue>-- | Write any Haskell value to the given file as an XML document,</font>
+<a name="line-75"></a><font color=Blue>--   using the FastPackedString interface (output will not be prettified).</font>
+<a name="line-76"></a><font color=Blue>fpsWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-77"></a><font color=Blue>fpsWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-78"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout
+<a name="line-79"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>
+<a name="line-80"></a>    fpsHPutXml f False x
+<a name="line-81"></a>    hClose f
+<a name="line-82"></a>
+<a name="line-83"></a><a name="readXml"></a><font color=Blue>-- | Read a fully-typed XML document from a string.</font>
+<a name="line-84"></a><font color=Blue>readXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Either String a
+<a name="line-85"></a><font color=Blue>readXml</font> s <font color=Red>=</font>
+<a name="line-86"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"string input"</font> s <font color=Green><u>in</u></font>
+<a name="line-87"></a>    fst <font color=Cyan>(</font>runParser parseContents
+<a name="line-88"></a>                   <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"string input"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>
+<a name="line-89"></a>
+<a name="line-90"></a><a name="showXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).</font>
+<a name="line-91"></a><font color=Blue>showXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String
+<a name="line-92"></a><font color=Blue>showXml</font> dtd x <font color=Red>=</font>
+<a name="line-93"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>
+<a name="line-94"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-95"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>
+<a name="line-96"></a>
+<a name="line-97"></a><a name="fpsShowXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a ByteString (without DTD).</font>
+<a name="line-98"></a><font color=Blue>fpsShowXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>ByteString
+<a name="line-99"></a><font color=Blue>fpsShowXml</font> dtd x <font color=Red>=</font>
+<a name="line-100"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>
+<a name="line-101"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-102"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>empty
+<a name="line-103"></a>
+<a name="line-104"></a>
+<a name="line-105"></a><a name="toXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).</font>
+<a name="line-106"></a><font color=Blue>toXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()
+<a name="line-107"></a><font color=Blue>toXml</font> dtd value <font color=Red>=</font>
+<a name="line-108"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>
+<a name="line-109"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-110"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>
+<a name="line-111"></a>             emptyST
+<a name="line-112"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> toContents value <font color=Green><u>of</u></font>
+<a name="line-113"></a>                 []             <font color=Red>-&gt;</font> Elem <font color=Magenta>"empty"</font> [] []
+<a name="line-114"></a>                 <font color=Red>[</font>CElem e ()<font color=Red>]</font>   <font color=Red>-&gt;</font> e
+<a name="line-115"></a>                 <font color=Cyan>(</font>CElem e ()<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> error <font color=Magenta>"too many XML elements in document"</font> <font color=Cyan>)</font>
+<a name="line-116"></a>             []
+<a name="line-117"></a>
+<a name="line-118"></a><a name="fromXml"></a><font color=Blue>-- | Read a Haskell value from an XML document, ignoring the DTD and</font>
+<a name="line-119"></a><font color=Blue>--   using the Haskell result type to determine how to parse it.</font>
+<a name="line-120"></a><font color=Blue>fromXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Document Posn <font color=Red>-&gt;</font> Either String a
+<a name="line-121"></a><font color=Blue>fromXml</font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-122"></a>  fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>CElem e <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"document"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>
+<a name="line-123"></a>
+<a name="line-124"></a>
+<a name="line-125"></a><a name="hGetXml"></a><font color=Blue>-- | Read a fully-typed XML document from a file handle.</font>
+<a name="line-126"></a><font color=Blue>hGetXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> IO a
+<a name="line-127"></a><font color=Blue>hGetXml</font> h <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-128"></a>    x <font color=Red>&lt;-</font> hGetContents h
+<a name="line-129"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"file handle"</font> x
+<a name="line-130"></a>    either fail return
+<a name="line-131"></a>           <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents
+<a name="line-132"></a>                           <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"file handle"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-133"></a>
+<a name="line-134"></a><a name="hPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle.</font>
+<a name="line-135"></a><font color=Blue>hPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-136"></a><font color=Blue>hPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-137"></a>    <font color=Cyan>(</font>hPutStrLn h <font color=Cyan>.</font> render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-138"></a>
+<a name="line-139"></a><a name="fpsHPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle, using the</font>
+<a name="line-140"></a><font color=Blue>--   FastPackedString interface (output will not be prettified).</font>
+<a name="line-141"></a><font color=Blue>fpsHPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-142"></a><font color=Blue>fpsHPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-143"></a>    <font color=Cyan>(</font>FPS<font color=Cyan>.</font>hPut h <font color=Cyan>.</font> FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-144"></a>
+<a name="line-145"></a>
+<a name="line-146"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-147"></a><font color=Blue>-- Instances for all the standard basic datatypes.</font>
+<a name="line-148"></a><font color=Blue>-- DtdToHaskell uses only a small number of standard datatypes.</font>
+<a name="line-149"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-150"></a>
+<a name="line-151"></a><font color=Green><u>instance</u></font> XmlContent Char <font color=Green><u>where</u></font>
+<a name="line-152"></a>    <font color=Blue>-- NOT in a string</font>
+<a name="line-153"></a>    toContents c  <font color=Red>=</font> error <font color=Magenta>"Text.XML.HaXml.XmlContent.toContents used on a Haskell Char"</font>
+<a name="line-154"></a>    parseContents <font color=Red>=</font> fail <font color=Magenta>"Text.XML.HaXml.XmlContent.parseContents used on a Haskell Char "</font>
+<a name="line-155"></a>    <font color=Blue>-- Only defined for Char and no other types:</font>
+<a name="line-156"></a>    xToChar   <font color=Red>=</font> id
+<a name="line-157"></a>    xFromChar <font color=Red>=</font> id
+<a name="line-158"></a>
+<a name="line-159"></a><font color=Green><u>instance</u></font> XmlContent a <font color=Red>=&gt;</font> XmlContent <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>
+<a name="line-160"></a>    toContents xs  <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>
+<a name="line-161"></a>                       <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>
+<a name="line-162"></a>                            <font color=Red>[</font>CString True <font color=Cyan>(</font>map xToChar xs<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-163"></a>                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> concatMap toContents xs
+<a name="line-164"></a>                   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs
+<a name="line-165"></a>    parseContents <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> runParser p [] <font color=Blue>-- for type of x only</font>
+<a name="line-166"></a>                        p <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>
+<a name="line-167"></a>                              <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fmap <font color=Cyan>(</font>map xFromChar<font color=Cyan>)</font> <font color=Cyan>$</font> text
+<a name="line-168"></a>                              <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> many parseContents
+<a name="line-169"></a>                    <font color=Green><u>in</u></font> p
+<a name="line-170"></a>        <font color=Blue>-- comments, PIs, etc, are skipped in the individual element parser.</font>
+<a name="line-171"></a>
+<a name="line-172"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-173"></a>    toContents m  <font color=Red>=</font> maybe [] toContents m
+<a name="line-174"></a>    parseContents <font color=Red>=</font> optional parseContents
+<a name="line-175"></a>
+<a name="line-176"></a><font color=Blue>------------------------------------------------------------------------</font>
 </pre>
 </body>
 </html>
diff --git a/docs/HaXml/src/Text/XML/HaXml/XmlContent/Haskell.html b/docs/HaXml/src/Text/XML/HaXml/XmlContent/Haskell.html
new file mode 100644
--- /dev/null
+++ b/docs/HaXml/src/Text/XML/HaXml/XmlContent/Haskell.html
@@ -0,0 +1,262 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>src/Text/XML/HaXml/XmlContent/Haskell.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>
+<a name="line-2"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>
+<a name="line-3"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>
+<a name="line-4"></a><font color=Blue>--</font>
+<a name="line-5"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>
+<a name="line-6"></a><font color=Blue>--   derive instances of this class for you:</font>
+<a name="line-7"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>
+<a name="line-8"></a><font color=Blue>--   and use the current module for instances of the standard Haskell</font>
+<a name="line-9"></a><font color=Blue>--   datatypes list, Maybe, and so on.</font>
+<a name="line-10"></a><font color=Blue>--</font>
+<a name="line-11"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>
+<a name="line-12"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances,</font>
+<a name="line-13"></a><font color=Blue>--   but _do_not_ use the current module for instances: use</font>
+<a name="line-14"></a><font color=Blue>--   Text.XML.HaXml.XmlContent instead.</font>
+<a name="line-15"></a>
+<a name="line-16"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Haskell
+<a name="line-17"></a>  <font color=Cyan>(</font>
+<a name="line-18"></a>  <font color=Blue>-- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.</font>
+<a name="line-19"></a>    <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser
+<a name="line-20"></a>  <font color=Blue>-- * Instances (only) for the XmlContent class, for datatypes that</font>
+<a name="line-21"></a>  <font color=Blue>--   originated in Haskell, rather than from a DTD definition.</font>
+<a name="line-22"></a><font color=Blue>--  , module Text.XML.HaXml.XmlContent.Haskell</font>
+<a name="line-23"></a>
+<a name="line-24"></a>  <font color=Blue>-- * Whole-document conversion functions</font>
+<a name="line-25"></a>  <font color=Cyan>,</font> toXml<font color=Cyan>,</font> fromXml
+<a name="line-26"></a>  <font color=Cyan>,</font> readXml<font color=Cyan>,</font> showXml<font color=Cyan>,</font> fpsShowXml
+<a name="line-27"></a>  <font color=Cyan>,</font> fReadXml<font color=Cyan>,</font> fWriteXml<font color=Cyan>,</font> fpsWriteXml
+<a name="line-28"></a>  <font color=Cyan>,</font> hGetXml<font color=Cyan>,</font>  hPutXml<font color=Cyan>,</font> fpsHPutXml
+<a name="line-29"></a>
+<a name="line-30"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-31"></a>
+<a name="line-32"></a><font color=Green><u>import</u></font> IO
+<a name="line-33"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>isPrefixOf<font color=Cyan>,</font> isSuffixOf<font color=Cyan>)</font>
+<a name="line-34"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>
+<a name="line-35"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS
+<a name="line-36"></a>
+<a name="line-37"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>
+<a name="line-38"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly
+<a name="line-39"></a>
+<a name="line-40"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types
+<a name="line-41"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping
+<a name="line-42"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>
+<a name="line-43"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>
+<a name="line-44"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>
+<a name="line-45"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Cyan>(</font>Verbatim<font color=Cyan>(</font>verbatim<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-46"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser
+<a name="line-47"></a>
+<a name="line-48"></a>
+<a name="line-49"></a>        <font color=Blue>-- probably want to write DTD separately from value, and have</font>
+<a name="line-50"></a>        <font color=Blue>-- easy ways to combine DTD + value into a document, or write</font>
+<a name="line-51"></a>        <font color=Blue>-- them to separate files.</font>
+<a name="line-52"></a>
+<a name="line-53"></a><a name="fReadXml"></a><font color=Blue>-- | Read an XML document from a file and convert it to a fully-typed</font>
+<a name="line-54"></a><font color=Blue>--   Haskell value.</font>
+<a name="line-55"></a><font color=Blue>fReadXml</font>  <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> IO a
+<a name="line-56"></a><font color=Blue>fReadXml</font> fp <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-57"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdin
+<a name="line-58"></a>           <font color=Green><u>else</u></font> openFile fp ReadMode <font color=Cyan>)</font>
+<a name="line-59"></a>    x <font color=Red>&lt;-</font> hGetContents f
+<a name="line-60"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse fp x
+<a name="line-61"></a>        y' <font color=Red>=</font> CElem y <font color=Cyan>(</font>posInNewCxt fp Nothing<font color=Cyan>)</font>
+<a name="line-62"></a>    either fail return <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>y'<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-63"></a>
+<a name="line-64"></a><a name="fWriteXml"></a><font color=Blue>-- | Write a fully-typed Haskell value to the given file as an XML</font>
+<a name="line-65"></a><font color=Blue>--   document.</font>
+<a name="line-66"></a><font color=Blue>fWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-67"></a><font color=Blue>fWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-68"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout
+<a name="line-69"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>
+<a name="line-70"></a>    hPutXml f False x
+<a name="line-71"></a>    hClose f
+<a name="line-72"></a>
+<a name="line-73"></a><a name="fpsWriteXml"></a><font color=Blue>-- | Write any Haskell value to the given file as an XML document,</font>
+<a name="line-74"></a><font color=Blue>--   using the FastPackedString interface (output will not be prettified).</font>
+<a name="line-75"></a><font color=Blue>fpsWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-76"></a><font color=Blue>fpsWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-77"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout
+<a name="line-78"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>
+<a name="line-79"></a>    fpsHPutXml f False x
+<a name="line-80"></a>    hClose f
+<a name="line-81"></a>
+<a name="line-82"></a><a name="readXml"></a><font color=Blue>-- | Read a fully-typed XML document from a string.</font>
+<a name="line-83"></a><font color=Blue>readXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Either String a
+<a name="line-84"></a><font color=Blue>readXml</font> s <font color=Red>=</font>
+<a name="line-85"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"string input"</font> s <font color=Green><u>in</u></font>
+<a name="line-86"></a>    fst <font color=Cyan>(</font>runParser parseContents
+<a name="line-87"></a>                   <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"string input"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>
+<a name="line-88"></a>
+<a name="line-89"></a><a name="showXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).</font>
+<a name="line-90"></a><font color=Blue>showXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String
+<a name="line-91"></a><font color=Blue>showXml</font> dtd x <font color=Red>=</font>
+<a name="line-92"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>
+<a name="line-93"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-94"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>
+<a name="line-95"></a>
+<a name="line-96"></a><a name="fpsShowXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a ByteString (without DTD).</font>
+<a name="line-97"></a><font color=Blue>fpsShowXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>ByteString
+<a name="line-98"></a><font color=Blue>fpsShowXml</font> dtd x <font color=Red>=</font>
+<a name="line-99"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>
+<a name="line-100"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-101"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>empty
+<a name="line-102"></a>
+<a name="line-103"></a>
+<a name="line-104"></a><a name="toXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).</font>
+<a name="line-105"></a><font color=Blue>toXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()
+<a name="line-106"></a><font color=Blue>toXml</font> dtd value <font color=Red>=</font>
+<a name="line-107"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>
+<a name="line-108"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-109"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>
+<a name="line-110"></a>             emptyST
+<a name="line-111"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> <font color=Cyan>(</font>ht<font color=Cyan>,</font> toContents value<font color=Cyan>)</font> <font color=Green><u>of</u></font>
+<a name="line-112"></a>                 <font color=Cyan>(</font>Tuple <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font>       <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> [] cs
+<a name="line-113"></a>                 <font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>"-XML"</font><font color=Cyan>)</font> [] cs
+<a name="line-114"></a>                 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Red>[</font>CElem e ()<font color=Red>]</font><font color=Cyan>)</font>   <font color=Red>-&gt;</font> e <font color=Cyan>)</font>
+<a name="line-115"></a>             []
+<a name="line-116"></a>
+<a name="line-117"></a><a name="fromXml"></a><font color=Blue>-- | Read a Haskell value from an XML document, ignoring the DTD and</font>
+<a name="line-118"></a><font color=Blue>--   using the Haskell result type to determine how to parse it.</font>
+<a name="line-119"></a><font color=Blue>fromXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Document Posn <font color=Red>-&gt;</font> Either String a
+<a name="line-120"></a><font color=Blue>fromXml</font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>
+<a name="line-121"></a>  <font color=Red>|</font> <font color=Magenta>"tuple"</font> <font color=Cyan>`isPrefixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>
+<a name="line-122"></a>  <font color=Red>|</font> <font color=Magenta>"-XML"</font>  <font color=Cyan>`isSuffixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>
+<a name="line-123"></a>  <font color=Red>|</font> otherwise <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents
+<a name="line-124"></a>                               <font color=Red>[</font>CElem e <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"document"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>
+<a name="line-125"></a>
+<a name="line-126"></a>
+<a name="line-127"></a><a name="hGetXml"></a><font color=Blue>-- | Read a fully-typed XML document from a file handle.</font>
+<a name="line-128"></a><font color=Blue>hGetXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> IO a
+<a name="line-129"></a><font color=Blue>hGetXml</font> h <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-130"></a>    x <font color=Red>&lt;-</font> hGetContents h
+<a name="line-131"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"file handle"</font> x
+<a name="line-132"></a>    either fail return
+<a name="line-133"></a>           <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents
+<a name="line-134"></a>                           <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"file handle"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-135"></a>
+<a name="line-136"></a><a name="hPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle.</font>
+<a name="line-137"></a><font color=Blue>hPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-138"></a><font color=Blue>hPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-139"></a>    <font color=Cyan>(</font>hPutStrLn h <font color=Cyan>.</font> render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-140"></a>
+<a name="line-141"></a><a name="fpsHPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle, using the</font>
+<a name="line-142"></a><font color=Blue>--   FastPackedString interface (output will not be prettified).</font>
+<a name="line-143"></a><font color=Blue>fpsHPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()
+<a name="line-144"></a><font color=Blue>fpsHPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-145"></a>    <font color=Cyan>(</font>FPS<font color=Cyan>.</font>hPut h <font color=Cyan>.</font> FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x
+<a name="line-146"></a>
+<a name="line-147"></a>
+<a name="line-148"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-149"></a><font color=Blue>-- Instances for all the standard basic datatypes.</font>
+<a name="line-150"></a><font color=Blue>-- These are for Haskell datatypes being derived to go to XML.</font>
+<a name="line-151"></a><font color=Blue>-- DtdToHaskell does not use these instances.</font>
+<a name="line-152"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-153"></a>
+<a name="line-154"></a><font color=Green><u>instance</u></font> XmlContent Bool <font color=Green><u>where</u></font>
+<a name="line-155"></a>    toContents b   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"bool"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show b<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-156"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"bool"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
+<a name="line-157"></a>
+<a name="line-158"></a><font color=Green><u>instance</u></font> XmlContent Int <font color=Green><u>where</u></font>
+<a name="line-159"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"int"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-160"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"int"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
+<a name="line-161"></a>
+<a name="line-162"></a><font color=Green><u>instance</u></font> XmlContent Integer <font color=Green><u>where</u></font>
+<a name="line-163"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"integer"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-164"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"integer"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
+<a name="line-165"></a>
+<a name="line-166"></a><font color=Green><u>instance</u></font> XmlContent Float <font color=Green><u>where</u></font>
+<a name="line-167"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"float"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-168"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"float"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
+<a name="line-169"></a>
+<a name="line-170"></a><font color=Green><u>instance</u></font> XmlContent Double <font color=Green><u>where</u></font>
+<a name="line-171"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"double"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-172"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"double"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>
+<a name="line-173"></a>
+<a name="line-174"></a><font color=Green><u>instance</u></font> XmlContent Char <font color=Green><u>where</u></font>
+<a name="line-175"></a>    <font color=Blue>-- NOT in a string</font>
+<a name="line-176"></a>    toContents c   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"char"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-177"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font><font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font>
+<a name="line-178"></a>                             <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"char"</font><font color=Red>]</font>
+<a name="line-179"></a>                       <font color=Cyan>;</font> return c
+<a name="line-180"></a>                       <font color=Cyan>}</font>
+<a name="line-181"></a>    <font color=Blue>-- Only defined for Char and no other types:</font>
+<a name="line-182"></a>    xToChar   <font color=Red>=</font> id
+<a name="line-183"></a>    xFromChar <font color=Red>=</font> id
+<a name="line-184"></a>
+<a name="line-185"></a><font color=Green><u>instance</u></font> XmlContent a <font color=Red>=&gt;</font> XmlContent <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>
+<a name="line-186"></a>    toContents xs  <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>
+<a name="line-187"></a>                       <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>
+<a name="line-188"></a>                            <font color=Red>[</font>mkElem <font color=Magenta>"string"</font> <font color=Red>[</font>CString True <font color=Cyan>(</font>map xToChar xs<font color=Cyan>)</font> ()<font color=Red>]</font><font color=Red>]</font>
+<a name="line-189"></a>                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font>mkElem xs <font color=Cyan>(</font>concatMap toContents xs<font color=Cyan>)</font><font color=Red>]</font>
+<a name="line-190"></a>                   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs
+<a name="line-191"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>x <font color=Red>-&gt;</font>
+<a name="line-192"></a>        <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>
+<a name="line-193"></a>            <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>
+<a name="line-194"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
+<a name="line-195"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"string"</font> [] <font color=Red>[</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red>]</font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>
+<a name="line-196"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
+<a name="line-197"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e [] xs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"list"</font> <font color=Cyan>`isPrefixOf`</font> e
+<a name="line-198"></a>                   <font color=Red>-&gt;</font> scanElements xs
+<a name="line-199"></a>                   <font color=Green><u>where</u></font>
+<a name="line-200"></a>                  <font color=Blue>-- scanElements :: [Content] -&gt; (Either String [a],[Content])</font>
+<a name="line-201"></a>                     scanElements [] <font color=Red>=</font> <font color=Cyan>(</font>Right []<font color=Cyan>,</font> cs<font color=Cyan>)</font>
+<a name="line-202"></a>                     scanElements es <font color=Red>=</font>
+<a name="line-203"></a>                        <font color=Green><u>case</u></font> runParser parseContents es <font color=Green><u>of</u></font>
+<a name="line-204"></a>                            <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> es'<font color=Cyan>)</font>
+<a name="line-205"></a>                            <font color=Cyan>(</font>Right y<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font>
+<a name="line-206"></a>                                <font color=Green><u>case</u></font> scanElements es' <font color=Green><u>of</u></font>
+<a name="line-207"></a>                                    <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font>
+<a name="line-208"></a>                                    <font color=Cyan>(</font>Right ys<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>y<font color=Red><b>:</b></font>ys<font color=Cyan>)</font><font color=Cyan>,</font> ds<font color=Cyan>)</font>
+<a name="line-209"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>
+<a name="line-210"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False
+<a name="line-211"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>
+<a name="line-212"></a>                            <font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
+<a name="line-213"></a>            <font color=Cyan>(</font>CRef r pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>
+<a name="line-214"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False
+<a name="line-215"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a ref "</font>
+<a name="line-216"></a>                            <font color=Cyan>++</font>verbatim r<font color=Cyan>++</font><font color=Magenta>" at\n"</font><font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>
+<a name="line-217"></a>            <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>P p<font color=Cyan>)</font><font color=Red>-&gt;</font> p<font color=Cyan>)</font> parseContents<font color=Cyan>)</font> cs  <font color=Blue>-- skip comments etc.</font>
+<a name="line-218"></a>            []     <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False
+<a name="line-219"></a>                            <font color=Cyan>,</font><font color=Magenta>"Ran out of input XML whilst secondary parsing"</font><font color=Cyan>)</font>
+<a name="line-220"></a>                      <font color=Cyan>,</font> []<font color=Cyan>)</font>
+<a name="line-221"></a>        <font color=Cyan>)</font>
+<a name="line-222"></a>
+<a name="line-223"></a><font color=Green><u>instance</u></font> XmlContent () <font color=Green><u>where</u></font>
+<a name="line-224"></a>    toContents ()  <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"unit"</font> [] []<font color=Cyan>)</font> ()<font color=Red>]</font>
+<a name="line-225"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> element <font color=Red>[</font><font color=Magenta>"unit"</font><font color=Red>]</font><font color=Cyan>;</font> return () <font color=Cyan>}</font>
+<a name="line-226"></a>
+<a name="line-227"></a>
+<a name="line-228"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-229"></a>    toContents m   <font color=Red>=</font> <font color=Red>[</font>mkElem m <font color=Cyan>(</font>maybe [] toContents m<font color=Cyan>)</font><font color=Red>]</font>
+<a name="line-230"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-231"></a>        <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Red>[</font><font color=Magenta>"maybe"</font><font color=Red>]</font>
+<a name="line-232"></a>        <font color=Cyan>;</font> <font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return Nothing
+<a name="line-233"></a>                    <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> fmap Just <font color=Cyan>(</font>interior e parseContents<font color=Cyan>)</font>
+<a name="line-234"></a>        <font color=Cyan>}</font>
+<a name="line-235"></a>
+<a name="line-236"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-237"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Left aa<font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-238"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>0</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents aa<font color=Cyan>)</font><font color=Red>]</font>
+<a name="line-239"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Right ab<font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-240"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>1</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents ab<font color=Cyan>)</font><font color=Red>]</font>
+<a name="line-241"></a>    parseContents <font color=Red>=</font>
+<a name="line-242"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Left"</font>  <font color=Cyan>$</font> fmap Left  parseContents<font color=Cyan>)</font>
+<a name="line-243"></a>          <font color=Cyan>`onFail`</font>
+<a name="line-244"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Right"</font> <font color=Cyan>$</font> fmap Right parseContents<font color=Cyan>)</font>
+<a name="line-245"></a>
+<a name="line-246"></a><font color=Blue>--    do{ e@(Elem t [] _) &lt;- element ["Left","Right"]</font>
+<a name="line-247"></a><font color=Blue>--      ; case t of</font>
+<a name="line-248"></a><font color=Blue>--          _ | "Left"  `isPrefixOf` t -&gt; fmap Left  (interior e parseContents)</font>
+<a name="line-249"></a><font color=Blue>--            | "Right" `isPrefixOf` t -&gt; fmap Right (interior e parseContents)</font>
+<a name="line-250"></a><font color=Blue>--      }</font>
+<a name="line-251"></a>
+<a name="line-252"></a><font color=Blue>------------------------------------------------------------------------</font>
+</pre>
+</body>
+</html>
diff --git a/docs/HaXml/src/Text/XML/HaXml/XmlContent/Parser.html b/docs/HaXml/src/Text/XML/HaXml/XmlContent/Parser.html
new file mode 100644
--- /dev/null
+++ b/docs/HaXml/src/Text/XML/HaXml/XmlContent/Parser.html
@@ -0,0 +1,700 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>src/Text/XML/HaXml/XmlContent/Parser.hs</title>
+</head>
+<body>
+<pre><a name="line-1"></a><font color=Blue>{-# LANGUAGE ExistentialQuantification #-}</font>
+<a name="line-2"></a>
+<a name="line-3"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>
+<a name="line-4"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>
+<a name="line-5"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>
+<a name="line-6"></a><font color=Blue>--</font>
+<a name="line-7"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>
+<a name="line-8"></a><font color=Blue>--   derive instances of this class for you:</font>
+<a name="line-9"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>
+<a name="line-10"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>
+<a name="line-11"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances.</font>
+<a name="line-12"></a><font color=Blue>--</font>
+<a name="line-13"></a><font color=Blue>--   This unified class interface replaces two previous (somewhat similar)</font>
+<a name="line-14"></a><font color=Blue>--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have</font>
+<a name="line-15"></a><font color=Blue>--   separate classes depending on how you originally defined your datatypes.</font>
+<a name="line-16"></a><font color=Blue>--   However, some instances for basic types like lists will depend on which </font>
+<a name="line-17"></a><font color=Blue>--   direction you are using.  See Text.XML.HaXml.XmlContent and</font>
+<a name="line-18"></a><font color=Blue>--   Text.XML.HaXml.XmlContent.Haskell.</font>
+<a name="line-19"></a>
+<a name="line-20"></a><font color=Blue>--   The methods 'toContents' and 'parseContents' convert a value to and from</font>
+<a name="line-21"></a><font color=Blue>--   a generic internal representation of an XML document /without/ a DTD.</font>
+<a name="line-22"></a><font color=Blue>--   The functions 'toXml' and 'fromXml' convert a value to and from a generic</font>
+<a name="line-23"></a><font color=Blue>--   internal representation of an XML document /including/ a DTD.</font>
+<a name="line-24"></a><font color=Blue>--   The functions 'readXml' and 'showXml' convert to and from Strings.</font>
+<a name="line-25"></a><font color=Blue>--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from</font>
+<a name="line-26"></a><font color=Blue>--   the given filenames.</font>
+<a name="line-27"></a><font color=Blue>--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from</font>
+<a name="line-28"></a><font color=Blue>--   the given file handles.</font>
+<a name="line-29"></a><font color=Blue>--   (See the type signatures.)</font>
+<a name="line-30"></a><font color=Blue>--</font>
+<a name="line-31"></a>
+<a name="line-32"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser
+<a name="line-33"></a>  <font color=Cyan>(</font> <font color=Blue>-- * Re-export the relevant set of generic XML document type definitions</font>
+<a name="line-34"></a>    Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-35"></a>  <font color=Cyan>,</font> Element<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-36"></a>  <font color=Cyan>,</font> ElemTag<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-37"></a>  <font color=Cyan>,</font> Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-38"></a>  <font color=Cyan>,</font> Attribute()
+<a name="line-39"></a>  <font color=Cyan>,</font> AttValue<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-40"></a>  <font color=Cyan>,</font> Prolog<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-41"></a>  <font color=Cyan>,</font> Reference<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-42"></a>  <font color=Blue>-- * The enabling classes, that define parsing\/unparsing between Haskell</font>
+<a name="line-43"></a>  <font color=Blue>--   datatypes and a generic XML representation.</font>
+<a name="line-44"></a>  <font color=Cyan>,</font> XmlContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-45"></a>  <font color=Cyan>,</font> XmlAttributes<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-46"></a>  <font color=Cyan>,</font> XmlAttrType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-47"></a>  <font color=Blue>-- ** Auxiliaries for writing parsers in the XmlContent class</font>
+<a name="line-48"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly
+<a name="line-49"></a>  <font color=Cyan>,</font> XMLParser
+<a name="line-50"></a>  <font color=Cyan>,</font> content<font color=Cyan>,</font> posnElement<font color=Cyan>,</font> element<font color=Cyan>,</font> interior<font color=Cyan>,</font> inElement<font color=Cyan>,</font> text<font color=Cyan>,</font> attributes
+<a name="line-51"></a>  <font color=Cyan>,</font> posnElementWith<font color=Cyan>,</font> elementWith<font color=Cyan>,</font> inElementWith
+<a name="line-52"></a>  <font color=Cyan>,</font> choice<font color=Cyan>,</font> definite <font color=Blue>-- ???</font>
+<a name="line-53"></a>  <font color=Blue>-- ** Auxiliaries for generating in the XmlContent class</font>
+<a name="line-54"></a>  <font color=Cyan>,</font> mkElem<font color=Cyan>,</font> mkElemC<font color=Cyan>,</font> mkAttr
+<a name="line-55"></a>  <font color=Cyan>,</font> toText<font color=Cyan>,</font> toCData
+<a name="line-56"></a>  <font color=Blue>-- ** Auxiliaries for the attribute-related classes</font>
+<a name="line-57"></a>  <font color=Cyan>,</font> maybeToAttr<font color=Cyan>,</font> defaultToAttr
+<a name="line-58"></a>  <font color=Cyan>,</font> definiteA<font color=Cyan>,</font> defaultA<font color=Cyan>,</font> possibleA<font color=Cyan>,</font> fromAttrToStr<font color=Cyan>,</font> toAttrFrStr
+<a name="line-59"></a>  <font color=Cyan>,</font> Defaultable<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-60"></a>  <font color=Cyan>,</font> str2attr<font color=Cyan>,</font> attr2str<font color=Cyan>,</font> attval
+<a name="line-61"></a>  <font color=Cyan>,</font> catMaybes   <font color=Blue>-- re-exported from Maybe</font>
+<a name="line-62"></a>  <font color=Blue>-- * Explicit representation of Haskell datatype information</font>
+<a name="line-63"></a>  <font color=Blue>--   (for conversion to a DTD)</font>
+<a name="line-64"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping
+<a name="line-65"></a>  <font color=Blue>-- * Types useful for some content models</font>
+<a name="line-66"></a>  <font color=Cyan>,</font> List1<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-67"></a>  <font color=Cyan>,</font> ANYContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>
+<a name="line-68"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-69"></a>
+<a name="line-70"></a><font color=Blue>--import IO</font>
+<a name="line-71"></a><font color=Green><u>import</u></font> Maybe <font color=Cyan>(</font>catMaybes<font color=Cyan>)</font>
+<a name="line-72"></a><font color=Green><u>import</u></font> Char  <font color=Cyan>(</font>chr<font color=Cyan>,</font> isSpace<font color=Cyan>)</font>
+<a name="line-73"></a><font color=Green><u>import</u></font> List  <font color=Cyan>(</font>isPrefixOf<font color=Cyan>,</font> isSuffixOf<font color=Cyan>)</font>
+<a name="line-74"></a>
+<a name="line-75"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>
+<a name="line-76"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP
+<a name="line-77"></a>
+<a name="line-78"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types
+<a name="line-79"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping
+<a name="line-80"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>
+<a name="line-81"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>
+<a name="line-82"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>
+<a name="line-83"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Cyan>(</font>Verbatim<font color=Cyan>(</font>verbatim<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-84"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>
+<a name="line-85"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS
+<a name="line-86"></a>
+<a name="line-87"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly
+<a name="line-88"></a>
+<a name="line-89"></a><font color=Blue>--  #define DEBUG</font>
+<a name="line-90"></a>
+<a name="line-91"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>
+<a name="line-92"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>
+<a name="line-93"></a><a name="debug"></a><font color=Blue>debug</font> <font color=Red>::</font> a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> a
+<a name="line-94"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> s <font color=Red>=</font> trace s v
+<a name="line-95"></a><font color=Magenta><em>#else</em></font>
+<a name="line-96"></a><font color=Blue>debug</font> <font color=Red>::</font> t <font color=Red>-&gt;</font> t1 <font color=Red>-&gt;</font> t
+<a name="line-97"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> <font color=Green><u>_</u></font> <font color=Red>=</font> v
+<a name="line-98"></a><font color=Magenta><em>#endif</em></font>
+<a name="line-99"></a>
+<a name="line-100"></a>
+<a name="line-101"></a><a name="attval"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-102"></a><font color=Blue>-- | Read a single attribute called "value".</font>
+<a name="line-103"></a><font color=Blue>attval</font> <font color=Red>::</font> <font color=Cyan>(</font>Read a<font color=Cyan>)</font> <font color=Red>=&gt;</font> Element i <font color=Red>-&gt;</font> a
+<a name="line-104"></a><font color=Blue>attval</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font>v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> <font color=Red>=</font> read <font color=Cyan>(</font>show v<font color=Cyan>)</font>
+<a name="line-105"></a>
+<a name="line-106"></a><a name="mkAttr"></a><font color=Blue>-- | Generate a single attribute.</font>
+<a name="line-107"></a><font color=Blue>mkAttr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Attribute
+<a name="line-108"></a><font color=Blue>mkAttr</font> n v <font color=Red>=</font> <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue <font color=Red>[</font>Left v<font color=Red>]</font><font color=Cyan>)</font>
+<a name="line-109"></a>
+<a name="line-110"></a><a name="mkElem"></a><font color=Blue>-- | Generate an element with no attributes, named for its HType.</font>
+<a name="line-111"></a><font color=Blue>mkElem</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()
+<a name="line-112"></a><font color=Blue>mkElem</font> x cs  <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem <font color=Cyan>(</font>showHType <font color=Cyan>(</font>toHType x<font color=Cyan>)</font> <font color=Magenta>""</font><font color=Cyan>)</font> [] cs<font color=Cyan>)</font> ()
+<a name="line-113"></a>
+<a name="line-114"></a><a name="mkElemC"></a><font color=Blue>-- | Generate an element with no attributes, named directly.</font>
+<a name="line-115"></a><font color=Blue>mkElemC</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()
+<a name="line-116"></a><font color=Blue>mkElemC</font> x cs <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem x [] cs<font color=Cyan>)</font> ()
+<a name="line-117"></a>
+<a name="line-118"></a><a name="toText"></a><font color=Blue>-- | Turn a simple string into XML text.</font>
+<a name="line-119"></a><font color=Blue>toText</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>
+<a name="line-120"></a><font color=Blue>toText</font> s <font color=Red>=</font> <font color=Red>[</font>CString False s ()<font color=Red>]</font>
+<a name="line-121"></a>
+<a name="line-122"></a><a name="toCData"></a><font color=Blue>-- | Turn a string into an XML CDATA section.</font>
+<a name="line-123"></a><font color=Blue>--   (i.e. special characters like '&amp;' are preserved without interpretation.)</font>
+<a name="line-124"></a><font color=Blue>toCData</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>
+<a name="line-125"></a><font color=Blue>toCData</font> s <font color=Red>=</font> <font color=Red>[</font>CString True s ()<font color=Red>]</font>
+<a name="line-126"></a>
+<a name="line-127"></a>
+<a name="line-128"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-129"></a>
+<a name="line-130"></a><a name="XMLParser"></a><font color=Blue>-- | We need a parsing monad for reading generic XML Content into specific</font>
+<a name="line-131"></a><a name="XMLParser"></a><font color=Blue>--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly</font>
+<a name="line-132"></a><a name="XMLParser"></a><font color=Blue>--   ones, where the input token type is fixed as XML Content.</font>
+<a name="line-133"></a><a name="XMLParser"></a><font color=Green><u>type</u></font> XMLParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font> a
+<a name="line-134"></a>
+<a name="line-135"></a>
+<a name="line-136"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-137"></a><font color=Blue>-- Some useful parsing combinators</font>
+<a name="line-138"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-139"></a>
+<a name="line-140"></a><a name="content"></a><font color=Blue>-- | The most primitive combinator for XMLParser - get one content item.</font>
+<a name="line-141"></a><font color=Blue>content</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font>
+<a name="line-142"></a><font color=Blue>content</font> word <font color=Red>=</font> next <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>" when expecting "</font><font color=Cyan>++</font>word<font color=Cyan>)</font>
+<a name="line-143"></a>
+<a name="line-144"></a><a name="posnElementWith"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>
+<a name="line-145"></a><font color=Blue>--   tags, using the given matching function.</font>
+<a name="line-146"></a><font color=Blue>--   (Skips over comments and whitespace, rejects text and refs.</font>
+<a name="line-147"></a><font color=Blue>--    Also returns position of element.)</font>
+<a name="line-148"></a><font color=Blue>posnElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>
+<a name="line-149"></a>                   <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>
+<a name="line-150"></a><font color=Blue>posnElementWith</font> match tags <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-151"></a>    <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Cyan>(</font>formatted tags<font color=Cyan>)</font>
+<a name="line-152"></a>    <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>
+<a name="line-153"></a>          CElem e<font color=Red>@</font><font color=Cyan>(</font>Elem t <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos
+<a name="line-154"></a>              <font color=Red>|</font> any <font color=Cyan>(</font>match t<font color=Cyan>)</font> tags <font color=Red>-&gt;</font> return <font color=Cyan>(</font>pos<font color=Cyan>,</font> e<font color=Cyan>)</font>
+<a name="line-155"></a>              <font color=Red>|</font> otherwise          <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;, but expected "</font>
+<a name="line-156"></a>                                           <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>
+<a name="line-157"></a>          CString b s pos
+<a name="line-158"></a>              <font color=Red>|</font> not b <font color=Cyan>&amp;&amp;</font> all isSpace s <font color=Red>-&gt;</font> posnElementWith match tags
+<a name="line-159"></a>                                                        <font color=Blue>-- ignore blank space</font>
+<a name="line-160"></a>              <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found text content, but expected "</font>
+<a name="line-161"></a>                                  <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\ntext is: "</font><font color=Cyan>++</font>s
+<a name="line-162"></a>                                  <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>
+<a name="line-163"></a>          CRef r pos <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found reference, but expected "</font>
+<a name="line-164"></a>                             <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nreference is: "</font><font color=Cyan>++</font>verbatim r
+<a name="line-165"></a>                             <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>
+<a name="line-166"></a>          CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> posnElementWith match tags  <font color=Blue>-- skip comments, PIs, etc.</font>
+<a name="line-167"></a>    <font color=Cyan>}</font>
+<a name="line-168"></a>  <font color=Green><u>where</u></font>
+<a name="line-169"></a>    formatted <font color=Red>[</font>t<font color=Red>]</font>  <font color=Red>=</font> <font color=Magenta>"a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font>
+<a name="line-170"></a>    formatted tgs <font color=Red>=</font> <font color=Magenta>"one of"</font><font color=Cyan>++</font> concatMap <font color=Cyan>(</font><font color=Red>\</font>t<font color=Red>-&gt;</font><font color=Magenta>" &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font> tgs
+<a name="line-171"></a>
+<a name="line-172"></a><a name="posnElement"></a><font color=Blue>-- | A specialisation of @posnElementWith (==)@.</font>
+<a name="line-173"></a><font color=Blue>posnElement</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>
+<a name="line-174"></a><font color=Blue>posnElement</font> <font color=Red>=</font> posnElementWith <font color=Cyan>(</font><font color=Cyan>==</font><font color=Cyan>)</font>
+<a name="line-175"></a>
+<a name="line-176"></a><a name="element"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>
+<a name="line-177"></a><font color=Blue>--   tags.  (Skips over comments and whitespace, rejects text and refs.)</font>
+<a name="line-178"></a><font color=Blue>element</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>
+<a name="line-179"></a><font color=Blue>element</font> tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElement tags<font color=Cyan>)</font>
+<a name="line-180"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>
+<a name="line-181"></a>
+<a name="line-182"></a><a name="elementWith"></a><font color=Blue>-- | Like element, only permits a more flexible match against the tagname.</font>
+<a name="line-183"></a><font color=Blue>elementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>
+<a name="line-184"></a><font color=Blue>elementWith</font> match tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElementWith match tags<font color=Cyan>)</font>
+<a name="line-185"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>
+<a name="line-186"></a>
+<a name="line-187"></a><a name="interior"></a><font color=Blue>-- | Run an XMLParser on the contents of the given element (i.e. not on the</font>
+<a name="line-188"></a><font color=Blue>--   current monadic content sequence), checking that the contents are</font>
+<a name="line-189"></a><font color=Blue>--   exhausted, before returning the calculated value within the current</font>
+<a name="line-190"></a><font color=Blue>--   parser context.</font>
+<a name="line-191"></a><font color=Blue>interior</font> <font color=Red>::</font> Element Posn <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a
+<a name="line-192"></a><font color=Blue>interior</font> <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> p <font color=Red>=</font>
+<a name="line-193"></a>    <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>
+<a name="line-194"></a>        <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fail msg
+<a name="line-195"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return x
+<a name="line-196"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> ds<font color=Red>@</font><font color=Cyan>(</font>d<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-197"></a>            <font color=Red>|</font> all onlyMisc ds <font color=Red>-&gt;</font> return x
+<a name="line-198"></a>            <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Too many elements inside &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>
+<a name="line-199"></a>                                      <font color=Cyan>++</font>show <font color=Cyan>(</font>info d<font color=Cyan>)</font><font color=Cyan>++</font><font color=Magenta>"\n"</font>
+<a name="line-200"></a>                                      <font color=Cyan>++</font><font color=Magenta>"Found excess: "</font><font color=Cyan>++</font>verbatim d<font color=Cyan>)</font>
+<a name="line-201"></a>  <font color=Green><u>where</u></font> onlyMisc <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True
+<a name="line-202"></a>        onlyMisc <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> all isSpace s <font color=Red>=</font> True
+<a name="line-203"></a>        onlyMisc <font color=Green><u>_</u></font> <font color=Red>=</font> False
+<a name="line-204"></a>
+<a name="line-205"></a><a name="inElement"></a><font color=Blue>-- | A combination of element + interior.</font>
+<a name="line-206"></a><font color=Blue>inElement</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a
+<a name="line-207"></a><font color=Blue>inElement</font> tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font>tag<font color=Red>]</font><font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>
+<a name="line-208"></a>
+<a name="line-209"></a><a name="inElementWith"></a><font color=Blue>-- | A combination of elementWith + interior.</font>
+<a name="line-210"></a><font color=Blue>inElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a
+<a name="line-211"></a><font color=Blue>inElementWith</font> match tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith match <font color=Red>[</font>tag<font color=Red>]</font>
+<a name="line-212"></a>                               <font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>
+<a name="line-213"></a>
+<a name="line-214"></a><a name="attributes"></a><font color=Blue>-- | Do some parsing of the attributes of the given element</font>
+<a name="line-215"></a><font color=Blue>attributes</font> <font color=Red>::</font> XmlAttributes a <font color=Red>=&gt;</font> Element Posn <font color=Red>-&gt;</font> XMLParser a
+<a name="line-216"></a><font color=Blue>attributes</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> return <font color=Cyan>(</font>fromAttrs <font color=Green><u>as</u></font><font color=Cyan>)</font>
+<a name="line-217"></a>
+<a name="line-218"></a><a name="text"></a><font color=Blue>-- | 'text' is a counterpart to 'element', parsing text content if it</font>
+<a name="line-219"></a><font color=Blue>--   exists.  Adjacent text and references are coalesced.</font>
+<a name="line-220"></a><font color=Blue>text</font> <font color=Red>::</font> XMLParser String
+<a name="line-221"></a><font color=Blue>text</font> <font color=Red>=</font> text' []
+<a name="line-222"></a>  <font color=Green><u>where</u></font> text' acc <font color=Red>=</font>
+<a name="line-223"></a>          <font color=Green><u>do</u></font> <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Magenta>"plain text"</font>
+<a name="line-224"></a>             <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>
+<a name="line-225"></a>                 CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font>        <font color=Red>-&gt;</font> text' <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font>
+<a name="line-226"></a>                 CRef <font color=Cyan>(</font>RefChar s<font color=Cyan>)</font> <font color=Green><u>_</u></font>   <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"&amp;#"</font><font color=Cyan>++</font>show s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font> <font color=Red><b>:</b></font>acc<font color=Cyan>)</font>
+<a name="line-227"></a>                 CRef <font color=Cyan>(</font>RefEntity s<font color=Cyan>)</font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'&amp;'</font><font color=Red><b>:</b></font>s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font><font color=Red><b>:</b></font>acc<font color=Cyan>)</font>
+<a name="line-228"></a>                 CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>            <font color=Red>-&gt;</font> text' acc
+<a name="line-229"></a>                 CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> reparse <font color=Red>[</font>c<font color=Red>]</font> <font color=Blue>-- put it back!</font>
+<a name="line-230"></a>                                         <font color=Cyan>;</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>
+<a name="line-231"></a>                                           <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-232"></a>                                         <font color=Cyan>}</font>
+<a name="line-233"></a>             <font color=Cyan>}</font>
+<a name="line-234"></a>          <font color=Cyan>`onFail`</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>
+<a name="line-235"></a>                     <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>)</font>
+<a name="line-236"></a>
+<a name="line-237"></a>
+<a name="line-238"></a><a name="choice"></a><font color=Blue>-- | 'choice f p' means if parseContents succeeds, apply f to the result,</font>
+<a name="line-239"></a><font color=Blue>--   otherwise use the continuation parser.</font>
+<a name="line-240"></a><font color=Blue>choice</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> b<font color=Cyan>)</font> <font color=Red>-&gt;</font> XMLParser b <font color=Red>-&gt;</font> XMLParser b
+<a name="line-241"></a><font color=Blue>choice</font> cons <font color=Cyan>(</font>P other<font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-242"></a>    P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser parseContents cs <font color=Green><u>of</u></font>
+<a name="line-243"></a>                 <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> other cs
+<a name="line-244"></a>                 <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>cons x<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-245"></a>
+<a name="line-246"></a><font color=Blue>--choice cons other = fmap cons parseContents `onFail` other</font>
+<a name="line-247"></a>
+<a name="line-248"></a><a name="definite"></a><font color=Blue>-- | not sure this is needed now.   'definite p' previously ensured that</font>
+<a name="line-249"></a><font color=Blue>--   an element was definitely present.  Now I think the monad might take</font>
+<a name="line-250"></a><font color=Blue>--   care of that for us.</font>
+<a name="line-251"></a><font color=Blue>definite</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> XMLParser a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a
+<a name="line-252"></a><font color=Blue>definite</font> p inner tag <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>
+<a name="line-253"></a>                                   <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg'<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font>
+<a name="line-254"></a>                                   <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font>   cs'<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-255"></a>  <font color=Green><u>where</u></font> msg' <font color=Red>=</font> <font color=Magenta>"content error: expected "</font><font color=Cyan>++</font>inner<font color=Cyan>++</font><font color=Magenta>" inside &lt;"</font><font color=Cyan>++</font>tag
+<a name="line-256"></a>               <font color=Cyan>++</font><font color=Magenta>"&gt; element\n"</font>
+<a name="line-257"></a>
+<a name="line-258"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-259"></a>
+<a name="line-260"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlContent@ class promises that an XML Content element can be</font>
+<a name="line-261"></a><a name="XmlContent"></a><font color=Blue>--   converted to and from a Haskell value.</font>
+<a name="line-262"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> HTypeable a <font color=Red>=&gt;</font> XmlContent a <font color=Green><u>where</u></font>
+<a name="line-263"></a>    <font color=Blue>-- | Convert from XML to Haskell</font>
+<a name="line-264"></a>    parseContents <font color=Red>::</font> XMLParser a
+<a name="line-265"></a>    <font color=Blue>-- | Convert from Haskell to XML</font>
+<a name="line-266"></a>    toContents    <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>
+<a name="line-267"></a>
+<a name="line-268"></a>    <font color=Blue>-- | Dummy functions (for most types): used /only/ in the Char instance</font>
+<a name="line-269"></a>    <font color=Blue>--   for coercing lists of Char into String.</font>
+<a name="line-270"></a>    xToChar       <font color=Red>::</font> a <font color=Red>-&gt;</font> Char
+<a name="line-271"></a>    xFromChar     <font color=Red>::</font> Char <font color=Red>-&gt;</font> a
+<a name="line-272"></a>    xToChar        <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xToChar used in error"</font>
+<a name="line-273"></a>    xFromChar      <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xFromChar used in error"</font>
+<a name="line-274"></a>
+<a name="line-275"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlAttributes@ class promises that a list of XML tag attributes</font>
+<a name="line-276"></a><a name="XmlContent"></a><font color=Blue>--   can be converted to and from a Haskell value.</font>
+<a name="line-277"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> XmlAttributes a <font color=Green><u>where</u></font>
+<a name="line-278"></a>    fromAttrs <font color=Red>::</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a
+<a name="line-279"></a>    toAttrs   <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font>
+<a name="line-280"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlAttrType@ class promises that an attribute taking an XML</font>
+<a name="line-281"></a><a name="XmlContent"></a><font color=Blue>--   enumerated type can be converted to and from a Haskell value.</font>
+<a name="line-282"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> XmlAttrType a <font color=Green><u>where</u></font>
+<a name="line-283"></a>    fromAttrToTyp <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe a
+<a name="line-284"></a>    toAttrFrTyp   <font color=Red>::</font> String <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe Attribute
+<a name="line-285"></a>
+<a name="line-286"></a>
+<a name="line-287"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-288"></a><font color=Blue>-- Instances for some of the standard basic datatypes.</font>
+<a name="line-289"></a><font color=Blue>-- Both DtdToHaskell and Haskell2Xml share these instances.</font>
+<a name="line-290"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-291"></a>
+<a name="line-292"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-293"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b
+<a name="line-294"></a>    parseContents    <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-295"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-296"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-297"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font>
+<a name="line-298"></a>        <font color=Cyan>}</font>
+<a name="line-299"></a>
+<a name="line-300"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-301"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
+<a name="line-302"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-303"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-304"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-305"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-306"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font>
+<a name="line-307"></a>        <font color=Cyan>}</font>
+<a name="line-308"></a>
+<a name="line-309"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d<font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-310"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-311"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
+<a name="line-312"></a>                           <font color=Cyan>++</font> toContents d
+<a name="line-313"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-314"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-315"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-316"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-317"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-318"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font>
+<a name="line-319"></a>        <font color=Cyan>}</font>
+<a name="line-320"></a>
+<a name="line-321"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-322"></a>         <font color=Cyan>,</font> XmlContent e <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-323"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-324"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
+<a name="line-325"></a>                             <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e
+<a name="line-326"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-327"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-328"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-329"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-330"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-331"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-332"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font>
+<a name="line-333"></a>        <font color=Cyan>}</font>
+<a name="line-334"></a>
+<a name="line-335"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-336"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-337"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-338"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c
+<a name="line-339"></a>                               <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f
+<a name="line-340"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-341"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-342"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-343"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-344"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-345"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-346"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-347"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font>
+<a name="line-348"></a>        <font color=Cyan>}</font>
+<a name="line-349"></a>
+<a name="line-350"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-351"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-352"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-353"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>
+<a name="line-354"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-355"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g
+<a name="line-356"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-357"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-358"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-359"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-360"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-361"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-362"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-363"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-364"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>
+<a name="line-365"></a>        <font color=Cyan>}</font>
+<a name="line-366"></a>
+<a name="line-367"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-368"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-369"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-370"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>
+<a name="line-371"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-372"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-373"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-374"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-375"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-376"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-377"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-378"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-379"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-380"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-381"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-382"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>
+<a name="line-383"></a>        <font color=Cyan>}</font>
+<a name="line-384"></a>
+<a name="line-385"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-386"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
+<a name="line-387"></a>         <font color=Cyan>,</font> XmlContent i <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-388"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-389"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>
+<a name="line-390"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-391"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-392"></a>          <font color=Cyan>++</font> toContents i
+<a name="line-393"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-394"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-395"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-396"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-397"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-398"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-399"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-400"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-401"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-402"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
+<a name="line-403"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>
+<a name="line-404"></a>        <font color=Cyan>}</font>
+<a name="line-405"></a>
+<a name="line-406"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-407"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
+<a name="line-408"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-409"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-410"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>
+<a name="line-411"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-412"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-413"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j
+<a name="line-414"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-415"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-416"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-417"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-418"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-419"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-420"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-421"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-422"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-423"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
+<a name="line-424"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
+<a name="line-425"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>
+<a name="line-426"></a>        <font color=Cyan>}</font>
+<a name="line-427"></a>
+<a name="line-428"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-429"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
+<a name="line-430"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-431"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-432"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>
+<a name="line-433"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-434"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-435"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k
+<a name="line-436"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-437"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-438"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-439"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-440"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-441"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-442"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-443"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-444"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-445"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
+<a name="line-446"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
+<a name="line-447"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
+<a name="line-448"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>
+<a name="line-449"></a>        <font color=Cyan>}</font>
+<a name="line-450"></a>
+<a name="line-451"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-452"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
+<a name="line-453"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-454"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-455"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>
+<a name="line-456"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-457"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-458"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
+<a name="line-459"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-460"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-461"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-462"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-463"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-464"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-465"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-466"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-467"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-468"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
+<a name="line-469"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
+<a name="line-470"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
+<a name="line-471"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
+<a name="line-472"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>
+<a name="line-473"></a>        <font color=Cyan>}</font>
+<a name="line-474"></a>
+<a name="line-475"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-476"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
+<a name="line-477"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l
+<a name="line-478"></a>         <font color=Cyan>,</font> XmlContent m <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-479"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-480"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>
+<a name="line-481"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-482"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-483"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
+<a name="line-484"></a>          <font color=Cyan>++</font> toContents m
+<a name="line-485"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-486"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-487"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-488"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-489"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-490"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-491"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-492"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-493"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-494"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
+<a name="line-495"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
+<a name="line-496"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
+<a name="line-497"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
+<a name="line-498"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents
+<a name="line-499"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>
+<a name="line-500"></a>        <font color=Cyan>}</font>
+<a name="line-501"></a>
+<a name="line-502"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-503"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
+<a name="line-504"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l
+<a name="line-505"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-506"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-507"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>
+<a name="line-508"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-509"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-510"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
+<a name="line-511"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n
+<a name="line-512"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-513"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-514"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-515"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-516"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-517"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-518"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-519"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-520"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-521"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
+<a name="line-522"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
+<a name="line-523"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
+<a name="line-524"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
+<a name="line-525"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents
+<a name="line-526"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents
+<a name="line-527"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>
+<a name="line-528"></a>        <font color=Cyan>}</font>
+<a name="line-529"></a>
+<a name="line-530"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d
+<a name="line-531"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h
+<a name="line-532"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l
+<a name="line-533"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n<font color=Cyan>,</font> XmlContent o <font color=Cyan>)</font> <font color=Red>=&gt;</font>
+<a name="line-534"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-535"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>
+<a name="line-536"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d
+<a name="line-537"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h
+<a name="line-538"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l
+<a name="line-539"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n <font color=Cyan>++</font> toContents o
+<a name="line-540"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>
+<a name="line-541"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents
+<a name="line-542"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents
+<a name="line-543"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents
+<a name="line-544"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents
+<a name="line-545"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents
+<a name="line-546"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents
+<a name="line-547"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents
+<a name="line-548"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents
+<a name="line-549"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents
+<a name="line-550"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents
+<a name="line-551"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents
+<a name="line-552"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents
+<a name="line-553"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents
+<a name="line-554"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents
+<a name="line-555"></a>        <font color=Cyan>;</font> o <font color=Red>&lt;-</font> parseContents
+<a name="line-556"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>
+<a name="line-557"></a>        <font color=Cyan>}</font>
+<a name="line-558"></a>
+<a name="line-559"></a>
+<a name="line-560"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-561"></a><font color=Blue>-- Useful auxiliaries for "fromAttributes"</font>
+<a name="line-562"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-563"></a>
+<a name="line-564"></a><a name="Defaultable"></a><font color=Blue>-- | If an attribute is defaultable, then it either takes the default</font>
+<a name="line-565"></a><a name="Defaultable"></a><font color=Blue>--   value (which is omitted from the output), or a non-default value</font>
+<a name="line-566"></a><a name="Defaultable"></a><font color=Blue>--   (which obviously must be printed).</font>
+<a name="line-567"></a><a name="Defaultable"></a><font color=Green><u>data</u></font> Defaultable a  <font color=Red>=</font> Default a    <font color=Red>|</font> NonDefault a    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>
+<a name="line-568"></a>
+<a name="line-569"></a><a name="searchMaybe"></a><font color=Blue>searchMaybe</font> <font color=Red>::</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> Maybe b<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe b
+<a name="line-570"></a><font color=Blue>searchMaybe</font> <font color=Green><u>_</u></font> [] <font color=Red>=</font> Nothing
+<a name="line-571"></a><font color=Blue>searchMaybe</font> f <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-572"></a>    <font color=Green><u>let</u></font> fx <font color=Red>=</font> f x <font color=Green><u>in</u></font>
+<a name="line-573"></a>    <font color=Green><u>case</u></font> fx <font color=Green><u>of</u></font>
+<a name="line-574"></a>      Nothing  <font color=Red>-&gt;</font> searchMaybe f xs
+<a name="line-575"></a>      <font color=Cyan>(</font>Just <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fx
+<a name="line-576"></a>
+<a name="line-577"></a><a name="maybeToAttr"></a><font color=Blue>maybeToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe a
+<a name="line-578"></a>               <font color=Red>-&gt;</font> Maybe Attribute
+<a name="line-579"></a><font color=Blue>maybeToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> Nothing  <font color=Red>=</font> Nothing
+<a name="line-580"></a><font color=Blue>maybeToAttr</font> to n <font color=Cyan>(</font>Just v<font color=Cyan>)</font> <font color=Red>=</font> to n v
+<a name="line-581"></a>
+<a name="line-582"></a><a name="defaultToAttr"></a><font color=Blue>defaultToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Defaultable a
+<a name="line-583"></a>                 <font color=Red>-&gt;</font> Maybe Attribute
+<a name="line-584"></a><font color=Blue>defaultToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Cyan>(</font>Default <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> Nothing
+<a name="line-585"></a><font color=Blue>defaultToAttr</font> to n <font color=Cyan>(</font>NonDefault v<font color=Cyan>)</font> <font color=Red>=</font> to n v
+<a name="line-586"></a>
+<a name="line-587"></a><a name="definiteA"></a><font color=Blue>definiteA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String
+<a name="line-588"></a>             <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a
+<a name="line-589"></a><font color=Blue>definiteA</font> from tag at <font color=Green><u>as</u></font> <font color=Red>=</font>
+<a name="line-590"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>
+<a name="line-591"></a>      Nothing  <font color=Red>-&gt;</font> error <font color=Cyan>(</font><font color=Magenta>"missing attribute "</font><font color=Cyan>++</font>at<font color=Cyan>++</font><font color=Magenta>" in tag &lt;"</font><font color=Cyan>++</font>tag<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font>
+<a name="line-592"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a
+<a name="line-593"></a>
+<a name="line-594"></a><a name="defaultA"></a><font color=Blue>defaultA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String
+<a name="line-595"></a>            <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Defaultable a
+<a name="line-596"></a><font color=Blue>defaultA</font> from def at <font color=Green><u>as</u></font> <font color=Red>=</font>
+<a name="line-597"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>
+<a name="line-598"></a>      Nothing  <font color=Red>-&gt;</font> Default def
+<a name="line-599"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> NonDefault a
+<a name="line-600"></a>
+<a name="line-601"></a><a name="possibleA"></a><font color=Blue>possibleA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe a
+<a name="line-602"></a><font color=Blue>possibleA</font> from at <font color=Green><u>as</u></font> <font color=Red>=</font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font>
+<a name="line-603"></a>
+<a name="line-604"></a><a name="fromAttrToStr"></a><font color=Blue>fromAttrToStr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe String
+<a name="line-605"></a><font color=Blue>fromAttrToStr</font> n <font color=Cyan>(</font>n0<font color=Cyan>,</font>v<font color=Cyan>)</font>
+<a name="line-606"></a>        <font color=Red>|</font> n <font color=Cyan>==</font> n0   <font color=Red>=</font> Just <font color=Cyan>(</font>attr2str v<font color=Cyan>)</font>
+<a name="line-607"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> Nothing
+<a name="line-608"></a>
+<a name="line-609"></a><a name="toAttrFrStr"></a><font color=Blue>toAttrFrStr</font>   <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe Attribute
+<a name="line-610"></a><font color=Blue>toAttrFrStr</font> n v <font color=Red>=</font> Just <font color=Cyan>(</font>n<font color=Cyan>,</font> str2attr v<font color=Cyan>)</font>
+<a name="line-611"></a>
+<a name="line-612"></a><a name="str2attr"></a><font color=Blue>str2attr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> AttValue
+<a name="line-613"></a><font color=Blue>str2attr</font> s <font color=Red>=</font>
+<a name="line-614"></a>    <font color=Green><u>let</u></font> f t <font color=Red>=</font>
+<a name="line-615"></a>          <font color=Green><u>let</u></font> <font color=Cyan>(</font>l<font color=Cyan>,</font>r<font color=Cyan>)</font> <font color=Red>=</font> span <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> not <font color=Cyan>(</font>elem c <font color=Magenta>"\"&amp;&lt;&gt;'"</font><font color=Cyan>)</font><font color=Cyan>)</font> t
+<a name="line-616"></a>          <font color=Green><u>in</u></font> <font color=Green><u>if</u></font> null r <font color=Green><u>then</u></font> <font color=Red>[</font>Left l<font color=Red>]</font>
+<a name="line-617"></a>             <font color=Green><u>else</u></font> Left l<font color=Red><b>:</b></font> Right <font color=Cyan>(</font>g <font color=Cyan>(</font>head r<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font> f <font color=Cyan>(</font>tail r<font color=Cyan>)</font>
+<a name="line-618"></a>        g <font color=Magenta>'"'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"quot"</font>
+<a name="line-619"></a>        g <font color=Magenta>'&amp;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"amp"</font>
+<a name="line-620"></a>        g <font color=Magenta>'&lt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"lt"</font>
+<a name="line-621"></a>        g <font color=Magenta>'&gt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"gt"</font>
+<a name="line-622"></a>        g <font color=Magenta>'\''</font> <font color=Red>=</font> RefEntity <font color=Magenta>"apos"</font>
+<a name="line-623"></a>    <font color=Green><u>in</u></font> AttValue <font color=Cyan>(</font>f s<font color=Cyan>)</font>
+<a name="line-624"></a>
+<a name="line-625"></a><a name="attr2str"></a><font color=Blue>attr2str</font> <font color=Red>::</font> AttValue <font color=Red>-&gt;</font> String          <font color=Blue>-- really needs symbol table</font>
+<a name="line-626"></a><font color=Blue>attr2str</font> <font color=Cyan>(</font>AttValue xs<font color=Cyan>)</font> <font color=Red>=</font>
+<a name="line-627"></a>    <font color=Green><u>let</u></font> f <font color=Cyan>(</font>Left s<font color=Cyan>)</font> <font color=Red>=</font> s
+<a name="line-628"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefChar i<font color=Cyan>)</font><font color=Cyan>)</font>        <font color=Red>=</font> <font color=Red>[</font>chr i<font color=Red>]</font>
+<a name="line-629"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"quot"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\""</font>
+<a name="line-630"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"amp"</font><font color=Cyan>)</font><font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"&amp;"</font>
+<a name="line-631"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"lt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;"</font>
+<a name="line-632"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"gt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&gt;"</font>
+<a name="line-633"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"apos"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"'"</font>
+<a name="line-634"></a>        f <font color=Cyan>(</font>Right <font color=Green><u>_</u></font><font color=Cyan>)</font>                  <font color=Red>=</font> <font color=Magenta>"*"</font>  <font color=Blue>-- Ooops, ST needed here.</font>
+<a name="line-635"></a>    <font color=Green><u>in</u></font> concatMap f xs
+<a name="line-636"></a>
+<a name="line-637"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-638"></a><font color=Blue>--  New content-model types</font>
+<a name="line-639"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-640"></a>
+<a name="line-641"></a><font color=Blue>{-
+<a name="line-642"></a>data OneOf2 a b
+<a name="line-643"></a>data OneOf3 a b c
+<a name="line-644"></a>data OneOf4 a b c d
+<a name="line-645"></a>    ... etc are now defined (with instances) in module OneOfN.
+<a name="line-646"></a>-}</font>
+<a name="line-647"></a>
+<a name="line-648"></a><a name="ANYContent"></a><font color=Blue>-- | A type corresponding to XML's ANY contentspec.</font>
+<a name="line-649"></a><a name="ANYContent"></a><font color=Blue>--   It is either a list of unconverted xml 'Content'</font>
+<a name="line-650"></a><a name="ANYContent"></a><font color=Blue>--   or some 'XmlContent'-able value.</font>
+<a name="line-651"></a><a name="ANYContent"></a><font color=Blue>--</font>
+<a name="line-652"></a><a name="ANYContent"></a><font color=Blue>-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.</font>
+<a name="line-653"></a><a name="ANYContent"></a><font color=Blue>-- Note: The Show instance for 'UnConverted' uses 'verbatim'.</font>
+<a name="line-654"></a><a name="ANYContent"></a><font color=Green><u>data</u></font> ANYContent <font color=Red>=</font> <font color=Green><u>forall</u></font> a <font color=Cyan>.</font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> Show a<font color=Cyan>)</font> <font color=Red>=&gt;</font> ANYContent a
+<a name="line-655"></a>                <font color=Red>|</font> UnConverted <font color=Red>[</font>Content Posn<font color=Red>]</font>
+<a name="line-656"></a>
+<a name="line-657"></a><font color=Green><u>instance</u></font> Show ANYContent <font color=Green><u>where</u></font>
+<a name="line-658"></a>    show <font color=Cyan>(</font>UnConverted c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"UnConverted "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show <font color=Cyan>$</font> map verbatim c<font color=Cyan>)</font>
+<a name="line-659"></a>    show <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"ANYContent "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show a<font color=Cyan>)</font>
+<a name="line-660"></a>
+<a name="line-661"></a><font color=Green><u>instance</u></font> Eq ANYContent <font color=Green><u>where</u></font>
+<a name="line-662"></a>    a <font color=Cyan>==</font> b <font color=Red>=</font> show a <font color=Cyan>==</font> show b
+<a name="line-663"></a>
+<a name="line-664"></a><a name="List1"></a><font color=Blue>-- | The List1 type represents lists with at least one element.</font>
+<a name="line-665"></a><a name="List1"></a><font color=Blue>--   It is required for DTD content models that use + as a modifier.</font>
+<a name="line-666"></a><a name="List1"></a><font color=Green><u>data</u></font> List1 a <font color=Red>=</font> NonEmpty <font color=Red>[</font>a<font color=Red>]</font>  <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font> Show<font color=Cyan>)</font>
+<a name="line-667"></a>
+<a name="line-668"></a>
+<a name="line-669"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-670"></a><font color=Blue>--  Instances for new content-model types</font>
+<a name="line-671"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-672"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-673"></a>    toHType m  <font color=Red>=</font> Defined <font color=Magenta>"List1"</font> <font color=Red>[</font>hx<font color=Red>]</font>
+<a name="line-674"></a>                         <font color=Red>[</font>Constr <font color=Magenta>"NonEmpty"</font> <font color=Red>[</font>hx<font color=Red>]</font> <font color=Red>[</font>List hx<font color=Red>]</font> <font color=Blue>{-Nothing-}</font><font color=Red>]</font>
+<a name="line-675"></a>               <font color=Green><u>where</u></font> <font color=Cyan>(</font>NonEmpty x<font color=Cyan>)</font> <font color=Red>=</font> m
+<a name="line-676"></a>                     hx <font color=Red>=</font> toHType x
+<a name="line-677"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>
+<a name="line-678"></a>    toContents <font color=Cyan>(</font>NonEmpty xs<font color=Cyan>)</font> <font color=Red>=</font> concatMap toContents xs
+<a name="line-679"></a>    parseContents <font color=Red>=</font> fmap NonEmpty <font color=Cyan>$</font> many1 parseContents
+<a name="line-680"></a>
+<a name="line-681"></a><font color=Green><u>instance</u></font> HTypeable ANYContent <font color=Green><u>where</u></font>
+<a name="line-682"></a>    toHType <font color=Green><u>_</u></font>      <font color=Red>=</font> Prim <font color=Magenta>"ANYContent"</font> <font color=Magenta>"ANY"</font>
+<a name="line-683"></a><font color=Green><u>instance</u></font> XmlContent ANYContent <font color=Green><u>where</u></font>
+<a name="line-684"></a>    toContents <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> toContents a
+<a name="line-685"></a>    toContents <font color=Cyan>(</font>UnConverted s<font color=Cyan>)</font> <font color=Red>=</font> map <font color=Cyan>(</font>fmap <font color=Cyan>(</font>const ()<font color=Cyan>)</font><font color=Cyan>)</font> s
+<a name="line-686"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>UnConverted cs<font color=Cyan>)</font><font color=Cyan>,</font> []<font color=Cyan>)</font><font color=Cyan>)</font>
+<a name="line-687"></a>
+<a name="line-688"></a><font color=Blue>------------------------------------------------------------------------</font>
+<a name="line-689"></a><font color=Blue>--</font>
+<a name="line-690"></a><font color=Blue>------------------------------------------------------------------------</font>
+</pre>
+</body>
+</html>
diff --git a/docs/changelog.html b/docs/changelog.html
--- a/docs/changelog.html
+++ b/docs/changelog.html
@@ -27,6 +27,8 @@
      It also fixes a couple of bugs in DtdToHaskell, when dealing with
      larger datatypes (more than 26 components) and duplicate ATTLIST
      specifications.
+<li> Version 1.19.6 fixes some tag-name bugs when converting datatypes
+     generated by DtdToHaskell back into an XML file value.
 </ul>
 
 <h3>Changes in 1.18</h3>
diff --git a/docs/index.html b/docs/index.html
--- a/docs/index.html
+++ b/docs/index.html
@@ -132,11 +132,11 @@
 <center><h3><a name="download">Downloads</a></h3></center>
 <p>
 <b>Development versions:</b><br>
-HaXml-1.19.5, release date 2009.02.02<br>
+HaXml-1.19.6, release date 2009.02.04<br>
 From <a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HaXml">Hackage</a><br>
 By HTTP:
-<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.5.tar.gz">.tar.gz</a>,
-<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.5.zip">.zip</a>.
+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.6.tar.gz">.tar.gz</a>,
+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.6.zip">.zip</a>.
 <br>
 By FTP: 
 <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/">
@@ -203,6 +203,8 @@
 <center><h3><a name="news">Recent news</a></h3></center>
 
 <p>
+Version 1.19.6 has some bugfixes to XmlContent, to ensure that types
+created via DtdToHaskell get converted back to XML correctly.<br>
 Version 1.19.5 has some bugfixes to DtdToHaskell, to cope with especially
 large datatypes.<br>
 Version 1.19.4 has some minor bugfixes to increase compatibility with the
diff --git a/src/Makefile b/src/Makefile
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,5 +1,5 @@
 SOFTWARE = HaXml
-VERSION = 1.19.5
+VERSION = 1.19.6
 
 LIBSRCS = \
 	Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Lex.hs \
@@ -10,7 +10,10 @@
 	Text/XML/HaXml/OneOfN.hs \
 	Text/XML/HaXml/ParseLazy.hs \
 	Text/XML/HaXml/ByteStringPP.hs \
-	Text/XML/HaXml/TypeMapping.hs  Text/XML/HaXml/XmlContent.hs \
+	Text/XML/HaXml/TypeMapping.hs \
+	Text/XML/HaXml/XmlContent.hs \
+	Text/XML/HaXml/XmlContent/Parser.hs \
+	Text/XML/HaXml/XmlContent/Haskell.hs \
 	Text/XML/HaXml/Verbatim.hs Text/XML/HaXml/Escape.hs \
 	Text/XML/HaXml/SAX.hs \
 	Text/XML/HaXml/ShowXmlLazy.hs \
diff --git a/src/Text/XML/HaXml/XmlContent.hs b/src/Text/XML/HaXml/XmlContent.hs
--- a/src/Text/XML/HaXml/XmlContent.hs
+++ b/src/Text/XML/HaXml/XmlContent.hs
@@ -1,132 +1,52 @@
-{-# LANGUAGE ExistentialQuantification #-}
-
 -- | The class 'XmlContent' is a kind of replacement for Read and Show:
 --   it provides conversions between a generic XML tree representation
 --   and your own more specialised typeful Haskell data trees.
 --
+--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
+--   to generate both the Haskell types and the corresponding instances.
+--   
 --   If you are starting with a set of Haskell datatypes, use DrIFT to
 --   derive instances of this class for you:
 --       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT
---   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
---   to generate both the Haskell types and the corresponding instances.
---
---   This unified class interface replaces two previous (somewhat similar)
---   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have
---   separate classes depending on how you originally defined your datatypes.
-
---   The methods 'toContents' and 'parseContents' convert a value to and from
---   a generic internal representation of an XML document /without/ a DTD.
---   The functions 'toXml' and 'fromXml' convert a value to and from a generic
---   internal representation of an XML document /including/ a DTD.
---   The functions 'readXml' and 'showXml' convert to and from Strings.
---   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from
---   the given filenames.
---   The functions 'hGetXml' and 'hPutXml' do the conversion to and from
---   the given file handles.
---   (See the type signatures.)
---
+--   and _do_not_ use the current module, but rather
+--   Text.XML.HaXml.XmlContent.Haskell, for the correct matching
+--   instances for standard Haskell datatypes.
 
 module Text.XML.HaXml.XmlContent
-  ( -- * Re-export the relevant set of generic XML document type definitions
-    Document(..)
-  , Element(..)
-  , ElemTag(..)
-  , Content(..)
-  , Attribute()
-  , AttValue(..)
-  , Prolog(..)
-  , Reference(..)
-  -- * The enabling classes, that define parsing\/unparsing between Haskell
-  --   datatypes and a generic XML representation.
-  , XmlContent(..)
-  , XmlAttributes(..)
-  , XmlAttrType(..)
-  -- ** Auxiliaries for writing parsers in the XmlContent class
-  , module Text.ParserCombinators.Poly
-  , XMLParser
-  , content, posnElement, element, interior, inElement, text, attributes
-  , posnElementWith, elementWith, inElementWith
-  , choice, definite -- ???
-  -- ** Auxiliaries for generating in the XmlContent class
-  , mkElem, mkElemC, mkAttr
-  , toText, toCData
-  -- ** Auxiliaries for the attribute-related classes
-  , maybeToAttr, defaultToAttr
-  , definiteA, defaultA, possibleA, fromAttrToStr, toAttrFrStr
-  , Defaultable(..)
-  , str2attr, attr2str, attval
-  , catMaybes   -- re-exported from Maybe
+  (
+  -- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.
+    module Text.XML.HaXml.XmlContent.Parser
+  -- * Contains instances of the XmlContent classes,
+  --   for the basic Haskell datatypes list and Maybe,
+  --   intended for use with DtdToHaskell-generated datatypes.
+  --   See the alternative instances in Text.XML.HaXml.XmlContent.Haskell
+  --   if your datatypes originate in Haskell instead.
+--  , module Text.XML.HaXml.XmlContent
+
   -- * Whole-document conversion functions
   , toXml, fromXml
   , readXml, showXml, fpsShowXml
   , fReadXml, fWriteXml, fpsWriteXml
   , hGetXml,  hPutXml, fpsHPutXml
-  -- * Explicit representation of Haskell datatype information
-  --   (for conversion to a DTD)
-  , module Text.XML.HaXml.TypeMapping
-  -- * Types useful for some content models
-  , List1(..)
-  , ANYContent(..)
   ) where
 
 import IO
-import Maybe (catMaybes)
-import Char  (chr, isSpace)
-import List  (isPrefixOf, isSuffixOf)
+import qualified Text.XML.HaXml.ByteStringPP as FPS (document)
+import qualified Data.ByteString.Lazy.Char8 as FPS
 
 import Text.PrettyPrint.HughesPJ (render)
-import qualified Text.XML.HaXml.Pretty as PP
+import Text.ParserCombinators.Poly
 
 import Text.XML.HaXml.Types
 import Text.XML.HaXml.TypeMapping
 import Text.XML.HaXml.Posn     (Posn, posInNewCxt)
 import Text.XML.HaXml.Pretty   (document)
 import Text.XML.HaXml.Parse    (xmlParse)
-import Text.XML.HaXml.Verbatim (Verbatim(verbatim))
-import qualified Text.XML.HaXml.ByteStringPP as FPS (document)
-import qualified Data.ByteString.Lazy.Char8 as FPS
-
-import Text.ParserCombinators.Poly
-
---  #define DEBUG
-
-#if defined(DEBUG)
-import Debug.Trace(trace)
-debug :: a -> String -> a
-v `debug` s = trace s v
-#else
-debug :: t -> t1 -> t
-v `debug` _ = v
-#endif
+import Text.XML.HaXml.XmlContent.Parser
 
 
 ------------------------------------------------------------------------
--- | Read a single attribute called "value".
-attval :: (Read a) => Element i -> a
-attval (Elem _ [("value",v@(AttValue _))] []) = read (show v)
 
--- | Generate a single attribute.
-mkAttr :: String -> String -> Attribute
-mkAttr n v = (n, AttValue [Left v])
-
--- | Generate an element with no attributes, named for its HType.
-mkElem :: XmlContent a => a -> [Content ()] -> Content ()
-mkElem x cs  = CElem (Elem (showHType (toHType x) "") [] cs) ()
-
--- | Generate an element with no attributes, named directly.
-mkElemC :: String -> [Content ()] -> Content ()
-mkElemC x cs = CElem (Elem x [] cs) ()
-
--- | Turn a simple string into XML text.
-toText :: String -> [Content ()]
-toText s = [CString False s ()]
-
--- | Turn a string into an XML CDATA section.
---   (i.e. special characters like '&' are preserved without interpretation.)
-toCData :: String -> [Content ()]
-toCData s = [CString True s ()]
-------------------------------------------------------------------------
-
         -- probably want to write DTD separately from value, and have
         -- easy ways to combine DTD + value into a document, or write
         -- them to separate files.
@@ -189,20 +109,17 @@
     Document (Prolog (Just (XMLDecl "1.0" Nothing Nothing))
                      [] (if dtd then Just (toDTD ht) else Nothing) [])
              emptyST
-             ( case (ht, toContents value) of
-                 (Tuple _, cs)       -> Elem (showHType ht "") [] cs
-                 (Defined _ _ _, cs) -> Elem (showHType ht "-XML") [] cs
-                 (_, [CElem e ()])   -> e )
+             ( case toContents value of
+                 []             -> Elem "empty" [] []
+                 [CElem e ()]   -> e
+                 (CElem e ():_) -> error "too many XML elements in document" )
              []
 
 -- | Read a Haskell value from an XML document, ignoring the DTD and
 --   using the Haskell result type to determine how to parse it.
 fromXml :: XmlContent a => Document Posn -> Either String a
-fromXml (Document _ _ e@(Elem n _ cs) _)
-  | "tuple" `isPrefixOf` n = fst (runParser parseContents cs)
-  | "-XML"  `isSuffixOf` n = fst (runParser parseContents cs)
-  | otherwise = fst (runParser parseContents
-                               [CElem e (posInNewCxt "document" Nothing)])
+fromXml (Document _ _ e@(Elem n _ cs) _) =
+  fst (runParser parseContents [CElem e (posInNewCxt "document" Nothing)])
 
 
 -- | Read a fully-typed XML document from a file handle.
@@ -225,198 +142,16 @@
 fpsHPutXml h dtd x = do
     (FPS.hPut h . FPS.document . toXml dtd) x
 
-------------------------------------------------------------------------
 
--- | We need a parsing monad for reading generic XML Content into specific
---   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly
---   ones, where the input token type is fixed as XML Content.
-type XMLParser a = Parser (Content Posn) a
-
-
 ------------------------------------------------------------------------
--- Some useful parsing combinators
-------------------------------------------------------------------------
-
--- | The most primitive combinator for XMLParser - get one content item.
-content :: String -> XMLParser (Content Posn)
-content word = next `adjustErr` (++" when expecting "++word)
-
--- | Get the next content element, checking that it has one of the required
---   tags, using the given matching function.
---   (Skips over comments and whitespace, rejects text and refs.
---    Also returns position of element.)
-posnElementWith :: (String->String->Bool) -> [String]
-                   -> XMLParser (Posn, Element Posn)
-posnElementWith match tags = do
-    { c <- content (formatted tags)
-    ; case c of
-          CElem e@(Elem t _ _) pos
-              | any (match t) tags -> return (pos, e)
-              | otherwise          -> fail ("Found a <"++t++">, but expected "
-                                           ++formatted tags++"\nat "++show pos)
-          CString b s pos
-              | not b && all isSpace s -> posnElementWith match tags
-                                                        -- ignore blank space
-              | otherwise -> fail ("Found text content, but expected "
-                                  ++formatted tags++"\ntext is: "++s
-                                  ++"\nat "++show pos)
-          CRef r pos -> fail ("Found reference, but expected "
-                             ++formatted tags++"\nreference is: "++verbatim r
-                             ++"\nat "++show pos)
-          CMisc _ _ -> posnElementWith match tags  -- skip comments, PIs, etc.
-    }
-  where
-    formatted [t]  = "a <"++t++">"
-    formatted tgs = "one of"++ concatMap (\t->" <"++t++">") tgs
-
--- | A specialisation of @posnElementWith (==)@.
-posnElement :: [String] -> XMLParser (Posn, Element Posn)
-posnElement = posnElementWith (==)
-
--- | Get the next content element, checking that it has one of the required
---   tags.  (Skips over comments and whitespace, rejects text and refs.)
-element :: [String] -> XMLParser (Element Posn)
-element tags = fmap snd (posnElement tags)
-                                `debug` ("Element: "++unwords tags++"\n")
-
--- | Like element, only permits a more flexible match against the tagname.
-elementWith :: (String->String->Bool) -> [String] -> XMLParser (Element Posn)
-elementWith match tags = fmap snd (posnElementWith match tags)
-                                `debug` ("Element: "++unwords tags++"\n")
-
--- | Run an XMLParser on the contents of the given element (i.e. not on the
---   current monadic content sequence), checking that the contents are
---   exhausted, before returning the calculated value within the current
---   parser context.
-interior :: Element Posn -> XMLParser a -> XMLParser a
-interior (Elem e _ cs) p =
-    case runParser p cs of
-        (Left msg, _) -> fail msg
-        (Right x, []) -> return x
-        (Right x, ds@(d:_))
-            | all onlyMisc ds -> return x
-            | otherwise       -> fail ("Too many elements inside <"++e++"> at\n"
-                                      ++show (info d)++"\n"
-                                      ++"Found excess: "++verbatim d)
-  where onlyMisc (CMisc _ _) = True
-        onlyMisc (CString False s _) | all isSpace s = True
-        onlyMisc _ = False
-
--- | A combination of element + interior.
-inElement :: String -> XMLParser a -> XMLParser a
-inElement tag p = do { e <- element [tag]; commit (interior e p) }
-
--- | A combination of elementWith + interior.
-inElementWith :: (String->String->Bool) -> String -> XMLParser a -> XMLParser a
-inElementWith match tag p = do { e <- elementWith match [tag]
-                               ; commit (interior e p) }
-
--- | Do some parsing of the attributes of the given element
-attributes :: XmlAttributes a => Element Posn -> XMLParser a
-attributes (Elem _ as _) = return (fromAttrs as)
-
--- | 'text' is a counterpart to 'element', parsing text content if it
---   exists.  Adjacent text and references are coalesced.
-text :: XMLParser String
-text = text' []
-  where text' acc =
-          do { c <- content "plain text"
-             ; case c of
-                 CString _ s _        -> text' (s:acc)
-                 CRef (RefChar s) _   -> text' (("&#"++show s++";") :acc)
-                 CRef (RefEntity s) _ -> text' (('&':s++";"):acc)
-                 CMisc _ _            -> text' acc
-                 CElem _ _         -> do { reparse [c] -- put it back!
-                                         ; if null acc then fail "empty string"
-                                           else return (concat (reverse acc))
-                                         }
-             }
-          `onFail` ( if null acc then fail "empty string"
-                     else return (concat (reverse acc)) )
-
-
--- | 'choice f p' means if parseContents succeeds, apply f to the result,
---   otherwise use the continuation parser.
-choice :: XmlContent a => (a -> b) -> XMLParser b -> XMLParser b
-choice cons (P other) =
-    P (\cs-> case runParser parseContents cs of
-                 (Left _, _)  -> other cs
-                 (Right x, cs') -> (Right (cons x), cs'))
-
---choice cons other = fmap cons parseContents `onFail` other
-
--- | not sure this is needed now.   'definite p' previously ensured that
---   an element was definitely present.  Now I think the monad might take
---   care of that for us.
-definite :: XmlContent a => XMLParser a -> String -> String -> XMLParser a
-definite p inner tag = P (\cs-> case runParser p cs of
-                                   (Left _, cs') -> (Left (False,msg'), cs')
-                                   (Right x, cs')  -> (Right x,   cs'))
-  where msg' = "content error: expected "++inner++" inside <"++tag
-               ++"> element\n"
-
-------------------------------------------------------------------------
-
--- | The @XmlContent@ class promises that an XML Content element can be
---   converted to and from a Haskell value.
-class HTypeable a => XmlContent a where
-    -- | Convert from XML to Haskell
-    parseContents :: XMLParser a
-    -- | Convert from Haskell to XML
-    toContents    :: a -> [Content ()]
-
-    -- | Dummy functions (for most types): used /only/ in the Char instance
-    --   for coercing lists of Char into String.
-    xToChar       :: a -> Char
-    xFromChar     :: Char -> a
-    xToChar        = error "HaXml.XmlContent.xToChar used in error"
-    xFromChar      = error "HaXml.XmlContent.xFromChar used in error"
-
--- | The @XmlAttributes@ class promises that a list of XML tag attributes
---   can be converted to and from a Haskell value.
-class XmlAttributes a where
-    fromAttrs :: [Attribute] -> a
-    toAttrs   :: a -> [Attribute]
--- | The @XmlAttrType@ class promises that an attribute taking an XML
---   enumerated type can be converted to and from a Haskell value.
-class XmlAttrType a where
-    fromAttrToTyp :: String -> Attribute -> Maybe a
-    toAttrFrTyp   :: String -> a -> Maybe Attribute
-
-
-------------------------------------------------------------------------
 -- Instances for all the standard basic datatypes.
--- These are for Haskell datatypes being derived to go to XML.
--- DtdToHaskell does not use these instances.
+-- DtdToHaskell uses only a small number of standard datatypes.
 ------------------------------------------------------------------------
 
-instance XmlContent Bool where
-    toContents b   = [CElem (Elem "bool" [mkAttr "value" (show b)] []) ()]
-    parseContents = do { e <- element ["bool"] ; return (attval e) }
-
-instance XmlContent Int where
-    toContents i   = [CElem (Elem "int" [mkAttr "value" (show i)] []) ()]
-    parseContents = do { e <- element ["int"] ; return (attval e) }
-
-instance XmlContent Integer where
-    toContents i   = [CElem (Elem "integer" [mkAttr "value" (show i)] []) ()]
-    parseContents = do { e <- element ["integer"] ; return (attval e) }
-
-instance XmlContent Float where
-    toContents i   = [CElem (Elem "float" [mkAttr "value" (show i)] []) ()]
-    parseContents = do { e <- element ["float"] ; return (attval e) }
-
-instance XmlContent Double where
-    toContents i   = [CElem (Elem "double" [mkAttr "value" (show i)] []) ()]
-    parseContents = do { e <- element ["double"] ; return (attval e) }
-
 instance XmlContent Char where
     -- NOT in a string
-    toContents c   = [CElem (Elem "char" [mkAttr "value" [c]] []) ()]
-    parseContents = do { (Elem _ [("value",(AttValue [Left [c]]))] [])
-                             <- element ["char"]
-                       ; return c
-                       }
+    toContents c  = error "Text.XML.HaXml.XmlContent.toContents used on a Haskell Char"
+    parseContents = fail "Text.XML.HaXml.XmlContent.parseContents used on a Haskell Char "
     -- Only defined for Char and no other types:
     xToChar   = id
     xFromChar = id
@@ -424,465 +159,18 @@
 instance XmlContent a => XmlContent [a] where
     toContents xs  = case toHType x of
                        (Prim "Char" _) ->
-                            [mkElem "string" [CString True (map xToChar xs) ()]]
-                       _ -> [mkElem xs (concatMap toContents xs)]
+                            [CString True (map xToChar xs) ()]
+                       _ -> concatMap toContents xs
                    where   (x:_) = xs
-    parseContents = P (\x ->
-        case x of
-            (CString _ s _:cs)
-                   -> (Right (map xFromChar s), cs)
-            (CElem (Elem "string" [] [CString _ s _]) _:cs)
-                   -> (Right (map xFromChar s), cs)
-            (CElem (Elem e [] xs) _:cs) | "list" `isPrefixOf` e
-                   -> scanElements xs
-                   where
-                  -- scanElements :: [Content] -> (Either String [a],[Content])
-                     scanElements [] = (Right [], cs)
-                     scanElements es =
-                        case runParser parseContents es of
-                            (Left msg, es') -> (Left (False,msg), es')
-                            (Right y, es') ->
-                                case scanElements es' of
-                                    (Left msg, ds) -> (Left msg, ds)
-                                    (Right ys, ds) -> (Right (y:ys), ds)
-            (CElem (Elem e _ _) pos: cs)
-                   -> (Left (False
-                            ,"Expected a <list-...>, but found a <"++e++"> at\n"
-                            ++ show pos), cs)
-            (CRef r pos: cs)
-                   -> (Left (False
-                            ,"Expected a <list-...>, but found a ref "
-                            ++verbatim r++" at\n"++ show pos), cs)
-            (_:cs) -> ((\ (P p)-> p) parseContents) cs  -- skip comments etc.
-            []     -> (Left (False
-                            ,"Ran out of input XML whilst secondary parsing")
-                      , [])
-        )
-
-instance XmlContent () where
-    toContents ()  = [CElem (Elem "unit" [] []) ()]
-    parseContents = do { element ["unit"]; return () }
-
-instance (XmlContent a, XmlContent b) => XmlContent (a,b) where
-    toContents (a,b) = toContents a ++ toContents b
-    parseContents    = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; return (a,b)
-        }
-
-instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a,b,c) where
-    toContents (a,b,c) = toContents a ++ toContents b ++ toContents c
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; return (a,b,c)
-        }
-
-instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d) =>
-         XmlContent (a,b,c,d) where
-    toContents (a,b,c,d) = toContents a ++ toContents b ++ toContents c
-                           ++ toContents d
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; return (a,b,c,d)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e ) =>
-         XmlContent (a,b,c,d,e) where
-    toContents (a,b,c,d,e) = toContents a ++ toContents b ++ toContents c
-                             ++ toContents d ++ toContents e
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; return (a,b,c,d,e)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f ) =>
-         XmlContent (a,b,c,d,e,f) where
-    toContents (a,b,c,d,e,f) = toContents a ++ toContents b ++ toContents c
-                               ++ toContents d ++ toContents e ++ toContents f
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; return (a,b,c,d,e,f)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g ) =>
-         XmlContent (a,b,c,d,e,f,g) where
-    toContents (a,b,c,d,e,f,g)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; return (a,b,c,d,e,f,g)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h ) =>
-         XmlContent (a,b,c,d,e,f,g,h) where
-    toContents (a,b,c,d,e,f,g,h)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; return (a,b,c,d,e,f,g,h)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
-         , XmlContent i ) =>
-         XmlContent (a,b,c,d,e,f,g,h,i) where
-    toContents (a,b,c,d,e,f,g,h,i)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-          ++ toContents i
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; i <- parseContents
-        ; return (a,b,c,d,e,f,g,h,i)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
-         , XmlContent i, XmlContent j ) =>
-         XmlContent (a,b,c,d,e,f,g,h,i,j) where
-    toContents (a,b,c,d,e,f,g,h,i,j)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-          ++ toContents i ++ toContents j
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; i <- parseContents
-        ; j <- parseContents
-        ; return (a,b,c,d,e,f,g,h,i,j)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
-         , XmlContent i, XmlContent j, XmlContent k ) =>
-         XmlContent (a,b,c,d,e,f,g,h,i,j,k) where
-    toContents (a,b,c,d,e,f,g,h,i,j,k)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-          ++ toContents i ++ toContents j ++ toContents k
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; i <- parseContents
-        ; j <- parseContents
-        ; k <- parseContents
-        ; return (a,b,c,d,e,f,g,h,i,j,k)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l ) =>
-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l) where
-    toContents (a,b,c,d,e,f,g,h,i,j,k,l)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; i <- parseContents
-        ; j <- parseContents
-        ; k <- parseContents
-        ; l <- parseContents
-        ; return (a,b,c,d,e,f,g,h,i,j,k,l)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l
-         , XmlContent m ) =>
-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m) where
-    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
-          ++ toContents m
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; i <- parseContents
-        ; j <- parseContents
-        ; k <- parseContents
-        ; l <- parseContents
-        ; m <- parseContents
-        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l
-         , XmlContent m, XmlContent n ) =>
-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where
-    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
-          ++ toContents m ++ toContents n
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; i <- parseContents
-        ; j <- parseContents
-        ; k <- parseContents
-        ; l <- parseContents
-        ; m <- parseContents
-        ; n <- parseContents
-        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
-        }
-
-instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l
-         , XmlContent m, XmlContent n, XmlContent o ) =>
-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where
-    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
-        = toContents a ++ toContents b ++ toContents c ++ toContents d
-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
-          ++ toContents m ++ toContents n ++ toContents o
-    parseContents = do
-        { a <- parseContents
-        ; b <- parseContents
-        ; c <- parseContents
-        ; d <- parseContents
-        ; e <- parseContents
-        ; f <- parseContents
-        ; g <- parseContents
-        ; h <- parseContents
-        ; i <- parseContents
-        ; j <- parseContents
-        ; k <- parseContents
-        ; l <- parseContents
-        ; m <- parseContents
-        ; n <- parseContents
-        ; o <- parseContents
-        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
-        }
+    parseContents = let (Right (x:_),_) = runParser p [] -- for type of x only
+                        p = case toHType x of
+                              (Prim "Char" _) -> fmap (map xFromChar) $ text
+                              _ -> many parseContents
+                    in p
+        -- comments, PIs, etc, are skipped in the individual element parser.
 
 instance (XmlContent a) => XmlContent (Maybe a) where
-    toContents m   = [mkElem m (maybe [] toContents m)]
-    parseContents = do
-        { e <- elementWith (flip isPrefixOf) ["maybe"]
-        ; case e of (Elem _ [] []) -> return Nothing
-                    (Elem _ [] _)  -> fmap Just (interior e parseContents)
-        }
-
-instance (XmlContent a, XmlContent b) => XmlContent (Either a b) where
-    toContents v@(Left aa) =
-        [mkElemC (showConstr 0 (toHType v)) (toContents aa)]
-    toContents v@(Right ab) =
-        [mkElemC (showConstr 1 (toHType v)) (toContents ab)]
-    parseContents =
-        (inElementWith (flip isPrefixOf) "Left"  $ fmap Left  parseContents)
-          `onFail`
-        (inElementWith (flip isPrefixOf) "Right" $ fmap Right parseContents)
-
---    do{ e@(Elem t [] _) <- element ["Left","Right"]
---      ; case t of
---          _ | "Left"  `isPrefixOf` t -> fmap Left  (interior e parseContents)
---            | "Right" `isPrefixOf` t -> fmap Right (interior e parseContents)
---      }
-
-
-------------------------------------------------------------------------
--- Useful auxiliaries for "fromAttributes"
-------------------------------------------------------------------------
-
--- | If an attribute is defaultable, then it either takes the default
---   value (which is omitted from the output), or a non-default value
---   (which obviously must be printed).
-data Defaultable a  = Default a    | NonDefault a    deriving (Eq,Show)
-
-searchMaybe :: (a -> Maybe b) -> [a] -> Maybe b
-searchMaybe _ [] = Nothing
-searchMaybe f (x:xs) =
-    let fx = f x in
-    case fx of
-      Nothing  -> searchMaybe f xs
-      (Just _) -> fx
-
-maybeToAttr :: (String->a->Maybe Attribute) -> String -> Maybe a
-               -> Maybe Attribute
-maybeToAttr _ _ Nothing  = Nothing
-maybeToAttr to n (Just v) = to n v
-
-defaultToAttr :: (String->a->Maybe Attribute) -> String -> Defaultable a
-                 -> Maybe Attribute
-defaultToAttr _ _ (Default _)  = Nothing
-defaultToAttr to n (NonDefault v) = to n v
-
-definiteA :: (String->Attribute->Maybe a) -> String -> String
-             -> [Attribute] -> a
-definiteA from tag at as =
-    case searchMaybe (from at) as of
-      Nothing  -> error ("missing attribute "++at++" in tag <"++tag++">")
-      (Just a) -> a
-
-defaultA :: (String->Attribute->Maybe a) -> a -> String
-            -> [Attribute] -> Defaultable a
-defaultA from def at as =
-    case searchMaybe (from at) as of
-      Nothing  -> Default def
-      (Just a) -> NonDefault a
-
-possibleA :: (String->Attribute->Maybe a) -> String -> [Attribute] -> Maybe a
-possibleA from at as = searchMaybe (from at) as
-
-fromAttrToStr :: String -> Attribute -> Maybe String
-fromAttrToStr n (n0,v)
-        | n == n0   = Just (attr2str v)
-        | otherwise = Nothing
-
-toAttrFrStr   :: String -> String -> Maybe Attribute
-toAttrFrStr n v = Just (n, str2attr v)
-
-str2attr :: String -> AttValue
-str2attr s =
-    let f t =
-          let (l,r) = span (\c-> not (elem c "\"&<>'")) t
-          in if null r then [Left l]
-             else Left l: Right (g (head r)): f (tail r)
-        g '"'  = RefEntity "quot"
-        g '&'  = RefEntity "amp"
-        g '<'  = RefEntity "lt"
-        g '>'  = RefEntity "gt"
-        g '\'' = RefEntity "apos"
-    in AttValue (f s)
-
-attr2str :: AttValue -> String          -- really needs symbol table
-attr2str (AttValue xs) =
-    let f (Left s) = s
-        f (Right (RefChar i))        = [chr i]
-        f (Right (RefEntity "quot")) = "\""
-        f (Right (RefEntity "amp"))  = "&"
-        f (Right (RefEntity "lt"))   = "<"
-        f (Right (RefEntity "gt"))   = ">"
-        f (Right (RefEntity "apos")) = "'"
-        f (Right _)                  = "*"  -- Ooops, ST needed here.
-    in concatMap f xs
-
-------------------------------------------------------------------------
---  New content-model types
-------------------------------------------------------------------------
-
-{-
-data OneOf2 a b
-data OneOf3 a b c
-data OneOf4 a b c d
-    ... etc are now defined (with instances) in module OneOfN.
--}
-
--- | A type corresponding to XML's ANY contentspec.
---   It is either a list of unconverted xml 'Content'
---   or some 'XmlContent'-able value.
---
--- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.
--- Note: The Show instance for 'UnConverted' uses 'verbatim'.
-data ANYContent = forall a . (XmlContent a, Show a) => ANYContent a
-                | UnConverted [Content Posn]
-
-instance Show ANYContent where
-    show (UnConverted c) = "UnConverted " ++ (show $ map verbatim c)
-    show (ANYContent a)  = "ANYContent " ++ (show a)
-
-instance Eq ANYContent where
-    a == b = show a == show b
-
--- | The List1 type represents lists with at least one element.
---   It is required for DTD content models that use + as a modifier.
-data List1 a = NonEmpty [a]  deriving (Eq, Show)
-
-
-------------------------------------------------------------------------
---  Instances for new content-model types
-------------------------------------------------------------------------
-instance (HTypeable a) => HTypeable (List1 a) where
-    toHType m  = Defined "List1" [hx]
-                         [Constr "NonEmpty" [hx] [List hx] {-Nothing-}]
-               where (NonEmpty x) = m
-                     hx = toHType x
-instance (XmlContent a) => XmlContent (List1 a) where
-    toContents (NonEmpty xs) = concatMap toContents xs
-    parseContents = fmap NonEmpty $ many1 parseContents
-
-instance HTypeable ANYContent where
-    toHType _      = Prim "ANYContent" "ANY"
-instance XmlContent ANYContent where
-    toContents (ANYContent a)  = toContents a
-    toContents (UnConverted s) = map (fmap (const ())) s
-    parseContents = P (\cs -> (Right (UnConverted cs), []))
+    toContents m  = maybe [] toContents m
+    parseContents = optional parseContents
 
-------------------------------------------------------------------------
---
 ------------------------------------------------------------------------
diff --git a/src/Text/XML/HaXml/XmlContent/Haskell.hs b/src/Text/XML/HaXml/XmlContent/Haskell.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/XML/HaXml/XmlContent/Haskell.hs
@@ -0,0 +1,252 @@
+-- | The class 'XmlContent' is a kind of replacement for Read and Show:
+--   it provides conversions between a generic XML tree representation
+--   and your own more specialised typeful Haskell data trees.
+--
+--   If you are starting with a set of Haskell datatypes, use DrIFT to
+--   derive instances of this class for you:
+--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT
+--   and use the current module for instances of the standard Haskell
+--   datatypes list, Maybe, and so on.
+--
+--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
+--   to generate both the Haskell types and the corresponding instances,
+--   but _do_not_ use the current module for instances: use
+--   Text.XML.HaXml.XmlContent instead.
+
+module Text.XML.HaXml.XmlContent.Haskell
+  (
+  -- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.
+    module Text.XML.HaXml.XmlContent.Parser
+  -- * Instances (only) for the XmlContent class, for datatypes that
+  --   originated in Haskell, rather than from a DTD definition.
+--  , module Text.XML.HaXml.XmlContent.Haskell
+
+  -- * Whole-document conversion functions
+  , toXml, fromXml
+  , readXml, showXml, fpsShowXml
+  , fReadXml, fWriteXml, fpsWriteXml
+  , hGetXml,  hPutXml, fpsHPutXml
+
+  ) where
+
+import IO
+import List (isPrefixOf, isSuffixOf)
+import qualified Text.XML.HaXml.ByteStringPP as FPS (document)
+import qualified Data.ByteString.Lazy.Char8 as FPS
+
+import Text.PrettyPrint.HughesPJ (render)
+import Text.ParserCombinators.Poly
+
+import Text.XML.HaXml.Types
+import Text.XML.HaXml.TypeMapping
+import Text.XML.HaXml.Posn     (Posn, posInNewCxt)
+import Text.XML.HaXml.Pretty   (document)
+import Text.XML.HaXml.Parse    (xmlParse)
+import Text.XML.HaXml.Verbatim (Verbatim(verbatim))
+import Text.XML.HaXml.XmlContent.Parser
+
+
+        -- probably want to write DTD separately from value, and have
+        -- easy ways to combine DTD + value into a document, or write
+        -- them to separate files.
+
+-- | Read an XML document from a file and convert it to a fully-typed
+--   Haskell value.
+fReadXml  :: XmlContent a => FilePath -> IO a
+fReadXml fp = do
+    f <- ( if fp=="-" then return stdin
+           else openFile fp ReadMode )
+    x <- hGetContents f
+    let (Document _ _ y _) = xmlParse fp x
+        y' = CElem y (posInNewCxt fp Nothing)
+    either fail return (fst (runParser parseContents [y']))
+
+-- | Write a fully-typed Haskell value to the given file as an XML
+--   document.
+fWriteXml :: XmlContent a => FilePath -> a -> IO ()
+fWriteXml fp x = do
+    f <- ( if fp=="-" then return stdout
+           else openFile fp WriteMode )
+    hPutXml f False x
+    hClose f
+
+-- | Write any Haskell value to the given file as an XML document,
+--   using the FastPackedString interface (output will not be prettified).
+fpsWriteXml :: XmlContent a => FilePath -> a -> IO ()
+fpsWriteXml fp x = do
+    f <- ( if fp=="-" then return stdout
+           else openFile fp WriteMode )
+    fpsHPutXml f False x
+    hClose f
+
+-- | Read a fully-typed XML document from a string.
+readXml :: XmlContent a => String -> Either String a
+readXml s =
+    let (Document _ _ y _) = xmlParse "string input" s in
+    fst (runParser parseContents
+                   [CElem y (posInNewCxt "string input" Nothing)])
+
+-- | Convert a fully-typed XML document to a string (without DTD).
+showXml :: XmlContent a => Bool -> a -> String
+showXml dtd x =
+    case toContents x of
+      [CElem _ _] -> (render . document . toXml dtd) x
+      _ -> ""
+
+-- | Convert a fully-typed XML document to a ByteString (without DTD).
+fpsShowXml :: XmlContent a => Bool -> a -> FPS.ByteString
+fpsShowXml dtd x =
+    case toContents x of
+      [CElem _ _] -> (FPS.document . toXml dtd) x
+      _ -> FPS.empty
+
+
+-- | Convert a fully-typed XML document to a string (with or without DTD).
+toXml :: XmlContent a => Bool -> a -> Document ()
+toXml dtd value =
+    let ht = toHType value in
+    Document (Prolog (Just (XMLDecl "1.0" Nothing Nothing))
+                     [] (if dtd then Just (toDTD ht) else Nothing) [])
+             emptyST
+             ( case (ht, toContents value) of
+                 (Tuple _, cs)       -> Elem (showHType ht "") [] cs
+                 (Defined _ _ _, cs) -> Elem (showHType ht "-XML") [] cs
+                 (_, [CElem e ()])   -> e )
+             []
+
+-- | Read a Haskell value from an XML document, ignoring the DTD and
+--   using the Haskell result type to determine how to parse it.
+fromXml :: XmlContent a => Document Posn -> Either String a
+fromXml (Document _ _ e@(Elem n _ cs) _)
+  | "tuple" `isPrefixOf` n = fst (runParser parseContents cs)
+  | "-XML"  `isSuffixOf` n = fst (runParser parseContents cs)
+  | otherwise = fst (runParser parseContents
+                               [CElem e (posInNewCxt "document" Nothing)])
+
+
+-- | Read a fully-typed XML document from a file handle.
+hGetXml :: XmlContent a => Handle -> IO a
+hGetXml h = do
+    x <- hGetContents h
+    let (Document _ _ y _) = xmlParse "file handle" x
+    either fail return
+           (fst (runParser parseContents
+                           [CElem y (posInNewCxt "file handle" Nothing)]))
+
+-- | Write a fully-typed XML document to a file handle.
+hPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()
+hPutXml h dtd x = do
+    (hPutStrLn h . render . document . toXml dtd) x
+
+-- | Write a fully-typed XML document to a file handle, using the
+--   FastPackedString interface (output will not be prettified).
+fpsHPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()
+fpsHPutXml h dtd x = do
+    (FPS.hPut h . FPS.document . toXml dtd) x
+
+
+------------------------------------------------------------------------
+-- Instances for all the standard basic datatypes.
+-- These are for Haskell datatypes being derived to go to XML.
+-- DtdToHaskell does not use these instances.
+------------------------------------------------------------------------
+
+instance XmlContent Bool where
+    toContents b   = [CElem (Elem "bool" [mkAttr "value" (show b)] []) ()]
+    parseContents = do { e <- element ["bool"] ; return (attval e) }
+
+instance XmlContent Int where
+    toContents i   = [CElem (Elem "int" [mkAttr "value" (show i)] []) ()]
+    parseContents = do { e <- element ["int"] ; return (attval e) }
+
+instance XmlContent Integer where
+    toContents i   = [CElem (Elem "integer" [mkAttr "value" (show i)] []) ()]
+    parseContents = do { e <- element ["integer"] ; return (attval e) }
+
+instance XmlContent Float where
+    toContents i   = [CElem (Elem "float" [mkAttr "value" (show i)] []) ()]
+    parseContents = do { e <- element ["float"] ; return (attval e) }
+
+instance XmlContent Double where
+    toContents i   = [CElem (Elem "double" [mkAttr "value" (show i)] []) ()]
+    parseContents = do { e <- element ["double"] ; return (attval e) }
+
+instance XmlContent Char where
+    -- NOT in a string
+    toContents c   = [CElem (Elem "char" [mkAttr "value" [c]] []) ()]
+    parseContents = do { (Elem _ [("value",(AttValue [Left [c]]))] [])
+                             <- element ["char"]
+                       ; return c
+                       }
+    -- Only defined for Char and no other types:
+    xToChar   = id
+    xFromChar = id
+
+instance XmlContent a => XmlContent [a] where
+    toContents xs  = case toHType x of
+                       (Prim "Char" _) ->
+                            [mkElem "string" [CString True (map xToChar xs) ()]]
+                       _ -> [mkElem xs (concatMap toContents xs)]
+                   where   (x:_) = xs
+    parseContents = P (\x ->
+        case x of
+            (CString _ s _:cs)
+                   -> (Right (map xFromChar s), cs)
+            (CElem (Elem "string" [] [CString _ s _]) _:cs)
+                   -> (Right (map xFromChar s), cs)
+            (CElem (Elem e [] xs) _:cs) | "list" `isPrefixOf` e
+                   -> scanElements xs
+                   where
+                  -- scanElements :: [Content] -> (Either String [a],[Content])
+                     scanElements [] = (Right [], cs)
+                     scanElements es =
+                        case runParser parseContents es of
+                            (Left msg, es') -> (Left (False,msg), es')
+                            (Right y, es') ->
+                                case scanElements es' of
+                                    (Left msg, ds) -> (Left msg, ds)
+                                    (Right ys, ds) -> (Right (y:ys), ds)
+            (CElem (Elem e _ _) pos: cs)
+                   -> (Left (False
+                            ,"Expected a <list-...>, but found a <"++e++"> at\n"
+                            ++ show pos), cs)
+            (CRef r pos: cs)
+                   -> (Left (False
+                            ,"Expected a <list-...>, but found a ref "
+                            ++verbatim r++" at\n"++ show pos), cs)
+            (_:cs) -> ((\ (P p)-> p) parseContents) cs  -- skip comments etc.
+            []     -> (Left (False
+                            ,"Ran out of input XML whilst secondary parsing")
+                      , [])
+        )
+
+instance XmlContent () where
+    toContents ()  = [CElem (Elem "unit" [] []) ()]
+    parseContents = do { element ["unit"]; return () }
+
+
+instance (XmlContent a) => XmlContent (Maybe a) where
+    toContents m   = [mkElem m (maybe [] toContents m)]
+    parseContents = do
+        { e <- elementWith (flip isPrefixOf) ["maybe"]
+        ; case e of (Elem _ [] []) -> return Nothing
+                    (Elem _ [] _)  -> fmap Just (interior e parseContents)
+        }
+
+instance (XmlContent a, XmlContent b) => XmlContent (Either a b) where
+    toContents v@(Left aa) =
+        [mkElemC (showConstr 0 (toHType v)) (toContents aa)]
+    toContents v@(Right ab) =
+        [mkElemC (showConstr 1 (toHType v)) (toContents ab)]
+    parseContents =
+        (inElementWith (flip isPrefixOf) "Left"  $ fmap Left  parseContents)
+          `onFail`
+        (inElementWith (flip isPrefixOf) "Right" $ fmap Right parseContents)
+
+--    do{ e@(Elem t [] _) <- element ["Left","Right"]
+--      ; case t of
+--          _ | "Left"  `isPrefixOf` t -> fmap Left  (interior e parseContents)
+--            | "Right" `isPrefixOf` t -> fmap Right (interior e parseContents)
+--      }
+
+------------------------------------------------------------------------
diff --git a/src/Text/XML/HaXml/XmlContent/Parser.hs b/src/Text/XML/HaXml/XmlContent/Parser.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/XML/HaXml/XmlContent/Parser.hs
@@ -0,0 +1,690 @@
+{-# LANGUAGE ExistentialQuantification #-}
+
+-- | The class 'XmlContent' is a kind of replacement for Read and Show:
+--   it provides conversions between a generic XML tree representation
+--   and your own more specialised typeful Haskell data trees.
+--
+--   If you are starting with a set of Haskell datatypes, use DrIFT to
+--   derive instances of this class for you:
+--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT
+--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
+--   to generate both the Haskell types and the corresponding instances.
+--
+--   This unified class interface replaces two previous (somewhat similar)
+--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have
+--   separate classes depending on how you originally defined your datatypes.
+--   However, some instances for basic types like lists will depend on which 
+--   direction you are using.  See Text.XML.HaXml.XmlContent and
+--   Text.XML.HaXml.XmlContent.Haskell.
+
+--   The methods 'toContents' and 'parseContents' convert a value to and from
+--   a generic internal representation of an XML document /without/ a DTD.
+--   The functions 'toXml' and 'fromXml' convert a value to and from a generic
+--   internal representation of an XML document /including/ a DTD.
+--   The functions 'readXml' and 'showXml' convert to and from Strings.
+--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from
+--   the given filenames.
+--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from
+--   the given file handles.
+--   (See the type signatures.)
+--
+
+module Text.XML.HaXml.XmlContent.Parser
+  ( -- * Re-export the relevant set of generic XML document type definitions
+    Document(..)
+  , Element(..)
+  , ElemTag(..)
+  , Content(..)
+  , Attribute()
+  , AttValue(..)
+  , Prolog(..)
+  , Reference(..)
+  -- * The enabling classes, that define parsing\/unparsing between Haskell
+  --   datatypes and a generic XML representation.
+  , XmlContent(..)
+  , XmlAttributes(..)
+  , XmlAttrType(..)
+  -- ** Auxiliaries for writing parsers in the XmlContent class
+  , module Text.ParserCombinators.Poly
+  , XMLParser
+  , content, posnElement, element, interior, inElement, text, attributes
+  , posnElementWith, elementWith, inElementWith
+  , choice, definite -- ???
+  -- ** Auxiliaries for generating in the XmlContent class
+  , mkElem, mkElemC, mkAttr
+  , toText, toCData
+  -- ** Auxiliaries for the attribute-related classes
+  , maybeToAttr, defaultToAttr
+  , definiteA, defaultA, possibleA, fromAttrToStr, toAttrFrStr
+  , Defaultable(..)
+  , str2attr, attr2str, attval
+  , catMaybes   -- re-exported from Maybe
+  -- * Explicit representation of Haskell datatype information
+  --   (for conversion to a DTD)
+  , module Text.XML.HaXml.TypeMapping
+  -- * Types useful for some content models
+  , List1(..)
+  , ANYContent(..)
+  ) where
+
+--import IO
+import Maybe (catMaybes)
+import Char  (chr, isSpace)
+import List  (isPrefixOf, isSuffixOf)
+
+import Text.PrettyPrint.HughesPJ (render)
+import qualified Text.XML.HaXml.Pretty as PP
+
+import Text.XML.HaXml.Types
+import Text.XML.HaXml.TypeMapping
+import Text.XML.HaXml.Posn     (Posn, posInNewCxt)
+import Text.XML.HaXml.Pretty   (document)
+import Text.XML.HaXml.Parse    (xmlParse)
+import Text.XML.HaXml.Verbatim (Verbatim(verbatim))
+import qualified Text.XML.HaXml.ByteStringPP as FPS (document)
+import qualified Data.ByteString.Lazy.Char8 as FPS
+
+import Text.ParserCombinators.Poly
+
+--  #define DEBUG
+
+#if defined(DEBUG)
+import Debug.Trace(trace)
+debug :: a -> String -> a
+v `debug` s = trace s v
+#else
+debug :: t -> t1 -> t
+v `debug` _ = v
+#endif
+
+
+------------------------------------------------------------------------
+-- | Read a single attribute called "value".
+attval :: (Read a) => Element i -> a
+attval (Elem _ [("value",v@(AttValue _))] []) = read (show v)
+
+-- | Generate a single attribute.
+mkAttr :: String -> String -> Attribute
+mkAttr n v = (n, AttValue [Left v])
+
+-- | Generate an element with no attributes, named for its HType.
+mkElem :: XmlContent a => a -> [Content ()] -> Content ()
+mkElem x cs  = CElem (Elem (showHType (toHType x) "") [] cs) ()
+
+-- | Generate an element with no attributes, named directly.
+mkElemC :: String -> [Content ()] -> Content ()
+mkElemC x cs = CElem (Elem x [] cs) ()
+
+-- | Turn a simple string into XML text.
+toText :: String -> [Content ()]
+toText s = [CString False s ()]
+
+-- | Turn a string into an XML CDATA section.
+--   (i.e. special characters like '&' are preserved without interpretation.)
+toCData :: String -> [Content ()]
+toCData s = [CString True s ()]
+
+
+------------------------------------------------------------------------
+
+-- | We need a parsing monad for reading generic XML Content into specific
+--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly
+--   ones, where the input token type is fixed as XML Content.
+type XMLParser a = Parser (Content Posn) a
+
+
+------------------------------------------------------------------------
+-- Some useful parsing combinators
+------------------------------------------------------------------------
+
+-- | The most primitive combinator for XMLParser - get one content item.
+content :: String -> XMLParser (Content Posn)
+content word = next `adjustErr` (++" when expecting "++word)
+
+-- | Get the next content element, checking that it has one of the required
+--   tags, using the given matching function.
+--   (Skips over comments and whitespace, rejects text and refs.
+--    Also returns position of element.)
+posnElementWith :: (String->String->Bool) -> [String]
+                   -> XMLParser (Posn, Element Posn)
+posnElementWith match tags = do
+    { c <- content (formatted tags)
+    ; case c of
+          CElem e@(Elem t _ _) pos
+              | any (match t) tags -> return (pos, e)
+              | otherwise          -> fail ("Found a <"++t++">, but expected "
+                                           ++formatted tags++"\nat "++show pos)
+          CString b s pos
+              | not b && all isSpace s -> posnElementWith match tags
+                                                        -- ignore blank space
+              | otherwise -> fail ("Found text content, but expected "
+                                  ++formatted tags++"\ntext is: "++s
+                                  ++"\nat "++show pos)
+          CRef r pos -> fail ("Found reference, but expected "
+                             ++formatted tags++"\nreference is: "++verbatim r
+                             ++"\nat "++show pos)
+          CMisc _ _ -> posnElementWith match tags  -- skip comments, PIs, etc.
+    }
+  where
+    formatted [t]  = "a <"++t++">"
+    formatted tgs = "one of"++ concatMap (\t->" <"++t++">") tgs
+
+-- | A specialisation of @posnElementWith (==)@.
+posnElement :: [String] -> XMLParser (Posn, Element Posn)
+posnElement = posnElementWith (==)
+
+-- | Get the next content element, checking that it has one of the required
+--   tags.  (Skips over comments and whitespace, rejects text and refs.)
+element :: [String] -> XMLParser (Element Posn)
+element tags = fmap snd (posnElement tags)
+                                `debug` ("Element: "++unwords tags++"\n")
+
+-- | Like element, only permits a more flexible match against the tagname.
+elementWith :: (String->String->Bool) -> [String] -> XMLParser (Element Posn)
+elementWith match tags = fmap snd (posnElementWith match tags)
+                                `debug` ("Element: "++unwords tags++"\n")
+
+-- | Run an XMLParser on the contents of the given element (i.e. not on the
+--   current monadic content sequence), checking that the contents are
+--   exhausted, before returning the calculated value within the current
+--   parser context.
+interior :: Element Posn -> XMLParser a -> XMLParser a
+interior (Elem e _ cs) p =
+    case runParser p cs of
+        (Left msg, _) -> fail msg
+        (Right x, []) -> return x
+        (Right x, ds@(d:_))
+            | all onlyMisc ds -> return x
+            | otherwise       -> fail ("Too many elements inside <"++e++"> at\n"
+                                      ++show (info d)++"\n"
+                                      ++"Found excess: "++verbatim d)
+  where onlyMisc (CMisc _ _) = True
+        onlyMisc (CString False s _) | all isSpace s = True
+        onlyMisc _ = False
+
+-- | A combination of element + interior.
+inElement :: String -> XMLParser a -> XMLParser a
+inElement tag p = do { e <- element [tag]; commit (interior e p) }
+
+-- | A combination of elementWith + interior.
+inElementWith :: (String->String->Bool) -> String -> XMLParser a -> XMLParser a
+inElementWith match tag p = do { e <- elementWith match [tag]
+                               ; commit (interior e p) }
+
+-- | Do some parsing of the attributes of the given element
+attributes :: XmlAttributes a => Element Posn -> XMLParser a
+attributes (Elem _ as _) = return (fromAttrs as)
+
+-- | 'text' is a counterpart to 'element', parsing text content if it
+--   exists.  Adjacent text and references are coalesced.
+text :: XMLParser String
+text = text' []
+  where text' acc =
+          do { c <- content "plain text"
+             ; case c of
+                 CString _ s _        -> text' (s:acc)
+                 CRef (RefChar s) _   -> text' (("&#"++show s++";") :acc)
+                 CRef (RefEntity s) _ -> text' (('&':s++";"):acc)
+                 CMisc _ _            -> text' acc
+                 CElem _ _         -> do { reparse [c] -- put it back!
+                                         ; if null acc then fail "empty string"
+                                           else return (concat (reverse acc))
+                                         }
+             }
+          `onFail` ( if null acc then fail "empty string"
+                     else return (concat (reverse acc)) )
+
+
+-- | 'choice f p' means if parseContents succeeds, apply f to the result,
+--   otherwise use the continuation parser.
+choice :: XmlContent a => (a -> b) -> XMLParser b -> XMLParser b
+choice cons (P other) =
+    P (\cs-> case runParser parseContents cs of
+                 (Left _, _)  -> other cs
+                 (Right x, cs') -> (Right (cons x), cs'))
+
+--choice cons other = fmap cons parseContents `onFail` other
+
+-- | not sure this is needed now.   'definite p' previously ensured that
+--   an element was definitely present.  Now I think the monad might take
+--   care of that for us.
+definite :: XmlContent a => XMLParser a -> String -> String -> XMLParser a
+definite p inner tag = P (\cs-> case runParser p cs of
+                                   (Left _, cs') -> (Left (False,msg'), cs')
+                                   (Right x, cs')  -> (Right x,   cs'))
+  where msg' = "content error: expected "++inner++" inside <"++tag
+               ++"> element\n"
+
+------------------------------------------------------------------------
+
+-- | The @XmlContent@ class promises that an XML Content element can be
+--   converted to and from a Haskell value.
+class HTypeable a => XmlContent a where
+    -- | Convert from XML to Haskell
+    parseContents :: XMLParser a
+    -- | Convert from Haskell to XML
+    toContents    :: a -> [Content ()]
+
+    -- | Dummy functions (for most types): used /only/ in the Char instance
+    --   for coercing lists of Char into String.
+    xToChar       :: a -> Char
+    xFromChar     :: Char -> a
+    xToChar        = error "HaXml.XmlContent.xToChar used in error"
+    xFromChar      = error "HaXml.XmlContent.xFromChar used in error"
+
+-- | The @XmlAttributes@ class promises that a list of XML tag attributes
+--   can be converted to and from a Haskell value.
+class XmlAttributes a where
+    fromAttrs :: [Attribute] -> a
+    toAttrs   :: a -> [Attribute]
+-- | The @XmlAttrType@ class promises that an attribute taking an XML
+--   enumerated type can be converted to and from a Haskell value.
+class XmlAttrType a where
+    fromAttrToTyp :: String -> Attribute -> Maybe a
+    toAttrFrTyp   :: String -> a -> Maybe Attribute
+
+
+------------------------------------------------------------------------
+-- Instances for some of the standard basic datatypes.
+-- Both DtdToHaskell and Haskell2Xml share these instances.
+------------------------------------------------------------------------
+
+instance (XmlContent a, XmlContent b) => XmlContent (a,b) where
+    toContents (a,b) = toContents a ++ toContents b
+    parseContents    = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; return (a,b)
+        }
+
+instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a,b,c) where
+    toContents (a,b,c) = toContents a ++ toContents b ++ toContents c
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; return (a,b,c)
+        }
+
+instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d) =>
+         XmlContent (a,b,c,d) where
+    toContents (a,b,c,d) = toContents a ++ toContents b ++ toContents c
+                           ++ toContents d
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; return (a,b,c,d)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e ) =>
+         XmlContent (a,b,c,d,e) where
+    toContents (a,b,c,d,e) = toContents a ++ toContents b ++ toContents c
+                             ++ toContents d ++ toContents e
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; return (a,b,c,d,e)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f ) =>
+         XmlContent (a,b,c,d,e,f) where
+    toContents (a,b,c,d,e,f) = toContents a ++ toContents b ++ toContents c
+                               ++ toContents d ++ toContents e ++ toContents f
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; return (a,b,c,d,e,f)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g ) =>
+         XmlContent (a,b,c,d,e,f,g) where
+    toContents (a,b,c,d,e,f,g)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; return (a,b,c,d,e,f,g)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h ) =>
+         XmlContent (a,b,c,d,e,f,g,h) where
+    toContents (a,b,c,d,e,f,g,h)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; return (a,b,c,d,e,f,g,h)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
+         , XmlContent i ) =>
+         XmlContent (a,b,c,d,e,f,g,h,i) where
+    toContents (a,b,c,d,e,f,g,h,i)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+          ++ toContents i
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; i <- parseContents
+        ; return (a,b,c,d,e,f,g,h,i)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
+         , XmlContent i, XmlContent j ) =>
+         XmlContent (a,b,c,d,e,f,g,h,i,j) where
+    toContents (a,b,c,d,e,f,g,h,i,j)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+          ++ toContents i ++ toContents j
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; i <- parseContents
+        ; j <- parseContents
+        ; return (a,b,c,d,e,f,g,h,i,j)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
+         , XmlContent i, XmlContent j, XmlContent k ) =>
+         XmlContent (a,b,c,d,e,f,g,h,i,j,k) where
+    toContents (a,b,c,d,e,f,g,h,i,j,k)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+          ++ toContents i ++ toContents j ++ toContents k
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; i <- parseContents
+        ; j <- parseContents
+        ; k <- parseContents
+        ; return (a,b,c,d,e,f,g,h,i,j,k)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l ) =>
+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l) where
+    toContents (a,b,c,d,e,f,g,h,i,j,k,l)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; i <- parseContents
+        ; j <- parseContents
+        ; k <- parseContents
+        ; l <- parseContents
+        ; return (a,b,c,d,e,f,g,h,i,j,k,l)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l
+         , XmlContent m ) =>
+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m) where
+    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
+          ++ toContents m
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; i <- parseContents
+        ; j <- parseContents
+        ; k <- parseContents
+        ; l <- parseContents
+        ; m <- parseContents
+        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l
+         , XmlContent m, XmlContent n ) =>
+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where
+    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
+          ++ toContents m ++ toContents n
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; i <- parseContents
+        ; j <- parseContents
+        ; k <- parseContents
+        ; l <- parseContents
+        ; m <- parseContents
+        ; n <- parseContents
+        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
+        }
+
+instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d
+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h
+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l
+         , XmlContent m, XmlContent n, XmlContent o ) =>
+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where
+    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
+        = toContents a ++ toContents b ++ toContents c ++ toContents d
+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h
+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l
+          ++ toContents m ++ toContents n ++ toContents o
+    parseContents = do
+        { a <- parseContents
+        ; b <- parseContents
+        ; c <- parseContents
+        ; d <- parseContents
+        ; e <- parseContents
+        ; f <- parseContents
+        ; g <- parseContents
+        ; h <- parseContents
+        ; i <- parseContents
+        ; j <- parseContents
+        ; k <- parseContents
+        ; l <- parseContents
+        ; m <- parseContents
+        ; n <- parseContents
+        ; o <- parseContents
+        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
+        }
+
+
+------------------------------------------------------------------------
+-- Useful auxiliaries for "fromAttributes"
+------------------------------------------------------------------------
+
+-- | If an attribute is defaultable, then it either takes the default
+--   value (which is omitted from the output), or a non-default value
+--   (which obviously must be printed).
+data Defaultable a  = Default a    | NonDefault a    deriving (Eq,Show)
+
+searchMaybe :: (a -> Maybe b) -> [a] -> Maybe b
+searchMaybe _ [] = Nothing
+searchMaybe f (x:xs) =
+    let fx = f x in
+    case fx of
+      Nothing  -> searchMaybe f xs
+      (Just _) -> fx
+
+maybeToAttr :: (String->a->Maybe Attribute) -> String -> Maybe a
+               -> Maybe Attribute
+maybeToAttr _ _ Nothing  = Nothing
+maybeToAttr to n (Just v) = to n v
+
+defaultToAttr :: (String->a->Maybe Attribute) -> String -> Defaultable a
+                 -> Maybe Attribute
+defaultToAttr _ _ (Default _)  = Nothing
+defaultToAttr to n (NonDefault v) = to n v
+
+definiteA :: (String->Attribute->Maybe a) -> String -> String
+             -> [Attribute] -> a
+definiteA from tag at as =
+    case searchMaybe (from at) as of
+      Nothing  -> error ("missing attribute "++at++" in tag <"++tag++">")
+      (Just a) -> a
+
+defaultA :: (String->Attribute->Maybe a) -> a -> String
+            -> [Attribute] -> Defaultable a
+defaultA from def at as =
+    case searchMaybe (from at) as of
+      Nothing  -> Default def
+      (Just a) -> NonDefault a
+
+possibleA :: (String->Attribute->Maybe a) -> String -> [Attribute] -> Maybe a
+possibleA from at as = searchMaybe (from at) as
+
+fromAttrToStr :: String -> Attribute -> Maybe String
+fromAttrToStr n (n0,v)
+        | n == n0   = Just (attr2str v)
+        | otherwise = Nothing
+
+toAttrFrStr   :: String -> String -> Maybe Attribute
+toAttrFrStr n v = Just (n, str2attr v)
+
+str2attr :: String -> AttValue
+str2attr s =
+    let f t =
+          let (l,r) = span (\c-> not (elem c "\"&<>'")) t
+          in if null r then [Left l]
+             else Left l: Right (g (head r)): f (tail r)
+        g '"'  = RefEntity "quot"
+        g '&'  = RefEntity "amp"
+        g '<'  = RefEntity "lt"
+        g '>'  = RefEntity "gt"
+        g '\'' = RefEntity "apos"
+    in AttValue (f s)
+
+attr2str :: AttValue -> String          -- really needs symbol table
+attr2str (AttValue xs) =
+    let f (Left s) = s
+        f (Right (RefChar i))        = [chr i]
+        f (Right (RefEntity "quot")) = "\""
+        f (Right (RefEntity "amp"))  = "&"
+        f (Right (RefEntity "lt"))   = "<"
+        f (Right (RefEntity "gt"))   = ">"
+        f (Right (RefEntity "apos")) = "'"
+        f (Right _)                  = "*"  -- Ooops, ST needed here.
+    in concatMap f xs
+
+------------------------------------------------------------------------
+--  New content-model types
+------------------------------------------------------------------------
+
+{-
+data OneOf2 a b
+data OneOf3 a b c
+data OneOf4 a b c d
+    ... etc are now defined (with instances) in module OneOfN.
+-}
+
+-- | A type corresponding to XML's ANY contentspec.
+--   It is either a list of unconverted xml 'Content'
+--   or some 'XmlContent'-able value.
+--
+-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.
+-- Note: The Show instance for 'UnConverted' uses 'verbatim'.
+data ANYContent = forall a . (XmlContent a, Show a) => ANYContent a
+                | UnConverted [Content Posn]
+
+instance Show ANYContent where
+    show (UnConverted c) = "UnConverted " ++ (show $ map verbatim c)
+    show (ANYContent a)  = "ANYContent " ++ (show a)
+
+instance Eq ANYContent where
+    a == b = show a == show b
+
+-- | The List1 type represents lists with at least one element.
+--   It is required for DTD content models that use + as a modifier.
+data List1 a = NonEmpty [a]  deriving (Eq, Show)
+
+
+------------------------------------------------------------------------
+--  Instances for new content-model types
+------------------------------------------------------------------------
+instance (HTypeable a) => HTypeable (List1 a) where
+    toHType m  = Defined "List1" [hx]
+                         [Constr "NonEmpty" [hx] [List hx] {-Nothing-}]
+               where (NonEmpty x) = m
+                     hx = toHType x
+instance (XmlContent a) => XmlContent (List1 a) where
+    toContents (NonEmpty xs) = concatMap toContents xs
+    parseContents = fmap NonEmpty $ many1 parseContents
+
+instance HTypeable ANYContent where
+    toHType _      = Prim "ANYContent" "ANY"
+instance XmlContent ANYContent where
+    toContents (ANYContent a)  = toContents a
+    toContents (UnConverted s) = map (fmap (const ())) s
+    parseContents = P (\cs -> (Right (UnConverted cs), []))
+
+------------------------------------------------------------------------
+--
+------------------------------------------------------------------------
