diff --git a/Version.mk b/Version.mk
--- a/Version.mk
+++ b/Version.mk
@@ -2,6 +2,6 @@
 # Version numbering for HXT
 
 SOFTWARE	= hxt
-VERSION		= 8.0.0
-LASTVERSION	= 7.5
+VERSION		= 8.1.0
+LASTVERSION	= 8.0.1
 DIST_NAME	= $(SOFTWARE)-$(VERSION)
diff --git a/doc/hdoc/Control-Arrow-ArrowIO.html b/doc/hdoc/Control-Arrow-ArrowIO.html
--- a/doc/hdoc/Control-Arrow-ArrowIO.html
+++ b/doc/hdoc/Control-Arrow-ArrowIO.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ArrowIO.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-ArrowIf.html b/doc/hdoc/Control-Arrow-ArrowIf.html
--- a/doc/hdoc/Control-Arrow-ArrowIf.html
+++ b/doc/hdoc/Control-Arrow-ArrowIf.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ArrowIf.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-ArrowList.html b/doc/hdoc/Control-Arrow-ArrowList.html
--- a/doc/hdoc/Control-Arrow-ArrowList.html
+++ b/doc/hdoc/Control-Arrow-ArrowList.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ArrowList.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-ArrowState.html b/doc/hdoc/Control-Arrow-ArrowState.html
--- a/doc/hdoc/Control-Arrow-ArrowState.html
+++ b/doc/hdoc/Control-Arrow-ArrowState.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ArrowState.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-ArrowStrict.html b/doc/hdoc/Control-Arrow-ArrowStrict.html
--- a/doc/hdoc/Control-Arrow-ArrowStrict.html
+++ b/doc/hdoc/Control-Arrow-ArrowStrict.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ArrowStrict.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-ArrowTree.html b/doc/hdoc/Control-Arrow-ArrowTree.html
--- a/doc/hdoc/Control-Arrow-ArrowTree.html
+++ b/doc/hdoc/Control-Arrow-ArrowTree.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ArrowTree.html"
 >Source code</A
@@ -128,6 +128,22 @@
 ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AmkLeaf"
+>mkLeaf</A
+> :: <A HREF="Control-Arrow-ArrowTree.html#t%3ATree"
+>Tree</A
+> t =&gt; b -&gt; a c (t b)</TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AmkTree"
+>mkTree</A
+> :: <A HREF="Control-Arrow-ArrowTree.html#t%3ATree"
+>Tree</A
+> t =&gt; b -&gt; [t b] -&gt; a c (t b)</TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AgetChildren"
 >getChildren</A
 > :: <A HREF="Control-Arrow-ArrowTree.html#t%3ATree"
@@ -366,6 +382,64 @@
 ><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%3AmkLeaf"
+></A
+><B
+>mkLeaf</B
+> :: <A HREF="Control-Arrow-ArrowTree.html#t%3ATree"
+>Tree</A
+> t =&gt; b -&gt; a c (t b)</TD
+><TD CLASS="declbut"
+><A HREF="src/Control-Arrow-ArrowTree.html#mkLeaf"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>construct a leaf
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AmkTree"
+></A
+><B
+>mkTree</B
+> :: <A HREF="Control-Arrow-ArrowTree.html#t%3ATree"
+>Tree</A
+> t =&gt; b -&gt; [t b] -&gt; a c (t b)</TD
+><TD CLASS="declbut"
+><A HREF="src/Control-Arrow-ArrowTree.html#mkTree"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>construct an inner node
+</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
 ><TR
 ><TD CLASS="topdecl"
 ><TABLE CLASS="declbar"
diff --git a/doc/hdoc/Control-Arrow-IOListArrow.html b/doc/hdoc/Control-Arrow-IOListArrow.html
--- a/doc/hdoc/Control-Arrow-IOListArrow.html
+++ b/doc/hdoc/Control-Arrow-IOListArrow.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-IOListArrow.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-IOStateListArrow.html b/doc/hdoc/Control-Arrow-IOStateListArrow.html
--- a/doc/hdoc/Control-Arrow-IOStateListArrow.html
+++ b/doc/hdoc/Control-Arrow-IOStateListArrow.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-IOStateListArrow.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-ListArrow.html b/doc/hdoc/Control-Arrow-ListArrow.html
--- a/doc/hdoc/Control-Arrow-ListArrow.html
+++ b/doc/hdoc/Control-Arrow-ListArrow.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ListArrow.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-ListArrows.html b/doc/hdoc/Control-Arrow-ListArrows.html
--- a/doc/hdoc/Control-Arrow-ListArrows.html
+++ b/doc/hdoc/Control-Arrow-ListArrows.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-ListArrows.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Arrow-StateListArrow.html b/doc/hdoc/Control-Arrow-StateListArrow.html
--- a/doc/hdoc/Control-Arrow-StateListArrow.html
+++ b/doc/hdoc/Control-Arrow-StateListArrow.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Arrow-StateListArrow.html"
 >Source code</A
diff --git a/doc/hdoc/Control-Monad-MonadStateIO.html b/doc/hdoc/Control-Monad-MonadStateIO.html
deleted file mode 100644
--- a/doc/hdoc/Control-Monad-MonadStateIO.html
+++ /dev/null
@@ -1,468 +0,0 @@
-<!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
->Control.Monad.MonadStateIO</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Control-Monad-MonadStateIO.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"
->Control.Monad.MonadStateIO</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->general usefull state monad for a local state and IO
-</P
-><P
->Version : $Id: MonadStateIO.hs,v 1.1 2004<EM
->09</EM
->02 19:11:55 hxml Exp $
-</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"
->newtype</SPAN
-> <A HREF="#t%3AStateIO"
->StateIO</A
-> state res = <A HREF="#v%3ASTIO"
->STIO</A
-> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="recfield"
-><A HREF="#v%3Atrans"
->trans</A
-> :: (state -&gt; IO (res, state))</TD
-></TR
-></TABLE
->}</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aio"
->io</A
-> :: IO a -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtrcState"
->trcState</A
-> :: (state -&gt; String) -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AchangeState"
->changeState</A
-> :: (state -&gt; state) -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetState"
->setState</A
-> :: state -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetState"
->getState</A
-> :: <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Arun"
->run</A
-> :: state -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state res -&gt; IO res</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><SPAN CLASS="keyword"
->newtype</SPAN
-> <A NAME="t%3AStateIO"
-></A
-><B
->StateIO</B
-> state res</TD
-><TD CLASS="declbut"
-><A HREF="src/Control-Monad-MonadStateIO.html#StateIO"
->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="5" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ASTIO"
-></A
-><B
->STIO</B
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="body" COLSPAN="2"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3Atrans"
-></A
-><B
->trans</B
-> :: (state -&gt; IO (res, state))</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:StateIO')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:StateIO" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Monad (<A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state)</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%3Aio"
-></A
-><B
->io</B
-> :: IO a -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state a</TD
-><TD CLASS="declbut"
-><A HREF="src/Control-Monad-MonadStateIO.html#io"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->lift IO command to <TT
-><A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-></TT
->
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtrcState"
-></A
-><B
->trcState</B
-> :: (state -&gt; String) -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Control-Monad-MonadStateIO.html#trcState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->state inspection command: a &quot;show&quot;-like function is applied to the state
- and the result is written to stderr.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AchangeState"
-></A
-><B
->changeState</B
-> :: (state -&gt; state) -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state state</TD
-><TD CLASS="declbut"
-><A HREF="src/Control-Monad-MonadStateIO.html#changeState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->change the state with a given function and return the new state
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetState"
-></A
-><B
->setState</B
-> :: state -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state state</TD
-><TD CLASS="declbut"
-><A HREF="src/Control-Monad-MonadStateIO.html#setState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->set the state
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetState"
-></A
-><B
->getState</B
-> :: <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state state</TD
-><TD CLASS="declbut"
-><A HREF="src/Control-Monad-MonadStateIO.html#getState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->read the state
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Arun"
-></A
-><B
->run</B
-> :: state -&gt; <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> state res -&gt; IO res</TD
-><TD CLASS="declbut"
-><A HREF="src/Control-Monad-MonadStateIO.html#run"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->run a <TT
-><A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-></TT
-> command with an initial state
-</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/doc/hdoc/Control-Strategies-DeepSeq.html b/doc/hdoc/Control-Strategies-DeepSeq.html
--- a/doc/hdoc/Control-Strategies-DeepSeq.html
+++ b/doc/hdoc/Control-Strategies-DeepSeq.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Control-Strategies-DeepSeq.html"
 >Source code</A
diff --git a/doc/hdoc/Data-AssocList.html b/doc/hdoc/Data-AssocList.html
--- a/doc/hdoc/Data-AssocList.html
+++ b/doc/hdoc/Data-AssocList.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Data-AssocList.html"
 >Source code</A
diff --git a/doc/hdoc/Data-Char-UTF8.html b/doc/hdoc/Data-Char-UTF8.html
--- a/doc/hdoc/Data-Char-UTF8.html
+++ b/doc/hdoc/Data-Char-UTF8.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Data-Char-UTF8.html"
 >Source code</A
diff --git a/doc/hdoc/Data-NavTree.html b/doc/hdoc/Data-NavTree.html
--- a/doc/hdoc/Data-NavTree.html
+++ b/doc/hdoc/Data-NavTree.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Data-NavTree.html"
 >Source code</A
diff --git a/doc/hdoc/Data-Tree-Class.html b/doc/hdoc/Data-Tree-Class.html
--- a/doc/hdoc/Data-Tree-Class.html
+++ b/doc/hdoc/Data-Tree-Class.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Data-Tree-Class.html"
 >Source code</A
diff --git a/doc/hdoc/Data-Tree-NTree-Filter.html b/doc/hdoc/Data-Tree-NTree-Filter.html
--- a/doc/hdoc/Data-Tree-NTree-Filter.html
+++ b/doc/hdoc/Data-Tree-NTree-Filter.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Data-Tree-NTree-Filter.html"
 >Source code</A
diff --git a/doc/hdoc/Data-Tree-NTree-TypeDefs.html b/doc/hdoc/Data-Tree-NTree-TypeDefs.html
--- a/doc/hdoc/Data-Tree-NTree-TypeDefs.html
+++ b/doc/hdoc/Data-Tree-NTree-TypeDefs.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Data-Tree-NTree-TypeDefs.html"
 >Source code</A
diff --git a/doc/hdoc/System-PipeOpen.html b/doc/hdoc/System-PipeOpen.html
deleted file mode 100644
--- a/doc/hdoc/System-PipeOpen.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!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
->System.PipeOpen</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/System-PipeOpen.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"
->System.PipeOpen</FONT
-></TD
-><TD ALIGN="right"
-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="infohead"
->Portability</TD
-><TD CLASS="infoval"
->none portable</TD
-></TR
-><TR
-><TD CLASS="infohead"
->Stability</TD
-><TD CLASS="infoval"
->experimental</TD
-></TR
-><TR
-><TD CLASS="infohead"
->Maintainer</TD
-><TD CLASS="infoval"
->Uwe Schmidt (uwe\@fh-wedel.de)</TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Version    : $Id: PipeOpen.hs,v 1.2 2005<EM
->09</EM
->02 17:09:39 hxml Exp $
-</P
-><P
->pipe open implemented with System.Process functions
-</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"
-><A HREF="#v%3Apopen"
->popen</A
-> :: String -&gt; [String] -&gt; IO (String, String, Int)</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Apopen"
-></A
-><B
->popen</B
-> :: String -&gt; [String] -&gt; IO (String, String, Int)</TD
-><TD CLASS="declbut"
-><A HREF="src/System-PipeOpen.html#popen"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->call an external program with a list of command line arguments
- and return content of stdout, content of stderr and return code
-</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/doc/hdoc/Text-XML-HXT-Arrow-DTDProcessing.html b/doc/hdoc/Text-XML-HXT-Arrow-DTDProcessing.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-DTDProcessing.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-DTDProcessing.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-DTDProcessing.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-DocumentInput.html b/doc/hdoc/Text-XML-HXT-Arrow-DocumentInput.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-DocumentInput.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-DocumentInput.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-DocumentInput.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-DocumentOutput.html b/doc/hdoc/Text-XML-HXT-Arrow-DocumentOutput.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-DocumentOutput.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-DocumentOutput.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-DocumentOutput.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-Edit.html b/doc/hdoc/Text-XML-HXT-Arrow-Edit.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-Edit.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-Edit.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-Edit.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html b/doc/hdoc/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-Namespace.html b/doc/hdoc/Text-XML-HXT-Arrow-Namespace.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-Namespace.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-Namespace.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-Namespace.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-ParserInterface.html b/doc/hdoc/Text-XML-HXT-Arrow-ParserInterface.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-ParserInterface.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-ParserInterface.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-ParserInterface.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-Pickle-DTD.html b/doc/hdoc/Text-XML-HXT-Arrow-Pickle-DTD.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-Pickle-DTD.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-Pickle-DTD.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-Pickle-DTD.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Schema.html b/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Schema.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Schema.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Schema.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-Pickle-Schema.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Xml.html b/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Xml.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Xml.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-Pickle-Xml.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html"
 >Source code</A
@@ -625,6 +625,32 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpTrees"
+>xpTrees</A
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> [<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"
+>XmlTree</A
+>]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AxpXmlText"
+>xpXmlText</A
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpOption"
 >xpOption</A
 > :: <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
@@ -639,6 +665,20 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpDefault"
+>xpDefault</A
+> :: Eq a =&gt; a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpList"
 >xpList</A
 > :: <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
@@ -667,6 +707,22 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpMap"
+>xpMap</A
+> :: Ord k =&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> k -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> v -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> (Map k v)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpAlt"
 >xpAlt</A
 > :: (a -&gt; Int) -&gt; [<A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
@@ -695,6 +751,20 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpElemWithAttrValue"
+>xpElemWithAttrValue</A
+> :: String -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpAttr"
 >xpAttr</A
 > :: String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
@@ -1463,7 +1533,7 @@
 >Run two picklers in sequence like with xpSeq.
  When during unpickling the first one fails,
  an alternative pickler (first argument) is applied.
- This pickler only is used as combinator for unpickling.
+ This pickler is only used as combinator for unpickling.
 </P
 ></TD
 ></TR
@@ -2026,6 +2096,90 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AxpTrees"
+></A
+><B
+>xpTrees</B
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> [<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"
+>XmlTree</A
+>]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpTrees"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Pickle a whole list of XmlTrees by just adding the list, unpickle is done by taking all element contens.
+</P
+><P
+>This pickler should always combined with <TT
+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElem"
+>xpElem</A
+></TT
+> for taking the whole contents of an element.
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AxpXmlText"
+></A
+><B
+>xpXmlText</B
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpXmlText"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Pickle a string representing XML contents by inserting the tree representation into the XML document.
+</P
+><P
+>Unpickling is done by converting the contents with
+ <TT
+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Axshow"
+>xshow</A
+></TT
+> into a string,
+ pickling is done with <TT
+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3Axread"
+>xread</A
+></TT
+>
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AxpOption"
 ></A
 ><B
@@ -2063,6 +2217,43 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AxpDefault"
+></A
+><B
+>xpDefault</B
+> :: Eq a =&gt; a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpDefault"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Optional conversion with default value
+</P
+><P
+>The default value is not encoded in the XML document,
+ during unpickling the default value is inserted if the pickler fails
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AxpList"
 ></A
 ><B
@@ -2142,6 +2333,47 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AxpMap"
+></A
+><B
+>xpMap</B
+> :: Ord k =&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> k -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> v -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> (Map k v)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpMap"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Standard pickler for maps
+</P
+><P
+>This pickler converts a map into a list of pairs.
+ All key value pairs are mapped to an element with name (1.arg),
+ the key is encoded as an attribute named by the 2. argument,
+ the 3. arg is the pickler for the keys, the last one for the values
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AxpAlt"
 ></A
 ><B
@@ -2205,6 +2437,79 @@
 >Extra parameter is the element name. THE pickler for constructing
  nested structures
 </P
+><P
+>Example:
+</P
+><PRE
+> xpElem &quot;number&quot; $ xpickle
+</PRE
+><P
+>will map an (42::Int) onto
+</P
+><PRE
+> &lt;number&gt;42&lt;/number&gt;
+</PRE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AxpElemWithAttrValue"
+></A
+><B
+>xpElemWithAttrValue</B
+> :: String -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"
+>PU</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpElemWithAttrValue"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Pickler for wrapping/unwrapping data into an XML element with an attribute with given value
+</P
+><P
+>To make XML structures flexible but limit the number of different elements, it's sometimes
+ useful to use a kind of generic element with a key value structure
+</P
+><P
+>Example:
+</P
+><PRE
+> &lt;attr name=&quot;key1&quot;&gt;value1&lt;/attr&gt;
+ &lt;attr name=&quot;key2&quot;&gt;value2&lt;/attr&gt;
+ &lt;attr name=&quot;key3&quot;&gt;value3&lt;/attr&gt;
+</PRE
+><P
+>the Haskell datatype may look like this
+</P
+><PRE
+> type T = T { key1 :: Int ; key2 :: String ; key3 :: Double }
+</PRE
+><P
+>Then the picker for that type looks like this
+</P
+><PRE
+> xpT :: PU T
+ xpT = xpWrap ( uncurry3 T, \ t -&gt; (key1 t, key2 t, key3 t) ) $
+       xpTriple (xpElemWithAttrValue &quot;attr&quot; &quot;name&quot; &quot;key1&quot; $ xpickle)
+                (xpElemWithAttrValue &quot;attr&quot; &quot;name&quot; &quot;key2&quot; $ xpText0)
+                (xpElemWithAttrValue &quot;attr&quot; &quot;name&quot; &quot;key3&quot; $ xpickle)
+</PRE
 ></TD
 ></TR
 ><TR
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-Pickle.html b/doc/hdoc/Text-XML-HXT-Arrow-Pickle.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-Pickle.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-Pickle.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-Pickle.html"
 >Source code</A
@@ -409,6 +409,30 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3Axp6Tuple"
+>xp6Tuple</A
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> b -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> c -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> d -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> e -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> f -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> (a, b, c, d, e, f)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpAddFixedAttr"
 >xpAddFixedAttr</A
 > :: String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
@@ -513,6 +537,20 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpDefault"
+>xpDefault</A
+> :: Eq a =&gt; a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpElem"
 >xpElem</A
 > :: String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
@@ -527,6 +565,20 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpElemWithAttrValue"
+>xpElemWithAttrValue</A
+> :: String -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3Axpickle"
 >xpickle</A
 > :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3AXmlPickler"
@@ -593,6 +645,22 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpMap"
+>xpMap</A
+> :: Ord k =&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> k -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> v -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> (Map k v)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpOption"
 >xpOption</A
 > :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
@@ -717,6 +785,20 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpTrees"
+>xpTrees</A
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> [<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"
+>XmlTree</A
+>]</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpTriple"
 >xpTriple</A
 > :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
@@ -775,6 +857,18 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AxpXmlText"
+>xpXmlText</A
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AxpZero"
 >xpZero</A
 > :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
@@ -1650,6 +1744,55 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3Axp6Tuple"
+></A
+><B
+>xp6Tuple</B
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> b -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> c -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> d -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> e -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> f -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> (a, b, c, d, e, f)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle.html#xp6Tuple"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>Like <TT
+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpPair"
+>xpPair</A
+></TT
+> and <TT
+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTriple"
+>xpTriple</A
+></TT
+> but for 6-tuples
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AxpAddFixedAttr"
 ></A
 ><B
@@ -1852,7 +1995,7 @@
 >Run two picklers in sequence like with xpSeq.
  When during unpickling the first one fails,
  an alternative pickler (first argument) is applied.
- This pickler only is used as combinator for unpickling.
+ This pickler is only used as combinator for unpickling.
 </P
 ></TD
 ></TR
@@ -1918,6 +2061,43 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AxpDefault"
+></A
+><B
+>xpDefault</B
+> :: Eq a =&gt; a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle.html#xpDefault"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Optional conversion with default value
+</P
+><P
+>The default value is not encoded in the XML document,
+ during unpickling the default value is inserted if the pickler fails
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AxpElem"
 ></A
 ><B
@@ -1944,6 +2124,18 @@
 >Extra parameter is the element name. THE pickler for constructing
  nested structures
 </P
+><P
+>Example:
+</P
+><PRE
+> xpElem &quot;number&quot; $ xpickle
+</PRE
+><P
+>will map an (42::Int) onto
+</P
+><PRE
+> &lt;number&gt;42&lt;/number&gt;
+</PRE
 ></TD
 ></TR
 ><TR
@@ -1955,6 +2147,67 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AxpElemWithAttrValue"
+></A
+><B
+>xpElemWithAttrValue</B
+> :: String -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> a</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle.html#xpElemWithAttrValue"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Pickler for wrapping/unwrapping data into an XML element with an attribute with given value
+</P
+><P
+>To make XML structures flexible but limit the number of different elements, it's sometimes
+ useful to use a kind of generic element with a key value structure
+</P
+><P
+>Example:
+</P
+><PRE
+> &lt;attr name=&quot;key1&quot;&gt;value1&lt;/attr&gt;
+ &lt;attr name=&quot;key2&quot;&gt;value2&lt;/attr&gt;
+ &lt;attr name=&quot;key3&quot;&gt;value3&lt;/attr&gt;
+</PRE
+><P
+>the Haskell datatype may look like this
+</P
+><PRE
+> type T = T { key1 :: Int ; key2 :: String ; key3 :: Double }
+</PRE
+><P
+>Then the picker for that type looks like this
+</P
+><PRE
+> xpT :: PU T
+ xpT = xpWrap ( uncurry3 T, \ t -&gt; (key1 t, key2 t, key3 t) ) $
+       xpTriple (xpElemWithAttrValue &quot;attr&quot; &quot;name&quot; &quot;key1&quot; $ xpickle)
+                (xpElemWithAttrValue &quot;attr&quot; &quot;name&quot; &quot;key2&quot; $ xpText0)
+                (xpElemWithAttrValue &quot;attr&quot; &quot;name&quot; &quot;key3&quot; $ xpickle)
+</PRE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3Axpickle"
 ></A
 ><B
@@ -2135,6 +2388,47 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AxpMap"
+></A
+><B
+>xpMap</B
+> :: Ord k =&gt; String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> k -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> v -&gt; <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> (Map k v)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle.html#xpMap"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Standard pickler for maps
+</P
+><P
+>This pickler converts a map into a list of pairs.
+ All key value pairs are mapped to an element with name (1.arg),
+ the key is encoded as an attribute named by the 2. argument,
+ the 3. arg is the pickler for the keys, the last one for the values
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AxpOption"
 ></A
 ><B
@@ -2504,6 +2798,46 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AxpTrees"
+></A
+><B
+>xpTrees</B
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> [<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"
+>XmlTree</A
+>]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle.html#xpTrees"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Pickle a whole list of XmlTrees by just adding the list, unpickle is done by taking all element contens.
+</P
+><P
+>This pickler should always combined with <TT
+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpElem"
+>xpElem</A
+></TT
+> for taking the whole contents of an element.
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AxpTriple"
 ></A
 ><B
@@ -2632,6 +2966,50 @@
 ><P
 >Map a value into another domain. If the inverse mapping is
  undefined (Nothing), the unpickler fails
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AxpXmlText"
+></A
+><B
+>xpXmlText</B
+> :: <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"
+>PU</A
+> String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-Pickle.html#xpXmlText"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>Pickle a string representing XML contents by inserting the tree representation into the XML document.
+</P
+><P
+>Unpickling is done by converting the contents with
+ <TT
+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Axshow"
+>xshow</A
+></TT
+> into a string,
+ pickling is done with <TT
+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3Axread"
+>xread</A
+></TT
+>
 </P
 ></TD
 ></TR
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-ProcessDocument.html b/doc/hdoc/Text-XML-HXT-Arrow-ProcessDocument.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-ProcessDocument.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-ProcessDocument.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-ProcessDocument.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-ReadDocument.html b/doc/hdoc/Text-XML-HXT-Arrow-ReadDocument.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-ReadDocument.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-ReadDocument.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-ReadDocument.html"
 >Source code</A
@@ -340,10 +340,26 @@
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_issue_errors"
 >a_issue_errors</A
 ></TT
-> : issue all error messages on stderr (default), or ignore all error messages (default)
+> : issue all error messages on stderr (default), or ignore all error messages
 </LI
 ><LI
 > <TT
+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_ignore_encoding_errors"
+>a_ignore_encoding_errors</A
+></TT
+>: ignore all encoding errors, default is issue all encoding errors
+</LI
+><LI
+> <TT
+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_ignore_none_xml_contents"
+>a_ignore_none_xml_contents</A
+></TT
+>: ignore document contents of none XML/HTML documents.
+                                This option can be useful for implementing crawler like applications, e.g. an URL checker.
+                                In those cases net traffic can be reduced.
+</LI
+><LI
+> <TT
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_trace"
 >a_trace</A
 ></TT
@@ -361,14 +377,19 @@
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_use_curl"
 >a_use_curl</A
 ></TT
-> : for http access via external programm curl, default is native HTTP access
+> : obsolete and ignored, HTTP acccess is always done with curl bindings for libcurl
 </LI
 ><LI
 > <TT
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_options_curl"
 >a_options_curl</A
 ></TT
-> : more options for external program curl
+> : deprecated but for compatibility reasons still supported.
+                     More options passed to the curl binding.
+                     Instead of using this option to set a whole bunch of options at once for curl
+                     it is recomended to use the <TT
+>curl-.*</TT
+> options syntax described below.
 </LI
 ><LI
 > <TT
@@ -395,8 +416,27 @@
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aiso8859_16"
 >iso8859_16</A
 ></TT
->, ...)
+>, ...).
+                 Only XML and HTML documents are decoded, documents with none XML/HTML mime types are not decoded. The whole content is returned in a single text node
 </LI
+><LI
+> <TT
+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_mime_types"
+>a_mime_types</A
+></TT
+> : set the mime type table for file input with given file. The format of this config file must be in the syntax of a debian linux &quot;mime.types&quot; config file
+</LI
+><LI
+> curl options : the HTTP interface with libcurl can be configured with a lot of options. To support these options in an easy way, there is a naming convetion:
+                 Every option, which has the prefix <TT
+>curl</TT
+> and the rest of the name forms an option as described in the curl man page, is passed to the curl binding lib.
+                 See <TT
+><A HREF="Text-XML-HXT-IO-GetHTTPLibCurl.html#v%3AgetCont"
+>getCont</A
+></TT
+> for examples. Currently most of the options concerning HTTP requests are implemented.
+</LI
 ></UL
 ><P
 >All attributes not evaluated by readDocument are stored in the created document root node for easy access of the various
@@ -417,10 +457,11 @@
 ><PRE
 > readDocument [ (a_validate, &quot;0&quot;)
               , (a_encoding, isoLatin1)
-              ] &quot;test.xml&quot;
+              , (a_parse_by_mimetype, &quot;1&quot;)
+              ] &quot;http://localhost/test.php&quot;
 </PRE
 ><P
->reads document &quot;test.xml&quot; without validation, default encoding <TT
+>reads document &quot;test.php&quot;, parses it as HTML or XML depending on the mimetype given from the server, but without validation, default encoding <TT
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AisoLatin1"
 >isoLatin1</A
 ></TT
@@ -429,7 +470,6 @@
 ><PRE
 > readDocument [ (a_parse_html, &quot;1&quot;)
               , (a_encoding, isoLatin1)
-              , (a_tagsoup,    &quot;1&quot;)
               ] &quot;&quot;
 </PRE
 ><P
@@ -439,6 +479,20 @@
 ></TT
 >,
 parsing is done with tagsoup parser
+</P
+><PRE
+> readDocument [ (a_encoding, isoLatin1)
+              , (a_mime_type,    &quot;/etc/mime.types&quot;)
+              , (a_tagsoup,    &quot;1&quot;)
+              ] &quot;test.svg&quot;
+</PRE
+><P
+>reads an SVG document from standard input, sets the mime type by looking in the system mimetype config file, default encoding is <TT
+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AisoLatin1"
+>isoLatin1</A
+></TT
+>,
+parsing is done with the lightweight tagsoup parser, which implies no validation.
 </P
 ><PRE
 > readDocument [ (a_parse_html,     &quot;1&quot;)
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-WriteDocument.html b/doc/hdoc/Text-XML-HXT-Arrow-WriteDocument.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-WriteDocument.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-WriteDocument.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-WriteDocument.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-XPath.html b/doc/hdoc/Text-XML-HXT-Arrow-XPath.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-XPath.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-XPath.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-XPath.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-XPathSimple.html b/doc/hdoc/Text-XML-HXT-Arrow-XPathSimple.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-XPathSimple.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-XPathSimple.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-XPathSimple.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-XmlArrow.html b/doc/hdoc/Text-XML-HXT-Arrow-XmlArrow.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-XmlArrow.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-XmlArrow.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-XmlArrow.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-XmlIOStateArrow.html b/doc/hdoc/Text-XML-HXT-Arrow-XmlIOStateArrow.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-XmlIOStateArrow.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-XmlIOStateArrow.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-XmlIOStateArrow.html"
 >Source code</A
@@ -126,6 +126,11 @@
 >URI Manipulation
 </A
 ></DT
+><DT
+><A HREF="#9"
+>Mime Type Handling
+</A
+></DT
 ></DL
 ></TD
 ></TR
@@ -284,6 +289,14 @@
 >XmlTrees</A
 >)</TD
 ></TR
+><TR
+><TD CLASS="recfield"
+><A HREF="#v%3Axio_mimeTypes"
+>xio_mimeTypes</A
+> :: <A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>MimeTypeTable</A
+></TD
+></TR
 ></TABLE
 >}</TD
 ></TR
@@ -529,6 +542,20 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3AgetAllParamsString"
+>getAllParamsString</A
+> :: <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"
+>IOStateArrow</A
+> s b (<A HREF="Data-AssocList.html#t%3AAssocList"
+>AssocList</A
+> String String)</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3AsetParamString"
 >setParamString</A
 > :: String -&gt; String -&gt; <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"
@@ -1127,6 +1154,32 @@
 >ArrowList</A
 > a =&gt; a String String</TD
 ></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AsetMimeTypeTable"
+>setMimeTypeTable</A
+> :: <A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>MimeTypeTable</A
+> -&gt; <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"
+>IOStateArrow</A
+> s b b</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AsetMimeTypeTableFromFile"
+>setMimeTypeTableFromFile</A
+> :: FilePath -&gt; <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"
+>IOStateArrow</A
+> s b b</TD
+></TR
 ></TABLE
 ></TD
 ></TR
@@ -1401,6 +1454,18 @@
 ><TD CLASS="rdoc"
 ></TD
 ></TR
+><TR
+><TD CLASS="arg"
+><A NAME="v%3Axio_mimeTypes"
+></A
+><B
+>xio_mimeTypes</B
+> :: <A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>MimeTypeTable</A
+></TD
+><TD CLASS="rdoc"
+></TD
+></TR
 ></TABLE
 ></TD
 ></TR
@@ -2053,6 +2118,38 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3AgetAllParamsString"
+></A
+><B
+>getAllParamsString</B
+> :: <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"
+>IOStateArrow</A
+> s b (<A HREF="Data-AssocList.html#t%3AAssocList"
+>AssocList</A
+> String String)</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-XmlIOStateArrow.html#getAllParamsString"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>read all attributes from global state
+ and convert the values to strings
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
 ><A NAME="v%3AsetParamString"
 ></A
 ><B
@@ -3547,6 +3644,98 @@
 ><TD CLASS="doc"
 >arrow for selecting the user info of the URI without trailing '@', fails if input is not a legal URI
 </TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+><A NAME="9"
+>Mime Type Handling
+</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AsetMimeTypeTable"
+></A
+><B
+>setMimeTypeTable</B
+> :: <A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>MimeTypeTable</A
+> -&gt; <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"
+>IOStateArrow</A
+> s b b</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-XmlIOStateArrow.html#setMimeTypeTable"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>set the table mapping of file extensions to mime types in the system state
+</P
+><P
+>Default table is defined in <TT
+><A HREF="Text-XML-HXT-DOM.html#t%3AMimeTypeDefaults"
+>MimeTypeDefaults</A
+></TT
+>.
+ This table is used when reading loacl files, (file: protocol) to determine the mime type
+</P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AsetMimeTypeTableFromFile"
+></A
+><B
+>setMimeTypeTableFromFile</B
+> :: FilePath -&gt; <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"
+>IOStateArrow</A
+> s b b</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Arrow-XmlIOStateArrow.html#setMimeTypeTableFromFile"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>set the table mapping of file extensions to mime types by an external config file
+</P
+><P
+>The config file must follow the conventions of <EM
+>etc</EM
+>mime.types on a debian linux system,
+ that means all empty lines and all lines starting with a # are ignored. The other lines
+ must consist of a mime type followed by a possible empty list of extensions.
+ The list of extenstions and mime types overwrites the default list in the system state
+ of the IOStateArrow
+</P
+></TD
 ></TR
 ><TR
 ><TD CLASS="s15"
diff --git a/doc/hdoc/Text-XML-HXT-Arrow-XmlRegex.html b/doc/hdoc/Text-XML-HXT-Arrow-XmlRegex.html
--- a/doc/hdoc/Text-XML-HXT-Arrow-XmlRegex.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow-XmlRegex.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow-XmlRegex.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Arrow.html b/doc/hdoc/Text-XML-HXT-Arrow.html
--- a/doc/hdoc/Text-XML-HXT-Arrow.html
+++ b/doc/hdoc/Text-XML-HXT-Arrow.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Arrow.html"
 >Source code</A
@@ -255,6 +255,16 @@
 ><TD CLASS="decl"
 >module <A HREF="Text-XML-HXT-XSLT-XsltArrows.html"
 >Text.XML.HXT.XSLT.XsltArrows</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HXT-Version.html"
+>Text.XML.HXT.Version</A
 ></TD
 ></TR
 ><TR
diff --git a/doc/hdoc/Text-XML-HXT-DOM-FormatXmlTree.html b/doc/hdoc/Text-XML-HXT-DOM-FormatXmlTree.html
--- a/doc/hdoc/Text-XML-HXT-DOM-FormatXmlTree.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-FormatXmlTree.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-FormatXmlTree.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-Interface.html b/doc/hdoc/Text-XML-HXT-DOM-Interface.html
--- a/doc/hdoc/Text-XML-HXT-DOM-Interface.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-Interface.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-Interface.html"
 >Source code</A
@@ -144,6 +144,16 @@
 ><TD CLASS="decl"
 >module <A HREF="Text-XML-HXT-DOM-XmlOptions.html"
 >Text.XML.HXT.DOM.XmlOptions</A
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+>module <A HREF="Text-XML-HXT-DOM-MimeTypes.html"
+>Text.XML.HXT.DOM.MimeTypes</A
 ></TD
 ></TR
 ><TR
diff --git a/doc/hdoc/Text-XML-HXT-DOM-IsoLatinTables.html b/doc/hdoc/Text-XML-HXT-DOM-IsoLatinTables.html
--- a/doc/hdoc/Text-XML-HXT-DOM-IsoLatinTables.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-IsoLatinTables.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-IsoLatinTables.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-MimeTypeDefaults.html b/doc/hdoc/Text-XML-HXT-DOM-MimeTypeDefaults.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/Text-XML-HXT-DOM-MimeTypeDefaults.html
@@ -0,0 +1,143 @@
+<!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.HXT.DOM.MimeTypeDefaults</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock-util.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"
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
+><TD CLASS="topbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypeDefaults.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.HXT.DOM.MimeTypeDefaults</FONT
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>default mime type table
+</P
+><P
+>this file is generated from file <EM
+>etc</EM
+>mime.types
+</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"
+><A HREF="#v%3AmimeTypeDefaults"
+>mimeTypeDefaults</A
+> :: [(String, String)]</TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Documentation</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AmimeTypeDefaults"
+></A
+><B
+>mimeTypeDefaults</B
+> :: [(String, String)]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypeDefaults.html#mimeTypeDefaults"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+>the table with the mapping from file name extensions to mime types
+</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/doc/hdoc/Text-XML-HXT-DOM-MimeTypes.html b/doc/hdoc/Text-XML-HXT-DOM-MimeTypes.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/Text-XML-HXT-DOM-MimeTypes.html
@@ -0,0 +1,427 @@
+<!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.HXT.DOM.MimeTypes</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock-util.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"
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
+><TD CLASS="topbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.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.HXT.DOM.MimeTypes</FONT
+></TD
+><TD ALIGN="right"
+><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
+><TR
+><TD CLASS="infohead"
+>Portability</TD
+><TD CLASS="infoval"
+>portable</TD
+></TR
+><TR
+><TD CLASS="infohead"
+>Stability</TD
+><TD CLASS="infoval"
+>experimental</TD
+></TR
+><TR
+><TD CLASS="infohead"
+>Maintainer</TD
+><TD CLASS="infoval"
+>Uwe Schmidt (uwe@fh-wedel.de)</TD
+></TR
+></TABLE
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Description</TD
+></TR
+><TR
+><TD CLASS="doc"
+>mime type related data and functions
+</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Documentation</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%3AMimeTypeTable"
+></A
+><B
+>MimeTypeTable</B
+> = Map String String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#MimeTypeTable"
+>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%3Aapplication_xhtml"
+></A
+><B
+>application_xhtml</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#application_xhtml"
+>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%3Aapplication_xml"
+></A
+><B
+>application_xml</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#application_xml"
+>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%3Aapplication_xml_external_parsed_entity"
+></A
+><B
+>application_xml_external_parsed_entity</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#application_xml_external_parsed_entity"
+>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%3Aapplication_xml_dtd"
+></A
+><B
+>application_xml_dtd</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#application_xml_dtd"
+>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%3Atext_html"
+></A
+><B
+>text_html</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#text_html"
+>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%3Atext_xml"
+></A
+><B
+>text_xml</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#text_xml"
+>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%3Atext_xml_external_parsed_entity"
+></A
+><B
+>text_xml_external_parsed_entity</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#text_xml_external_parsed_entity"
+>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%3AisHtmlMimeType"
+></A
+><B
+>isHtmlMimeType</B
+> :: String -&gt; Bool</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#isHtmlMimeType"
+>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%3AisXmlMimeType"
+></A
+><B
+>isXmlMimeType</B
+> :: String -&gt; Bool</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#isXmlMimeType"
+>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%3AdefaultMimeTypeTable"
+></A
+><B
+>defaultMimeTypeTable</B
+> :: <A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>MimeTypeTable</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#defaultMimeTypeTable"
+>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%3AextensionToMimeType"
+></A
+><B
+>extensionToMimeType</B
+> :: String -&gt; <A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>MimeTypeTable</A
+> -&gt; String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#extensionToMimeType"
+>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%3AreadMimeTypeTable"
+></A
+><B
+>readMimeTypeTable</B
+> :: FilePath -&gt; IO <A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>MimeTypeTable</A
+></TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#readMimeTypeTable"
+>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%3AparseMimeTypeTable"
+></A
+><B
+>parseMimeTypeTable</B
+> :: String -&gt; [(String, String)]</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html#parseMimeTypeTable"
+>Source</A
+></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/doc/hdoc/Text-XML-HXT-DOM-Namespace.html b/doc/hdoc/Text-XML-HXT-DOM-Namespace.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-DOM-Namespace.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!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.HXT.DOM.Namespace</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-DOM-Namespace.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.HXT.DOM.Namespace</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->main namespace filter for propagation, checking, tracing and error handling
-</P
-><P
->$Id: Namespace.hs,v 1.3 2005<EM
->01</EM
->06 10:48:07 hxml Exp $
-</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"
-><A HREF="#v%3ApropagateAndValidateNamespaces"
->propagateAndValidateNamespaces</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html"
->Text.XML.HXT.DOM.NamespaceFilter</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3ApropagateAndValidateNamespaces"
-></A
-><B
->propagateAndValidateNamespaces</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-Namespace.html#propagateAndValidateNamespaces"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->propagate all namespace declarations, check namespace constraints and issue errors.
- If no error was found, result is the unchanged input tree, else the root node &quot;/&quot; with an empty document is returned.
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"
->propagateNamespaces</A
-></TT
->, <TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AvalidateNamespaces"
->validateNamespaces</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html"
->Text.XML.HXT.DOM.NamespaceFilter</A
-></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/doc/hdoc/Text-XML-HXT-DOM-NamespaceFilter.html b/doc/hdoc/Text-XML-HXT-DOM-NamespaceFilter.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-DOM-NamespaceFilter.html
+++ /dev/null
@@ -1,431 +0,0 @@
-<!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.HXT.DOM.NamespaceFilter</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.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.HXT.DOM.NamespaceFilter</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Namespace filter
-</P
-><P
->$Id: NamespaceFilter.hs,v 1.4 2006<EM
->11</EM
->12 14:53:00 hxml Exp $
-</P
-><P
->Namespaces are processed with two main filter, <TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"
->propagateNamespaces</A
-></TT
->
- and <TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AvalidateNamespaces"
->validateNamespaces</A
-></TT
->.
-</P
-><P
-><TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"
->propagateNamespaces</A
-></TT
-> takes a XML tree and
- attaches extra namespace info at every tag name and attribute name.
- So after processing a tree with <TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"
->propagateNamespaces</A
-></TT
->, the access functions
- <A HREF="namespaceOf.html"
->namespaceOf</A
-> and <A HREF="universalNameOf.html"
->universalNameOf</A
-> deliver the associated namespace (or &quot;&quot;)
- for tag names and attribute names.
-</P
-><P
-><TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AvalidateNamespaces"
->validateNamespaces</A
-></TT
-> checks whether names are wellformed related to the XML namespace definition.
- whether a legal namespace is declared for all prefixes, and whether attribute names are unique
- related to universal names.
-</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"
->type</SPAN
-> <A HREF="#t%3ANamespaceTable"
->NamespaceTable</A
-> = NsEnv</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3ApropagateNamespaces"
->propagateNamespaces</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3ApropagateNamespaceEnv"
->propagateNamespaceEnv</A
-> :: <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#t%3ANamespaceTable"
->NamespaceTable</A
-> -&gt; XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AvalidateNamespaces"
->validateNamespaces</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Avalidate1Namespaces"
->validate1Namespaces</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AisNamespaceDecl"
->isNamespaceDecl</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-NamespacePredicates.html"
->Text.XML.HXT.DOM.NamespacePredicates</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</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%3ANamespaceTable"
-></A
-><B
->NamespaceTable</B
-> = NsEnv</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#NamespaceTable"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->Type for the namespace association list, used when propagating namespaces by
- modifying the QName values in a tree
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3ApropagateNamespaces"
-></A
-><B
->propagateNamespaces</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#propagateNamespaces"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->propagate all namespace declarations &quot;xmlns:ns=...&quot; to all
- tag and attribute nodes of a document.
-</P
-><P
->This filter does not check for illegal use of namespaces.
- The real work is done by <TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaceEnv"
->propagateNamespaceEnv</A
-></TT
->.
-</P
-><P
->The filter may be applied repeatedly if neccessary.
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3ApropagateNamespaceEnv"
-></A
-><B
->propagateNamespaceEnv</B
-> :: <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#t%3ANamespaceTable"
->NamespaceTable</A
-> -&gt; XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#propagateNamespaceEnv"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->attaches the namespace info given by the namespace table
- to a tag node and its attributes and children.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AvalidateNamespaces"
-></A
-><B
->validateNamespaces</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#validateNamespaces"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->validate the namespace constraints in a whole tree.
- result is the list of errors concerning namespaces.
- Work is done by applying <TT
-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3Avalidate1Namespaces"
->validate1Namespaces</A
-></TT
-> to all nodes.
- Predicates <TT
-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQName"
->isWellformedQName</A
-></TT
->, <TT
-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQualifiedName"
->isWellformedQualifiedName</A
-></TT
->, <TT
-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisDeclaredNamespace"
->isDeclaredNamespace</A
-></TT
->
- and <TT
-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedNSDecl"
->isWellformedNSDecl</A
-></TT
-> are applied to the appropriate tags and attributes.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Avalidate1Namespaces"
-></A
-><B
->validate1Namespaces</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#validate1Namespaces"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->a single node for namespace constrains.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AisNamespaceDecl"
-></A
-><B
->isNamespaceDecl</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#isNamespaceDecl"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-NamespacePredicates.html"
->Text.XML.HXT.DOM.NamespacePredicates</A
-></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/doc/hdoc/Text-XML-HXT-DOM-NamespacePredicates.html b/doc/hdoc/Text-XML-HXT-DOM-NamespacePredicates.html
--- a/doc/hdoc/Text-XML-HXT-DOM-NamespacePredicates.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-NamespacePredicates.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-NamespacePredicates.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-QualifiedName.html b/doc/hdoc/Text-XML-HXT-DOM-QualifiedName.html
--- a/doc/hdoc/Text-XML-HXT-DOM-QualifiedName.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-QualifiedName.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-ShowXml.html b/doc/hdoc/Text-XML-HXT-DOM-ShowXml.html
--- a/doc/hdoc/Text-XML-HXT-DOM-ShowXml.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-ShowXml.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-ShowXml.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-TypeDefs.html b/doc/hdoc/Text-XML-HXT-DOM-TypeDefs.html
--- a/doc/hdoc/Text-XML-HXT-DOM-TypeDefs.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-TypeDefs.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-TypeDefs.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-UTF8Decoding.html b/doc/hdoc/Text-XML-HXT-DOM-UTF8Decoding.html
--- a/doc/hdoc/Text-XML-HXT-DOM-UTF8Decoding.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-UTF8Decoding.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-UTF8Decoding.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-Unicode.html b/doc/hdoc/Text-XML-HXT-DOM-Unicode.html
--- a/doc/hdoc/Text-XML-HXT-DOM-Unicode.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-Unicode.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-Unicode.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-Util.html b/doc/hdoc/Text-XML-HXT-DOM-Util.html
--- a/doc/hdoc/Text-XML-HXT-DOM-Util.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-Util.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-Util.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-XmlKeywords.html b/doc/hdoc/Text-XML-HXT-DOM-XmlKeywords.html
--- a/doc/hdoc/Text-XML-HXT-DOM-XmlKeywords.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-XmlKeywords.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html"
 >Source code</A
@@ -80,16 +80,9 @@
 ></TR
 ><TR
 ><TD CLASS="doc"
-><P
->Version    : $Id: XmlKeywords.hs,v 1.10 2006<EM
->11</EM
->02 09:34:09 hxml Exp $
-</P
-><P
 >Constants for XML keywords, for special attribute names
    and special attribute values
-</P
-></TD
+</TD
 ></TR
 ><TR
 ><TD CLASS="s15"
@@ -318,6 +311,26 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3Aa_ignore_encoding_errors"
+>a_ignore_encoding_errors</A
+> :: String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3Aa_ignore_none_xml_contents"
+>a_ignore_none_xml_contents</A
+> :: String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3Aa_indent"
 >a_indent</A
 > :: String</TD
@@ -368,6 +381,16 @@
 ></TR
 ><TR
 ><TD CLASS="decl"
+><A HREF="#v%3Aa_mime_types"
+>a_mime_types</A
+> :: String</TD
+></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
 ><A HREF="#v%3Aa_module"
 >a_module</A
 > :: String</TD
@@ -1532,96 +1555,6 @@
 >a_do_not_collect_errors</A
 > :: String</TD
 ></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aapplication_xhtml"
->application_xhtml</A
-> :: String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aapplication_xml"
->application_xml</A
-> :: String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aapplication_xml_external_parsed_entity"
->application_xml_external_parsed_entity</A
-> :: String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aapplication_xml_dtd"
->application_xml_dtd</A
-> :: String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Atext_html"
->text_html</A
-> :: String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Atext_xml"
->text_xml</A
-> :: String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Atext_xml_external_parsed_entity"
->text_xml_external_parsed_entity</A
-> :: String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AisHtmlMimeType"
->isHtmlMimeType</A
-> :: String -&gt; Bool</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AisXmlMimeType"
->isXmlMimeType</A
-> :: String -&gt; Bool</TD
-></TR
 ></TABLE
 ></TD
 ></TR
@@ -2104,6 +2037,50 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3Aa_ignore_encoding_errors"
+></A
+><B
+>a_ignore_encoding_errors</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#a_ignore_encoding_errors"
+>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%3Aa_ignore_none_xml_contents"
+></A
+><B
+>a_ignore_none_xml_contents</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#a_ignore_none_xml_contents"
+>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%3Aa_indent"
 ></A
 ><B
@@ -2214,6 +2191,28 @@
 ><TABLE CLASS="declbar"
 ><TR
 ><TD CLASS="declname"
+><A NAME="v%3Aa_mime_types"
+></A
+><B
+>a_mime_types</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#a_mime_types"
+>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%3Aa_module"
 ></A
 ><B
@@ -4788,204 +4787,6 @@
 > :: String</TD
 ><TD CLASS="declbut"
 ><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#a_do_not_collect_errors"
->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%3Aapplication_xhtml"
-></A
-><B
->application_xhtml</B
-> :: String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#application_xhtml"
->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%3Aapplication_xml"
-></A
-><B
->application_xml</B
-> :: String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#application_xml"
->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%3Aapplication_xml_external_parsed_entity"
-></A
-><B
->application_xml_external_parsed_entity</B
-> :: String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#application_xml_external_parsed_entity"
->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%3Aapplication_xml_dtd"
-></A
-><B
->application_xml_dtd</B
-> :: String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#application_xml_dtd"
->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%3Atext_html"
-></A
-><B
->text_html</B
-> :: String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#text_html"
->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%3Atext_xml"
-></A
-><B
->text_xml</B
-> :: String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#text_xml"
->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%3Atext_xml_external_parsed_entity"
-></A
-><B
->text_xml_external_parsed_entity</B
-> :: String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#text_xml_external_parsed_entity"
->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%3AisHtmlMimeType"
-></A
-><B
->isHtmlMimeType</B
-> :: String -&gt; Bool</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#isHtmlMimeType"
->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%3AisXmlMimeType"
-></A
-><B
->isXmlMimeType</B
-> :: String -&gt; Bool</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html#isXmlMimeType"
 >Source</A
 ></TD
 ></TR
diff --git a/doc/hdoc/Text-XML-HXT-DOM-XmlNode.html b/doc/hdoc/Text-XML-HXT-DOM-XmlNode.html
--- a/doc/hdoc/Text-XML-HXT-DOM-XmlNode.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-XmlNode.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-XmlNode.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM-XmlOptions.html b/doc/hdoc/Text-XML-HXT-DOM-XmlOptions.html
--- a/doc/hdoc/Text-XML-HXT-DOM-XmlOptions.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-XmlOptions.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-XmlOptions.html"
 >Source code</A
@@ -171,6 +171,16 @@
 >Attributes</A
 > -&gt; Bool</TD
 ></TR
+><TR
+><TD CLASS="s8"
+></TD
+></TR
+><TR
+><TD CLASS="decl"
+><A HREF="#v%3AisTrueValue"
+>isTrueValue</A
+> :: String -&gt; Bool</TD
+></TR
 ></TABLE
 ></TD
 ></TR
@@ -578,6 +588,41 @@
  and checks if the value represents True. The following strings are interpreted
  as true: &quot;1&quot;, &quot;True&quot;, &quot;true&quot;, &quot;yes&quot;, &quot;Yes&quot;.
 </P
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AisTrueValue"
+></A
+><B
+>isTrueValue</B
+> :: String -&gt; Bool</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-DOM-XmlOptions.html#isTrueValue"
+>Source</A
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="doc"
+><P
+>check whether a string represents True
+</P
+><P
+>definition:
+</P
+><PRE
+> isTrueValue	= (`elem` [&quot;1&quot;, &quot;True&quot;, &quot;true&quot;, &quot;Yes&quot;, &quot;yes&quot;])
+</PRE
 ></TD
 ></TR
 ><TR
diff --git a/doc/hdoc/Text-XML-HXT-DOM-XmlState.html b/doc/hdoc/Text-XML-HXT-DOM-XmlState.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-DOM-XmlState.html
+++ /dev/null
@@ -1,2903 +0,0 @@
-<!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.HXT.DOM.XmlState</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.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.HXT.DOM.XmlState</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->This module provides a Monad for an internal state and IO commands.
- The state consists of two parts, the user state and the system state
- user state ist a type parameter, the system state is a list
- name-value pair. If the user state is not needed, the type parameter
- can be instantiated with <TT
->()</TT
->.
-</P
-><P
->Furthermore there are types for Xml filter working on this monad
- and functions for manipulating the state components
- and for lifting i/o commands and XmlFilter to monad filters.
-</P
-><P
->Error reporting functions are also located in this module.
-</P
-><P
->Version : $Id: XmlState.hs,v 1.3 2005<EM
->05</EM
->27 13:15:23 hxml Exp $
-</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%3ASysState"
->SysState</A
->  = <A HREF="#v%3ASysState"
->SysState</A
-> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="recfield"
-><A HREF="#v%3AsysStateAttrs"
->sysStateAttrs</A
-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"
->SysStateAttrs</A
-></TD
-></TR
-><TR
-><TD CLASS="recfield"
-><A HREF="#v%3AsysStateErrorHandler"
->sysStateErrorHandler</A
-> :: !(<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> ())</TD
-></TR
-></TABLE
->}</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->type</SPAN
-> <A HREF="#t%3ASysStateAttrs"
->SysStateAttrs</A
-> = AssocList String XmlTrees</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3AXmlState"
->XmlState</A
-> state = <A HREF="#v%3AXmlState"
->XmlState</A
-> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="recfield"
-><A HREF="#v%3AsysState"
->sysState</A
-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-></TR
-><TR
-><TD CLASS="recfield"
-><A HREF="#v%3AuserState"
->userState</A
-> :: !state</TD
-></TR
-></TABLE
->}</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->type</SPAN
-> <A HREF="#t%3AXState"
->XState</A
-> state res = <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"
->XmlState</A
-> state) res</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->type</SPAN
-> <A HREF="#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state = XmlTree -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state XmlTrees</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AchangeState"
->changeState</A
-> :: (state -&gt; state) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetState"
->setState</A
-> :: state -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetState"
->getState</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AchangeSysState"
->changeSysState</A
-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
->) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetSysState"
->setSysState</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetSysState"
->getSysState</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AinitialSysState"
->initialSysState</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AchangeSysStateAttrs"
->changeSysStateAttrs</A
-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"
->SysStateAttrs</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"
->SysStateAttrs</A
->) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetSysErrorHandler"
->setSysErrorHandler</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> () -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetSysErrorHandler"
->getSysErrorHandler</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> ())</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetSysParamTree"
->setSysParamTree</A
-> :: String -&gt; XmlTrees -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetSysParam"
->setSysParam</A
-> :: String -&gt; String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetSysParamInt"
->setSysParamInt</A
-> :: String -&gt; Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetSystemParams"
->setSystemParams</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetSysParamTree"
->getSysParamTree</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state XmlTrees</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetSysParam"
->getSysParam</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetSysParamWithDefault"
->getSysParamWithDefault</A
-> :: String -&gt; String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetSysParamInt"
->getSysParamInt</A
-> :: String -&gt; Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state Int</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Arun0"
->run0</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"
->XmlState</A
-> state -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state res -&gt; IO (res, <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"
->XmlState</A
-> state)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Arun"
->run</A
-> :: state -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state res -&gt; IO res</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Arun%27"
->run'</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> () res -&gt; IO res</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Achain%27"
->chain'</A
-> :: state1 -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state1 res -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state0 (res, state1)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Achain"
->chain</A
-> :: state1 -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state1 res -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state0 res</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AliftF"
->liftF</A
-> :: XmlFilter -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Aio"
->io</A
-> :: IO a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetTraceLevel"
->setTraceLevel</A
-> :: Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetTraceLevel"
->getTraceLevel</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state Int</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtraceCmd"
->traceCmd</A
-> :: Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Atrace"
->trace</A
-> :: Int -&gt; String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AtraceState"
->traceState</A
-> :: Int -&gt; (state -&gt; String) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AclearStatus"
->clearStatus</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AissueError"
->issueError</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AerrorMsgHandler"
->errorMsgHandler</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetErrorMsgLevel"
->setErrorMsgLevel</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AerrorMsgToStderr"
->errorMsgToStderr</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AerrorMsgLogging"
->errorMsgLogging</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AerrorMsgLoggingAndToStderr"
->errorMsgLoggingAndToStderr</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetErrorMsg"
->getErrorMsg</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AerrClass"
->errClass</A
-> :: Int -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AissueWarn"
->issueWarn</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AissueErr"
->issueErr</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AissueFatal"
->issueFatal</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AaddFatal"
->addFatal</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AcheckStatus"
->checkStatus</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetStatus"
->setStatus</A
-> :: Int -&gt; String -&gt; XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AstatusOk"
->statusOk</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AcheckResult"
->checkResult</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AprocessAttrM"
->processAttrM</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</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%3ASysState"
-></A
-><B
->SysState</B
-> </TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#SysState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->The internal system state consists of a list of name-value pairs
- of type <TT
->(String, XmlTrees)</TT
->, so arbitrary lists of trees can be stored.
- For options, often only strings are used as values, so a set of access
- functions with string values is available
- The error handling method can be controlled by an error handler filter,
- the default filter issues the errors on stderr
-</TD
-></TR
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ASysState"
-></A
-><B
->SysState</B
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="body" COLSPAN="2"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AsysStateAttrs"
-></A
-><B
->sysStateAttrs</B
-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"
->SysStateAttrs</A
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AsysStateErrorHandler"
-></A
-><B
->sysStateErrorHandler</B
-> :: !(<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> ())</TD
-><TD CLASS="rdoc"
-></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"
->type</SPAN
-> <A NAME="t%3ASysStateAttrs"
-></A
-><B
->SysStateAttrs</B
-> = AssocList String XmlTrees</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#SysStateAttrs"
->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%3AXmlState"
-></A
-><B
->XmlState</B
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#XmlState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->The State has a system and a user part
- the user state is a type parameter
-</TD
-></TR
-><TR
-><TD CLASS="section4"
->Constructors</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AXmlState"
-></A
-><B
->XmlState</B
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="body" COLSPAN="2"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AsysState"
-></A
-><B
->sysState</B
-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3AuserState"
-></A
-><B
->userState</B
-> :: !state</TD
-><TD CLASS="rdoc"
-></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"
->type</SPAN
-> <A NAME="t%3AXState"
-></A
-><B
->XState</B
-> state res = <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
->StateIO</A
-> (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"
->XmlState</A
-> state) res</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#XState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->The monad type for commands. It is an instance of <A HREF="StateIO.html"
->StateIO</A
-> from the
- general module <A HREF="Control-Monad-MonadStateIO.html"
->Control.Monad.MonadStateIO</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%3AXmlStateFilter"
-></A
-><B
->XmlStateFilter</B
-> state = XmlTree -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state XmlTrees</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#XmlStateFilter"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->The <A HREF="XmlFilter.html"
->XmlFilter</A
-> type for filters working on a state
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AchangeState"
-></A
-><B
->changeState</B
-> :: (state -&gt; state) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#changeState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->change the user state
-</P
-><UL
-><LI
-> 1.parameter fct :  the user state change function
-</LI
-><LI
-> returns : the new state
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetState"
-></A
-><B
->setState</B
-> :: state -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->set the user state.
-</P
-><UL
-><LI
-> 1.parameter s :  the new state
-</LI
-><LI
-> returns : the new state
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetState"
-></A
-><B
->getState</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read the user state
-</P
-><UL
-><LI
-> returns : the current state
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AchangeSysState"
-></A
-><B
->changeSysState</B
-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
->) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#changeSysState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->change the system part of the state.
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AchangeState"
->changeState</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetSysState"
-></A
-><B
->setSysState</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->set the system part of the state.
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetState"
->setState</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetSysState"
-></A
-><B
->getSysState</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read the system part of the state.
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetState"
->getState</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AinitialSysState"
-></A
-><B
->initialSysState</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#initialSysState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->the initial system state
-</P
-><P
->an empty list of attribute value pairs
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AchangeSysStateAttrs"
-></A
-><B
->changeSysStateAttrs</B
-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"
->SysStateAttrs</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"
->SysStateAttrs</A
->) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-> -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"
->SysState</A
-></TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#changeSysStateAttrs"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->change the attributes in the system state
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetSysErrorHandler"
-></A
-><B
->setSysErrorHandler</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> () -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysErrorHandler"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->set the error message handler
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetSysErrorHandler"
-></A
-><B
->getSysErrorHandler</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> ())</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysErrorHandler"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->get the error handler
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetSysParamTree"
-></A
-><B
->setSysParamTree</B
-> :: String -&gt; XmlTrees -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysParamTree"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->set or change a single system parameter.
-</P
-><UL
-><LI
-> 1.parameter name :  the name of the parameter
-</LI
-><LI
-> 2.parameter value :  the list of associated trees
-</LI
-><LI
-> returns : nothing
-</LI
-></UL
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParam"
->setSysParam</A
-></TT
->, <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParamInt"
->setSysParamInt</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetSysParam"
-></A
-><B
->setSysParam</B
-> :: String -&gt; String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysParam"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->set or change a single system parameter of type string.
-</P
-><UL
-><LI
-> 1.parameter name :  the name of the parameter
-</LI
-><LI
-> 2.parameter value :  the (new) string value
-</LI
-><LI
-> returns : nothing
-</LI
-></UL
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParamTree"
->setSysParamTree</A
-></TT
->, setSysParamInt
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetSysParamInt"
-></A
-><B
->setSysParamInt</B
-> :: String -&gt; Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysParamInt"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->set or change a single integer type system parameter
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParam"
->setSysParam</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetSystemParams"
-></A
-><B
->setSystemParams</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSystemParams"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->add (or change) all attributes of the document root to the system state
-     - returns : this
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetSysParamTree"
-></A
-><B
->getSysParamTree</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state XmlTrees</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParamTree"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read a system parameter
-</P
-><UL
-><LI
-> 1.parameter name :  the name of the parameter
-</LI
-><LI
-> returns : the list of tres associated with the key, or the empty list for unknown parameters
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetSysParam"
-></A
-><B
->getSysParam</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParam"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read a system string parameter
-</P
-><UL
-><LI
-> 1.parameter name :  the name of the parameter
-</LI
-><LI
-> returns : the value, or the empty string for unknown parameters
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetSysParamWithDefault"
-></A
-><B
->getSysParamWithDefault</B
-> :: String -&gt; String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParamWithDefault"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read a system parameter or return a default value
-</P
-><UL
-><LI
-> 1.parameter name :  the name of the parameter
-</LI
-><LI
-> 2.parameter default :  the default value
-</LI
-><LI
-> returns : the value if found, else the default
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetSysParamInt"
-></A
-><B
->getSysParamInt</B
-> :: String -&gt; Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state Int</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParamInt"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read an integer system parameter
-</P
-><UL
-><LI
-> 1.parameter name : 
-</LI
-><LI
-> 2.parameter default : 
-</LI
-></UL
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysParamWithDefault"
->getSysParamWithDefault</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Arun0"
-></A
-><B
->run0</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"
->XmlState</A
-> state -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state res -&gt; IO (res, <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"
->XmlState</A
-> state)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#run0"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->exec a XState command with initial state.
-</P
-><UL
-><LI
-> 1.parameter initalState :  the inital user state
-</LI
-><LI
-> 2.parameter cmd :  the command
-</LI
-><LI
-> returns : the i/o command with result and user state
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Arun"
-></A
-><B
->run</B
-> :: state -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state res -&gt; IO res</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#run"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->exec a XState command with initial user state.
- ignore final user state.
- like run0, but ignore the resulting user state
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Arun%27"
-></A
-><B
->run'</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> () res -&gt; IO res</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#run%27"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->exec a XState command in th IO monad.
- like run with the empty state ().
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Achain%27"
-></A
-><B
->chain'</B
-> :: state1 -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state1 res -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state0 (res, state1)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#chain%27"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->run a command in a new user state.
- chain the system state part,
- init new system state with the current one, run the command and
- update the old system state with the resulting new system state
-</P
-><UL
-><LI
-> 1.parameter initialUserState :  the initial user state
-</LI
-><LI
-> 2.parameter cmd :  the command
-</LI
-><LI
-> returns : the result of executing cmd and the final state
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Achain"
-></A
-><B
->chain</B
-> :: state1 -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state1 res -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state0 res</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#chain"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->like chain' but forget the final user state
-</P
-><UL
-><LI
-> 1.parameter initialUserState :  the initial user state
-</LI
-><LI
-> 2.parameter cmd :  the command
-</LI
-><LI
-> returns : only the result of executing cmd
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AliftF"
-></A
-><B
->liftF</B
-> :: XmlFilter -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#liftF"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->lift a XmlFilter to a XmlStateFilter filter
- issue all error nodes as error messages
- and remove the error nodes from the result
-</P
-><UL
-><LI
-> 1.parameter f :  the filter
-</LI
-><LI
-> returns : the filter running in the state monad
-</LI
-></UL
-><P
->all errors are filtered from the result and issued on stderr
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Aio"
-></A
-><B
->io</B
-> :: IO a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#io"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->lift an I/O command
-</P
-><UL
-><LI
-> 1.parameter cmd :  the i/o command
-</LI
-><LI
-> returns : the i/o command lifted to the XML state monad
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetTraceLevel"
-></A
-><B
->setTraceLevel</B
-> :: Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setTraceLevel"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->set the trace level.
-</P
-><P
->convention:
-</P
-><P
->0: no trace output (default)
-</P
-><P
->1: trace important computation steps, e.g. accessing a document
-</P
-><P
->2: trace small computation steps
-</P
-><P
->3: output an intermediate result XmlTree in XML source format
-</P
-><P
->4: output an intermediate result XmlTree in tree representation
-</P
-><UL
-><LI
-> 1.parameter level :  the trace level
-</LI
-><LI
-> returns : nothing
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetTraceLevel"
-></A
-><B
->getTraceLevel</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state Int</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getTraceLevel"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->get the current trace level.
-</P
-><UL
-><LI
-> returns : the current trace level
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtraceCmd"
-></A
-><B
->traceCmd</B
-> :: Int -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#traceCmd"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->trace output for arbitray commands.
-</P
-><UL
-><LI
-> 1.parameter level :  the trace level,
-			  for which the command will be execuded
-			  if level &lt;= current trace level
-</LI
-><LI
-> 2.parameter cmd :  the command to be executed
-</LI
-><LI
-> returns : nothing
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Atrace"
-></A
-><B
->trace</B
-> :: Int -&gt; String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#trace"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->trace output function for simple text.
-</P
-><UL
-><LI
-> 1.parameter level :  like in traceCmd
-</LI
-><LI
-> 2.parameter str :  the test
-</LI
-><LI
-> returns : nothing
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AtraceState"
-></A
-><B
->traceState</B
-> :: Int -&gt; (state -&gt; String) -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#traceState"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->trace output of the user part of the program state.
-</P
-><UL
-><LI
-> 1.parameter level :  like in traceCmd
-</LI
-><LI
-> 2.parameter showFct :  the toString function
-</LI
-><LI
-> returns : nothing
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AclearStatus"
-></A
-><B
->clearStatus</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#clearStatus"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->filter to reset the state attribute a_status
-    - returns : this
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AissueError"
-></A
-><B
->issueError</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueError"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->report an error message.
-</P
-><UL
-><LI
-> returns : if the input tree n represents an error, <TT
->res = []</TT
->
-		  and the error is processed by the errror handler filter (default: error is issued on stderr)
-		  else <TT
->res = [n]</TT
->
-</LI
-></UL
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueErr"
->issueErr</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AerrorMsgHandler"
-></A
-><B
->errorMsgHandler</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgHandler"
->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%3AsetErrorMsgLevel"
-></A
-><B
->setErrorMsgLevel</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setErrorMsgLevel"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->set the error level in system state
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AerrorMsgToStderr"
-></A
-><B
->errorMsgToStderr</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgToStderr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->default error handler for writing errors to stderr
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AerrorMsgLogging"
-></A
-><B
->errorMsgLogging</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgLogging"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->error message handler for collecting all error messages
- all messages are stored under attribute a_error_log
- they can be read with <TT
->getSysParamTree a_error_log</TT
-> or by
- applying the filter <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetErrorMsg"
->getErrorMsg</A
-></TT
-> to the root node
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AerrorMsgLoggingAndToStderr"
-></A
-><B
->errorMsgLoggingAndToStderr</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgLoggingAndToStderr"
->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%3AgetErrorMsg"
-></A
-><B
->getErrorMsg</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getErrorMsg"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->the filter for reading all collected error mesages
-</P
-><P
->result is the list of error messages, the input tree is ignored
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AerrClass"
-></A
-><B
->errClass</B
-> :: Int -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errClass"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->error level translation
- c_warn (1) : warning,
- c_err (2): error (e.g. parse error, validation error, ...),
- c_fatal (3) : fatal error (document access error, internal error, ...)
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AissueWarn"
-></A
-><B
->issueWarn</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueWarn"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->short cut for issuing a warning
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueError"
->issueError</A
-></TT
->, <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueErr"
->issueErr</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AissueErr"
-></A
-><B
->issueErr</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueErr"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->short cut for issuing an error
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueError"
->issueError</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AissueFatal"
-></A
-><B
->issueFatal</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueFatal"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->short cut for issuing a fatal error
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueError"
->issueError</A
-></TT
->, <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueErr"
->issueErr</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AaddFatal"
-></A
-><B
->addFatal</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#addFatal"
->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%3AcheckStatus"
-></A
-><B
->checkStatus</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#checkStatus"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->checks the value of the attribute a_status in a document root.
- if it contains a value greater or equal to c_err, an error with error message
- stored in attribute a_module is issued and the filter acts as the noneM filter
- else its the thisM filter
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetStatus"
-></A
-><B
->setStatus</B
-> :: Int -&gt; String -&gt; XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setStatus"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->add the error level and the module where the error occured
- to the attributes of a document root node and remove the children when level is greater or equal to c_err
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AstatusOk"
-></A
-><B
->statusOk</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#statusOk"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->check whether tree is a document root and the status attribute has a value less than c_err
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AcheckResult"
-></A
-><B
->checkResult</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#checkResult"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->check whether the error level attribute in the system state
- is set to error, in this case the children of the document root are
- removed and error info is added as attributes with <TT
-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetStatus"
->setStatus</A
-></TT
->
- else nothing is changed
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AprocessAttrM"
-></A
-><B
->processAttrM</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#processAttrM"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->monadic filter for processing the attribute list of a tag.
- for other trees this filter acts like noneM
-</P
-><P
->see also : processAttr, processAttrl
-</P
-></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/doc/hdoc/Text-XML-HXT-DOM-XmlTreeTypes.html b/doc/hdoc/Text-XML-HXT-DOM-XmlTreeTypes.html
--- a/doc/hdoc/Text-XML-HXT-DOM-XmlTreeTypes.html
+++ b/doc/hdoc/Text-XML-HXT-DOM-XmlTreeTypes.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DOM.html b/doc/hdoc/Text-XML-HXT-DOM.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-DOM.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!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.HXT.DOM</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-DOM.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.HXT.DOM</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->DOM data types and functions
-</P
-><P
->Version : $Id: DOM.hs,v 1.2 2006<EM
->11</EM
->12 14:52:59 hxml Exp $
-</P
-><P
->export of all basic datatypes and functions of the toolbox DOM.
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-XmlState.html"
->Text.XML.HXT.DOM.XmlState</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-FormatXmlTree.html"
->Text.XML.HXT.DOM.FormatXmlTree</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-Namespace.html"
->Text.XML.HXT.DOM.Namespace</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM-XmlOptions.html"
->Text.XML.HXT.DOM.XmlOptions</A
-></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/doc/hdoc/Text-XML-HXT-DTDValidation-AttributeValueValidation.html b/doc/hdoc/Text-XML-HXT-DTDValidation-AttributeValueValidation.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-AttributeValueValidation.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-AttributeValueValidation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-AttributeValueValidation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-DTDValidation.html b/doc/hdoc/Text-XML-HXT-DTDValidation-DTDValidation.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-DTDValidation.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-DTDValidation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-DTDValidation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-DocTransformation.html b/doc/hdoc/Text-XML-HXT-DTDValidation-DocTransformation.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-DocTransformation.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-DocTransformation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-DocTransformation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-DocValidation.html b/doc/hdoc/Text-XML-HXT-DTDValidation-DocValidation.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-DocValidation.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-DocValidation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-DocValidation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-IdValidation.html b/doc/hdoc/Text-XML-HXT-DTDValidation-IdValidation.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-IdValidation.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-IdValidation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-IdValidation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-RE.html b/doc/hdoc/Text-XML-HXT-DTDValidation-RE.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-RE.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-RE.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-RE.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-TypeDefs.html b/doc/hdoc/Text-XML-HXT-DTDValidation-TypeDefs.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-TypeDefs.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-TypeDefs.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-TypeDefs.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-Validation.html b/doc/hdoc/Text-XML-HXT-DTDValidation-Validation.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-Validation.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-Validation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-Validation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-DTDValidation-XmlRE.html b/doc/hdoc/Text-XML-HXT-DTDValidation-XmlRE.html
--- a/doc/hdoc/Text-XML-HXT-DTDValidation-XmlRE.html
+++ b/doc/hdoc/Text-XML-HXT-DTDValidation-XmlRE.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-DTDValidation-XmlRE.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-IO-GetFILE.html b/doc/hdoc/Text-XML-HXT-IO-GetFILE.html
--- a/doc/hdoc/Text-XML-HXT-IO-GetFILE.html
+++ b/doc/hdoc/Text-XML-HXT-IO-GetFILE.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-IO-GetFILE.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-IO-GetHTTPCurl.html b/doc/hdoc/Text-XML-HXT-IO-GetHTTPCurl.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-IO-GetHTTPCurl.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!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.HXT.IO.GetHTTPCurl</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-IO-GetHTTPCurl.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.HXT.IO.GetHTTPCurl</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetCont"
-></A
-><B
->getCont</B
-> :: String -&gt; String -&gt; String -&gt; IO (Either String ([(String, String)], String))</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-IO-GetHTTPCurl.html#getCont"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-IO-GetHTTPLibCurl.html b/doc/hdoc/Text-XML-HXT-IO-GetHTTPLibCurl.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/Text-XML-HXT-IO-GetHTTPLibCurl.html
@@ -0,0 +1,102 @@
+<!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.HXT.IO.GetHTTPLibCurl</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock-util.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"
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
+><TD CLASS="topbut"
+><A HREF="src/Text-XML-HXT-IO-GetHTTPLibCurl.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.HXT.IO.GetHTTPLibCurl</FONT
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Documentation</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3AgetCont"
+></A
+><B
+>getCont</B
+> :: [(String, String)] -&gt; String -&gt; IO (Either String ([(String, String)], String))</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-IO-GetHTTPLibCurl.html#getCont"
+>Source</A
+></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/doc/hdoc/Text-XML-HXT-IO-GetHTTPNative.html b/doc/hdoc/Text-XML-HXT-IO-GetHTTPNative.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-IO-GetHTTPNative.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!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.HXT.IO.GetHTTPNative</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-IO-GetHTTPNative.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.HXT.IO.GetHTTPNative</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetCont"
-></A
-><B
->getCont</B
-> :: String -&gt; String -&gt; IO (Either String ([(String, String)], String))</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-IO-GetHTTPNative.html#getCont"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-Parser-DTDProcessing.html b/doc/hdoc/Text-XML-HXT-Parser-DTDProcessing.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-DTDProcessing.html
+++ /dev/null
@@ -1,346 +0,0 @@
-<!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.HXT.Parser.DTDProcessing</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.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.HXT.Parser.DTDProcessing</FONT
-></TD
-><TD ALIGN="right"
-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="infohead"
->Portability</TD
-><TD CLASS="infoval"
->portable</TD
-></TR
-><TR
-><TD CLASS="infohead"
->Stability</TD
-><TD CLASS="infoval"
->experimental</TD
-></TR
-><TR
-><TD CLASS="infohead"
->Maintainer</TD
-><TD CLASS="infoval"
->Uwe Schmidt (uwe@fh-wedel.de)</TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Version    : $Id: DTDProcessing.hs,v 1.15 2006<EM
->11</EM
->12 14:53:00 hxml Exp $
-</P
-><P
->DTD processing function for
-   including external parts of a DTD
-   parameter entity substitution and general entity substitution
-</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"
-><A HREF="#v%3AgetWellformedDoc"
->getWellformedDoc</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AcheckWellformedDoc"
->checkWellformedDoc</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AprocessDTD"
->processDTD</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AprocessGeneralEntities"
->processGeneralEntities</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetWellformedDoc"
-></A
-><B
->getWellformedDoc</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#getWellformedDoc"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->monadic filter for reading, parsing and checking a wellformed document.
- the input tree must consist of a root node with a source attribute
- in its attribute list.
-</P
-><P
->All attributes from the document root are copied into the system state,
- and may be queried by the monadic filters, e.g. trace options.
-</P
-><P
->Result is the single element list containing the well-formed document tree
- or, in case of errors, the document root with an empty list as children
- and attributes a_status and a_module for error level and the module,
- where the error occured.
-</P
-><P
->this is a shortcut for <TT
-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlContents"
->getXmlContents</A
-></TT
-> .&gt;&gt; <TT
-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html#v%3AcheckWellformedDoc"
->checkWellformedDoc</A
-></TT
->
-</P
-><P
->example for a main program:
-</P
-><PRE
->
- main =
-   run' $
-   do
-   res  &lt;- getWellformedDoc $ newDocument &quot;myfile.xml&quot;
-   ...
- </PRE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AcheckWellformedDoc"
-></A
-><B
->checkWellformedDoc</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#checkWellformedDoc"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->parses a text node with parseXmlDoc, processes the DTD and general entities
- and transforms all char references into characters
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AprocessDTD"
-></A
-><B
->processDTD</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#processDTD"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->a filter for DTD processing
-</P
-><P
->inclusion of external parts of DTD,
- parameter entity substitution
- conditional section evaluation
-</P
-><P
->input tree must represent a complete document including root node
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AprocessGeneralEntities"
-></A
-><B
->processGeneralEntities</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#processGeneralEntities"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->substitution of general entities
-</P
-><P
->input: a complete document tree including root node
-</P
-></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/doc/hdoc/Text-XML-HXT-Parser-DefaultURI.html b/doc/hdoc/Text-XML-HXT-Parser-DefaultURI.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-DefaultURI.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!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.HXT.Parser.DefaultURI</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-DefaultURI.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.HXT.Parser.DefaultURI</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetDefaultURI"
-></A
-><B
->setDefaultURI</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-DefaultURI.html#setDefaultURI"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-Parser-HtmlParsec.html b/doc/hdoc/Text-XML-HXT-Parser-HtmlParsec.html
--- a/doc/hdoc/Text-XML-HXT-Parser-HtmlParsec.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-HtmlParsec.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-HtmlParsec.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-HtmlParser.html b/doc/hdoc/Text-XML-HXT-Parser-HtmlParser.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-HtmlParser.html
+++ /dev/null
@@ -1,358 +0,0 @@
-<!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.HXT.Parser.HtmlParser</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.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.HXT.Parser.HtmlParser</FONT
-></TD
-><TD ALIGN="right"
-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="infohead"
->Portability</TD
-><TD CLASS="infoval"
->portable</TD
-></TR
-><TR
-><TD CLASS="infohead"
->Stability</TD
-><TD CLASS="infoval"
->stable</TD
-></TR
-><TR
-><TD CLASS="infohead"
->Maintainer</TD
-><TD CLASS="infoval"
->Uwe Schmidt (uwe@fh-wedel.de)</TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->This parser tries to interprete everything as HTML
-   no errors are emitted during parsing. If something looks
-   weired, warning messages are inserted in the document tree.
-</P
-><P
->Module contains state filter for easy parsing and error handling
-   real work is done in <TT
-><A HREF="Text-XML-HXT-Parser.html#t%3AHtmlParsec"
->HtmlParsec</A
-></TT
->
-</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"
-><A HREF="#v%3AgetHtmlDoc"
->getHtmlDoc</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AparseHtmlDoc"
->parseHtmlDoc</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3ArunHtmlParser"
->runHtmlParser</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsubstHtmlEntities"
->substHtmlEntities</A
-> :: XmlTree -&gt; XmlTrees</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Parser-HtmlParsec.html"
->Text.XML.HXT.Parser.HtmlParsec</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetHtmlDoc"
-></A
-><B
->getHtmlDoc</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#getHtmlDoc"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read a document and parse it with <TT
-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AparseHtmlDoc"
->parseHtmlDoc</A
-></TT
->. The main entry point of this module
-</P
-><P
->The input tree must be a root tree like in '	Text.XML.HXT.Parser.MainFunctions.getXmlDoc'. The content is read with <TT
-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlContents"
->getXmlContents</A
-></TT
->,
- is parsed with <TT
-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AparseHtmlDoc"
->parseHtmlDoc</A
-></TT
-> and canonicalized (char refs are substituted in content and attributes,
- but comment is preserved)
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html#v%3AgetWellformedDoc"
->getWellformedDoc</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AparseHtmlDoc"
-></A
-><B
->parseHtmlDoc</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#parseHtmlDoc"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->The HTML parsing filter
-</P
-><P
->The input is parsed with <TT
-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3ArunHtmlParser"
->runHtmlParser</A
-></TT
->, everything is interpreted as HTML,
- if errors ocuur, the parser will try to do some meaningfull action and continues
- parsing. Afterwards the entitiy references for defined for XHTML are resovled,
- any unresolved reference is transformed into plain text.
-</P
-><P
->Error messages
- during parsing and entity resolving are added as warning nodes into the resulting tree.
-</P
-><P
->The warnings are issued, if the 1. parameter noWarnings is set to True,
- afterwards all are removed from the resulting tree.
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3ArunHtmlParser"
-></A
-><B
->runHtmlParser</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#runHtmlParser"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->The pure HTML parser, usually called via <TT
-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AparseHtmlDoc"
->parseHtmlDoc</A
-></TT
->.
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsubstHtmlEntities"
-></A
-><B
->substHtmlEntities</B
-> :: XmlTree -&gt; XmlTrees</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#substHtmlEntities"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Parser-HtmlParsec.html"
->Text.XML.HXT.Parser.HtmlParsec</A
-></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/doc/hdoc/Text-XML-HXT-Parser-MainFunctions.html b/doc/hdoc/Text-XML-HXT-Parser-MainFunctions.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-MainFunctions.html
+++ /dev/null
@@ -1,561 +0,0 @@
-<!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.HXT.Parser.MainFunctions</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.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.HXT.Parser.MainFunctions</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Simple parse functions.
-</P
-><P
->Version : $Id: MainFunctions.hs,v 1.2 2004<EM
->11</EM
->20 16:53:15 hxml Exp $
-</P
-><P
->the main building blocks for an application.
- this module exports complex filters and functions for
- common tasks for input and parsing, output and option handling.
-</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"
-><A HREF="#v%3AgetXmlDocument"
->getXmlDocument</A
-> :: Attributes -&gt; String -&gt; IO (XmlTree, XmlTrees, Int)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AputXmlDocument"
->putXmlDocument</A
-> :: Attributes -&gt; String -&gt; XmlTree -&gt; IO (XmlTrees, Int)</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AparseDocument"
->parseDocument</A
-> :: Attributes -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AwriteDocument"
->writeDocument</A
-> :: Attributes -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetXmlDocument"
-></A
-><B
->getXmlDocument</B
-> :: Attributes -&gt; String -&gt; IO (XmlTree, XmlTrees, Int)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#getXmlDocument"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->convenient function for reading a XML document without
- dealing with state monads, error messages collection and other details
-</P
-><P
->getXmlDocument calls <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AparseDocument"
->parseDocument</A
-></TT
-> with the list of parsing options
- and an url or filename as document source.
-</P
-><P
->result is a triple
-</P
-><UL
-><LI
-> the resulting document tree with a root node containing all
-   meta info about the document (options, status info, http header, ...)
-</LI
-><LI
-> the list of errors and warnings
-</LI
-><LI
-> the error level: one of c_ok, c_warn, c_err, c_fatal
-</LI
-></UL
-><P
->example for input (see also example in <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AputXmlDocument"
->putXmlDocument</A
-></TT
-> and example in <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AwriteDocument"
->writeDocument</A
-></TT
->)
-</P
-><PRE
-> main :: IO ()
- main
-   = do
-     (res, errs, rc) &lt;- getXmlDocument [] &quot;test.xml&quot;
-     if rc &gt;= c_err
-       then issueErrors errs
-       else processTree res
-
- issueErrors :: XmlTrees -&gt; IO ()
-
- processTree :: XmlTree  -&gt; IO ()
-</PRE
-><P
->for options see <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AparseDocument"
->parseDocument</A
-></TT
->, a_collect_errors is set implicitly
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AputXmlDocument"
-></A
-><B
->putXmlDocument</B
-> :: Attributes -&gt; String -&gt; XmlTree -&gt; IO (XmlTrees, Int)</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#putXmlDocument"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->the inverse operation to <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AgetXmlDocument"
->getXmlDocument</A
-></TT
->
-</P
-><P
->writes a complete document tree to a file, writing can be
- controlled by options, the real work is done with filter <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AwriteDocument"
->writeDocument</A
-></TT
->.
- useful options are the options of <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AwriteDocument"
->writeDocument</A
-></TT
->.
-</P
-><P
->result is a pair: 1.part is a list of error messages, 2. part is the return code,
- the status info of the write filter
-</P
-><P
->this filter is useful, when processing XML in an arbitray context in the IO monad
-</P
-><P
->an example main program for such an application is:
-</P
-><PRE
-> main :: IO ()
- main
-   = do
-     (input, readErrs, rc) &lt;- getXmlDocument [...] &quot;test.xml&quot;
-     if rc &gt;= c_err
-       then issueErrors readErrs
-       else processTree input
-
- processTree :: XmlTree -&gt; IO ()
- processTree t
-   = let res = computeNewTree input
-     in do
-        (writeErrs, rc2) &lt;- putXmlDocument [...] &quot;out.xml&quot; res
-        if rc2 &gt;= c_err
-          then issueErrors writeErrs
-          else return ()
-
- issueErrors :: XmlTrees -&gt; IO ()
-
- computeNewTree :: XmlTree -&gt; XmlTree
-</PRE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AparseDocument"
-></A
-><B
->parseDocument</B
-> :: Attributes -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#parseDocument"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->the main parsing filter
-</P
-><P
->this filter can be configured by an option list, a list of
- option name, option value pairs.
- the input tree must be a possibly empty document root tree.
- all the options are stored as attributes in this root node to control processing.
-</P
-><P
->available options:
-</P
-><UL
-><LI
-> a_parse_html: use HTML parser, else use XML parser (default)
-</LI
-><LI
-> a_validate : validate document (default), else skip validation
-</LI
-><LI
-> a_check_namespaces : check namespaces, else skip namespace processing (default)
-</LI
-><LI
-> a_canonicalize : canonicalize document (default), else skip canonicalization
-</LI
-><LI
-> a_preserve_comment : preserve comments during canonicalization, else remove comments (default)
-</LI
-><LI
-> a_remove_whitespace : remove all whitespace, used for document indentation, else skip this step (default)
-</LI
-><LI
-> a_indent : indent document by inserting whitespace, else skip this step (default)
-</LI
-><LI
-> a_issue_warnings : issue warnings, when parsing HTML (default), else ignore HTML parser warnings
-</LI
-><LI
-> a_issue_errors : issue all error messages on stderr (default), or ignore all error messages
-</LI
-><LI
-> a_collect_errors : all error messages are collected during processing and appended to the result document
- 			  for further processing within the calling modules
-</LI
-><LI
-> a_trace : trace level: values: 0 -4
-</LI
-><LI
-> a_proxy : proxy for http access, e.g. www-cache:3128
-</LI
-><LI
-> a_use_curl : for http access via external programm curl, default is native HTTP access
-</LI
-><LI
-> a_options_curl : more options for external program curl
-</LI
-><LI
-> a_source : the document source url
-</LI
-><LI
-> a_encoding : default document encoding (utf8, isoLatin1, usAscii, ...)
-</LI
-></UL
-><P
->examples:
-</P
-><PRE
-> parseDocument [ (a_source,   &quot;test.xml&quot;)
-               , (a_validate, &quot;0&quot;)
-               , (a_encoding, isoLatin1)
-               ] emptyRoot
-</PRE
-><P
->reads document &quot;test.xml&quot; without validation and default encoding isoLatin1
-</P
-><PRE
-> parseDocument [ (a_source,         &quot;http://www.haskell.org/&quot;)
-               , (a_parse_html,     &quot;1&quot;)
-               , (a_proxy,          &quot;www-cache:3128&quot;)
-               , (a_curl,           &quot;1&quot;)
-               , (a_issue_warnings, &quot;0&quot;)
-               ] emptyRoot
-</PRE
-><P
->reads Haskell homepage with HTML parser ignoring any warnings and with http access via external program curl and proxy &quot;www-cache&quot; at port 3128
-</P
-><PRE
-> parseDocument [ (a_source,            &quot;http://www.w3c.org/&quot;)
-               , (a_parse_html,        &quot;0&quot;)                       -- default
-               , (a_validate,          &quot;1&quot;)                       -- default
-               , (a_check_namespace,   &quot;1&quot;)
-               , (a_remove_whitespace, &quot;1&quot;)
-               , (a_trace,             &quot;2&quot;)
-               ] emptyRoot
-</PRE
-><P
->read w3c home page, validate and chech namespaces, remove whitespace between tags, trace activities with level 2
-</P
-><PRE
-> parseDocument [ (a_source,   &quot;test.xml&quot;)
-               , (a_validate,        &quot;1&quot;)
-               , (a_check_namespace, &quot;1&quot;)
-               , (a_collect_errors,  &quot;1&quot;)
-               , (a_issue_errors,    &quot;0&quot;)
-               ] emptyRoot
-</PRE
-><P
->reads file &quot;test.xml&quot;, validates it, checks namespaces, does not issue any erros
- but collects errors and appends the list of errors to the single element list for the document.
- this enables the calling application to define own error handlers.
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AwriteDocument"
-></A
-><B
->writeDocument</B
-> :: Attributes -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#writeDocument"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->the main filter for writing documents
-</P
-><P
->this filter can be configured by an option list like <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AgetXmlDocument"
->getXmlDocument</A
-></TT
->
-</P
-><P
->available options are
-</P
-><UL
-><LI
-> a_indent : indent document for readability, (default: no indentation)
-</LI
-><LI
-> a_remove_whitespace : remove all redundant whitespace for shorten text (default: no removal)
-</LI
-><LI
-> a_output_file : destination file for document, default is &quot;-&quot; for stdout
-</LI
-><LI
-> a_output_encoding : encoding of document, default is a_encoding or utf8
-</LI
-><LI
-> a_output_xml : (default) issue XML: quote special XML chars &gt;,&lt;,&quot;,',&amp;
-                    add XML processing instruction
-                    and encode document with respect to a_output_encoding,
-                    if explizitly switched of, the plain text is issued, this is useful
-                    for non XML output, e.g. generated Haskell code, LaTex, Java, ...
-</LI
-><LI
-> a_show_tree : show tree representation of document (for debugging)
-</LI
-><LI
-> a_show_haskell : show Haskell representaion of document (for debugging)
-</LI
-><LI
-> a_issue_errors, a_collect_errors : see <TT
-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AparseDocument"
->parseDocument</A
-></TT
->
-</LI
-></UL
-><P
->a typical main program running in the XmlState monad
-  has the following structure:
-</P
-><PRE
->
- main :: IO ()
- main
-     = do
-       argv &lt;- getArgs                                              -- get the commandline arguments
-       (inp, outp, options) &lt;- cmdlineOpts argv                     -- and evaluate them, return a key-value list
-                                                                    -- and input and output
-       res  &lt;- run' $ application inp outp options $ emptyRoot      -- run the application
- 
-       exitWith (if null res
-                 then ExitFailure (-1)
-                 else exitSuccess
-                )
-
- application :: String -&gt; String -&gt; Attributes -&gt; XmlStateFilter ()
- application inp outp al
-   = parseDocument (al ++ [(a_source, inp)])                        -- set options and source
-     .&gt;&gt;                                                            -- and parse document
-     processDocument                                                -- the hard work
-     .&gt;&gt;
-     writeDocument [(a_output_file, outp)]                          -- issue results
-     .&gt;&gt;
-     checkStatus                                                    -- check errors
-
-</PRE
-></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/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandler.html b/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandler.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandler.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!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.HXT.Parser.ProtocolHandler</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandler.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.HXT.Parser.ProtocolHandler</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetProtocolHandler"
-></A
-><B
->getProtocolHandler</B
-> :: String -&gt; URI -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandler.html#getProtocolHandler"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerFile.html b/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerFile.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerFile.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!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.HXT.Parser.ProtocolHandlerFile</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerFile.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.HXT.Parser.ProtocolHandlerFile</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetFileContents"
-></A
-><B
->getFileContents</B
-> :: URI -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerFile.html#getFileContents"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html b/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!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.HXT.Parser.ProtocolHandlerHttpCurl</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.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.HXT.Parser.ProtocolHandlerHttpCurl</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetHttpContentsWithCurl"
-></A
-><B
->getHttpContentsWithCurl</B
-> :: URI -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html#getHttpContentsWithCurl"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html b/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!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.HXT.Parser.ProtocolHandlerHttpNative</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.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.HXT.Parser.ProtocolHandlerHttpNative</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetHttpContentsWithHttp"
-></A
-><B
->getHttpContentsWithHttp</B
-> :: URI -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html#getHttpContentsWithHttp"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html b/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!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.HXT.Parser.ProtocolHandlerHttpNativeOrCurl</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.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.HXT.Parser.ProtocolHandlerHttpNativeOrCurl</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetHttpContentsNativeOrWithCurl"
-></A
-><B
->getHttpContentsNativeOrWithCurl</B
-> :: URI -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html#getHttpContentsNativeOrWithCurl"
->Source</A
-></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/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerUtil.html b/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerUtil.html
--- a/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerUtil.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerUtil.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerUtil.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-TagSoup.html b/doc/hdoc/Text-XML-HXT-Parser-TagSoup.html
--- a/doc/hdoc/Text-XML-HXT-Parser-TagSoup.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-TagSoup.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-TagSoup.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-XhtmlEntities.html b/doc/hdoc/Text-XML-HXT-Parser-XhtmlEntities.html
--- a/doc/hdoc/Text-XML-HXT-Parser-XhtmlEntities.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-XhtmlEntities.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-XhtmlEntities.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-XmlCharParser.html b/doc/hdoc/Text-XML-HXT-Parser-XmlCharParser.html
--- a/doc/hdoc/Text-XML-HXT-Parser-XmlCharParser.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-XmlCharParser.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-XmlCharParser.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-XmlDTDParser.html b/doc/hdoc/Text-XML-HXT-Parser-XmlDTDParser.html
--- a/doc/hdoc/Text-XML-HXT-Parser-XmlDTDParser.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-XmlDTDParser.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-XmlDTDParser.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-XmlDTDTokenParser.html b/doc/hdoc/Text-XML-HXT-Parser-XmlDTDTokenParser.html
--- a/doc/hdoc/Text-XML-HXT-Parser-XmlDTDTokenParser.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-XmlDTDTokenParser.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-XmlDTDTokenParser.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-XmlEntities.html b/doc/hdoc/Text-XML-HXT-Parser-XmlEntities.html
--- a/doc/hdoc/Text-XML-HXT-Parser-XmlEntities.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-XmlEntities.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-XmlEntities.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-XmlInput.html b/doc/hdoc/Text-XML-HXT-Parser-XmlInput.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser-XmlInput.html
+++ /dev/null
@@ -1,628 +0,0 @@
-<!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.HXT.Parser.XmlInput</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.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.HXT.Parser.XmlInput</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></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"
-><A HREF="#v%3AgetXmlContents"
->getXmlContents</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetXmlEntityContents"
->getXmlEntityContents</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetUrlContents"
->getUrlContents</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetContentLength"
->getContentLength</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AguessDocEncoding"
->guessDocEncoding</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3ArunInLocalURIContext"
->runInLocalURIContext</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3ArunInNewURIContext"
->runInNewURIContext</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetBaseURI"
->getBaseURI</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AsetBaseURI"
->setBaseURI</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AgetAbsolutURI"
->getAbsolutURI</A
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AisStandaloneDocument"
->isStandaloneDocument</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state Bool</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetXmlContents"
-></A
-><B
->getXmlContents</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getXmlContents"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->filter for reading the content of a XML document
-</P
-><P
->input is a root node with the source as an attibute
- the text is read, the encoding scheme is parsed and selected
- and the input is translated into the internal UTF-8 string representation
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetXmlEntityContents"
-></A
-><B
->getXmlEntityContents</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getXmlEntityContents"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->filter for reading the content of an external XML entity
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlContents"
->getXmlContents</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetUrlContents"
-></A
-><B
->getUrlContents</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getUrlContents"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->the hard io operations
-</P
-><P
->for reading a file or accessing a document via http
- input must be a root node with a <TT
->source</TT
-> attribute specifying the URI
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetContentLength"
-></A
-><B
->getContentLength</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getContentLength"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->compute the length of the data for a document read previously
- by a call of 'getUrlContents. The result is stored as an attribute
- value in the document root node. the attribute name is a_contentLength
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AguessDocEncoding"
-></A
-><B
->guessDocEncoding</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#guessDocEncoding"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->guessEncoding uses encoding attribute and content
- to determine the encoding scheme.
-</P
-><P
->it's assumed that an encoding spec has been tried to parse before guessing the encoding.
-</P
-><P
->UTF-8 is the default encoding
-</P
-><P
->other supported encodings are ISO-8859-1 (also known as ISO-Latin-1),
- US-ASCII, UTF-16 or ISO-10646-UCS-2, UTF-16BE, UTF-16LE
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3ArunInLocalURIContext"
-></A
-><B
->runInLocalURIContext</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#runInLocalURIContext"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->filter command for saving and restoring
- the base URI
-</P
-><UL
-><LI
-> 1.parameter f :  the filter that possible changes the base URI
-</LI
-><LI
-> returns : a filter with the same effect as f, that restores the base URI after application of f
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3ArunInNewURIContext"
-></A
-><B
->runInNewURIContext</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#runInNewURIContext"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->filter command for running an action in a new URI context
-</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetBaseURI"
-></A
-><B
->getBaseURI</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getBaseURI"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->read the current base URI
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AsetBaseURI"
->setBaseURI</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AsetBaseURI"
-></A
-><B
->setBaseURI</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state ()</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#setBaseURI"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->set the base URI, all other URIs are handled relative to this base URI
-</P
-><P
->the default base URI is <TT
->file:///&lt;current-working-dir&gt;/</TT
->
-</P
-><P
->see also : <TT
-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetBaseURI"
->getBaseURI</A
-></TT
->
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetAbsolutURI"
-></A
-><B
->getAbsolutURI</B
-> :: String -&gt; <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getAbsolutURI"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->transform an URI into an absolut URI using the current base URI
-</P
-><UL
-><LI
-> 1.parameter uri :  the URI as string
-</LI
-><LI
-> returns : the absolut URI as string or &quot;&quot; in case of an error
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AisStandaloneDocument"
-></A
-><B
->isStandaloneDocument</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"
->XState</A
-> state Bool</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#isStandaloneDocument"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
->predicate for testing the standalone document attribute
-</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/doc/hdoc/Text-XML-HXT-Parser-XmlParsec.html b/doc/hdoc/Text-XML-HXT-Parser-XmlParsec.html
--- a/doc/hdoc/Text-XML-HXT-Parser-XmlParsec.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-XmlParsec.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-XmlParsec.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser-XmlTokenParser.html b/doc/hdoc/Text-XML-HXT-Parser-XmlTokenParser.html
--- a/doc/hdoc/Text-XML-HXT-Parser-XmlTokenParser.html
+++ b/doc/hdoc/Text-XML-HXT-Parser-XmlTokenParser.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-Parser-XmlTokenParser.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Parser.html b/doc/hdoc/Text-XML-HXT-Parser.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Parser.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<!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.HXT.Parser</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-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.HXT.Parser</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Simple parse functions.
-</P
-><P
->Version : $Id: Parser.hs,v 1.2 2006<EM
->11</EM
->09 20:27:42 hxml Exp $
-</P
-><P
->the <A HREF="main.html"
->main</A
-> building blocks for an application.
- this module exports all important functions for parsing, validating and transforming XML.
- it also exports all basic datatypes and functions of the toolbox.
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-DOM.html"
->Text.XML.HXT.DOM</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Parser-HtmlParser.html"
->Text.XML.HXT.Parser.HtmlParser</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Parser-XmlInput.html"
->Text.XML.HXT.Parser.XmlInput</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Parser-DTDProcessing.html"
->Text.XML.HXT.Parser.DTDProcessing</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Parser-MainFunctions.html"
->Text.XML.HXT.Parser.MainFunctions</A
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Validator-Validation.html"
->Text.XML.HXT.Validator.Validation</A
-></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/doc/hdoc/Text-XML-HXT-RelaxNG-BasicArrows.html b/doc/hdoc/Text-XML-HXT-RelaxNG-BasicArrows.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-BasicArrows.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-BasicArrows.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-BasicArrows.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-CreatePattern.html b/doc/hdoc/Text-XML-HXT-RelaxNG-CreatePattern.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-CreatePattern.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-CreatePattern.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-CreatePattern.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibraries.html b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibraries.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibraries.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibraries.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypeLibraries.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypes.html b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypes.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypes.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-DataTypes.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypes.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-PatternFunctions.html b/doc/hdoc/Text-XML-HXT-RelaxNG-PatternFunctions.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-PatternFunctions.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-PatternFunctions.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-PatternFunctions.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-PatternToString.html b/doc/hdoc/Text-XML-HXT-RelaxNG-PatternToString.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-PatternToString.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-PatternToString.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-PatternToString.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-Schema.html b/doc/hdoc/Text-XML-HXT-RelaxNG-Schema.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-Schema.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-Schema.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-Schema.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-SchemaGrammar.html b/doc/hdoc/Text-XML-HXT-RelaxNG-SchemaGrammar.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-SchemaGrammar.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-SchemaGrammar.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-SchemaGrammar.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-Simplification.html b/doc/hdoc/Text-XML-HXT-RelaxNG-Simplification.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-Simplification.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-Simplification.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-Simplification.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-Blocks.html b/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-Blocks.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-Blocks.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-Blocks.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-Unicode-Blocks.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-CharProps.html b/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-CharProps.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-CharProps.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-CharProps.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-Unicode-CharProps.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-Utils.html b/doc/hdoc/Text-XML-HXT-RelaxNG-Utils.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-Utils.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-Utils.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-Utils.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-Validation.html b/doc/hdoc/Text-XML-HXT-RelaxNG-Validation.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-Validation.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-Validation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-Validation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-Validator.html b/doc/hdoc/Text-XML-HXT-RelaxNG-Validator.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-Validator.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-Validator.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-Validator.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html b/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html b/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html b/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-RelaxNG.html b/doc/hdoc/Text-XML-HXT-RelaxNG.html
--- a/doc/hdoc/Text-XML-HXT-RelaxNG.html
+++ b/doc/hdoc/Text-XML-HXT-RelaxNG.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-RelaxNG.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-Validator-AttributeValueValidation.html b/doc/hdoc/Text-XML-HXT-Validator-AttributeValueValidation.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-AttributeValueValidation.html
+++ /dev/null
@@ -1,204 +0,0 @@
-<!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.HXT.Validator.AttributeValueValidation</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-AttributeValueValidation.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.HXT.Validator.AttributeValueValidation</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
->This module provides functions for validating attributes.
-</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"
-><A HREF="#v%3AcheckAttributeValue"
->checkAttributeValue</A
-> :: XmlTrees -&gt; XmlTree -&gt; XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AnormalizeAttributeValue"
->normalizeAttributeValue</A
-> :: Maybe XmlTree -&gt; String -&gt; String</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AcheckAttributeValue"
-></A
-><B
->checkAttributeValue</B
-> :: XmlTrees -&gt; XmlTree -&gt; XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-AttributeValueValidation.html#checkAttributeValue"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Checks if the attribute value meets the lexical constraints of its type.
-</P
-><UL
-><LI
-> 1.parameter dtdPart :  the children of the <TT
->DOCTYPE</TT
-> node
-</LI
-><LI
-> 2.parameter attrDecl :  the declaration of the attribute from the DTD
-</LI
-><LI
-> returns : a function which takes an element (XTag or XDTD ATTLIST),
-                    checks if the attribute value meets the lexical constraints
-                    of its type and returns a list of errors
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AnormalizeAttributeValue"
-></A
-><B
->normalizeAttributeValue</B
-> :: Maybe XmlTree -&gt; String -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-AttributeValueValidation.html#normalizeAttributeValue"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Normalizes an attribute value with respect to its type. (3.3.3 / p.29 in Spec)
-</P
-><UL
-><LI
-> 1.parameter attrDecl :  the declaration of the attribute from the DTD. Expected
-                   is a list. If the list is empty, no declaration exists.
-</LI
-><LI
-> 2.parameter value :  the attribute value to be normalized
-</LI
-><LI
-> returns : the normalized value
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Validator-DTDValidation.html b/doc/hdoc/Text-XML-HXT-Validator-DTDValidation.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-DTDValidation.html
+++ /dev/null
@@ -1,191 +0,0 @@
-<!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.HXT.Validator.DTDValidation</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-DTDValidation.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.HXT.Validator.DTDValidation</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
->This module provides functions for validating the DTD of XML documents
- represented as XmlTree.
-</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"
-><A HREF="#v%3AremoveDoublicateDefs"
->removeDoublicateDefs</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AvalidateDTD"
->validateDTD</A
-> :: XmlFilter</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AremoveDoublicateDefs"
-></A
-><B
->removeDoublicateDefs</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-DTDValidation.html#removeDoublicateDefs"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Removes doublicate declarations from the DTD, which first declaration is
- binding. This is the case for ATTLIST and ENTITY declarations.
-</P
-><UL
-><LI
-> returns : A function that replaces the children of DOCTYPE nodes by a list
-               where all multiple declarations are removed.
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AvalidateDTD"
-></A
-><B
->validateDTD</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-DTDValidation.html#validateDTD"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Validate a DTD.
-</P
-><UL
-><LI
-> returns : a functions which takes the DTD subset of the XmlTree, checks
-                  if the DTD is valid and returns a list of errors
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Validator-DocTransformation.html b/doc/hdoc/Text-XML-HXT-Validator-DocTransformation.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-DocTransformation.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!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.HXT.Validator.DocTransformation</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-DocTransformation.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.HXT.Validator.DocTransformation</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
->This module provides functions for transforming XML documents represented as
- XmlTree with respect to its DTD.
-</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"
-><A HREF="#v%3Atransform"
->transform</A
-> :: XmlTree -&gt; XmlTree -&gt; XmlTrees</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Atransform"
-></A
-><B
->transform</B
-> :: XmlTree -&gt; XmlTree -&gt; XmlTrees</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-DocTransformation.html#transform"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->filter for transforming the document.
-</P
-><UL
-><LI
-> 1.parameter dtdPart :  the DTD subset (Node <TT
->DOCTYPE</TT
->) of the XmlTree
-</LI
-><LI
-> 2.parameter doc :  the document subset of the XmlTree
-</LI
-><LI
-> returns : a list of errors
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Validator-DocValidation.html b/doc/hdoc/Text-XML-HXT-Validator-DocValidation.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-DocValidation.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!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.HXT.Validator.DocValidation</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-DocValidation.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.HXT.Validator.DocValidation</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
->This module provides functions for validating XML Documents represented as
- XmlTree.
-</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"
-><A HREF="#v%3AvalidateDoc"
->validateDoc</A
-> :: XmlTree -&gt; XmlTree -&gt; XmlTrees</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AvalidateDoc"
-></A
-><B
->validateDoc</B
-> :: XmlTree -&gt; XmlTree -&gt; XmlTrees</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-DocValidation.html#validateDoc"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Validate a document.
-</P
-><UL
-><LI
-> 1.parameter dtdPart :  the DTD subset (Node <TT
->DOCTYPE</TT
->) of the XmlTree
-</LI
-><LI
-> 2.parameter doc :  the document subset of the XmlTree
-</LI
-><LI
-> returns : a list of errors
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Validator-IdValidation.html b/doc/hdoc/Text-XML-HXT-Validator-IdValidation.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-IdValidation.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!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.HXT.Validator.IdValidation</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-IdValidation.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.HXT.Validator.IdValidation</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
->This module provides functions for checking special ID<EM
->IDREF</EM
->IDREFS constraints.
-</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"
-><A HREF="#v%3AvalidateIds"
->validateIds</A
-> :: XmlTree -&gt; XmlTree -&gt; XmlTrees</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AvalidateIds"
-></A
-><B
->validateIds</B
-> :: XmlTree -&gt; XmlTree -&gt; XmlTrees</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-IdValidation.html#validateIds"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Perform the validation of the ID<EM
->IDREF</EM
->IDREFS constraints.
-</P
-><UL
-><LI
-> 1.parameter dtdPart :  the DTD subset (Node <TT
->DOCTYPE</TT
->) of the XmlTree
-</LI
-><LI
-> 2.parameter doc :  the document subset of the XmlTree
-</LI
-><LI
-> returns : a list of errors
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Validator-RE.html b/doc/hdoc/Text-XML-HXT-Validator-RE.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-RE.html
+++ /dev/null
@@ -1,1109 +0,0 @@
-<!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.HXT.Validator.RE</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.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.HXT.Validator.RE</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->A module for regular expression matching based on derivatives of regular expressions.
-</P
-><P
->The code was taken from Joe English (<A HREF="http://www.flightlab.com/~joe/sgml/validate.html"
->http://www.flightlab.com/~joe/sgml/validate.html</A
->).
- Tested and extended by Martin Schmidt.
-</P
-><P
->Further references for the algorithm:
-</P
-><P
->Janusz A. Brzozowski.
-</P
-><P
->Derivatives of Regular Expressions. Journal of the ACM, Volume 11, Issue 4, 1964. 
-</P
-><P
->Mark Hopkins.
-</P
-><P
->Regular Expression Package. Posted to comp.compilers, 1994.
-      Available per FTP at <A HREF="ftp://iecc.com/pub/file/regex.tar.gz"
->ftp://iecc.com/pub/file/regex.tar.gz</A
->.
-</P
-><P
->Version : $Id: RE.hs,v 1.1 2004<EM
->09</EM
->02 19:12:03 hxml Exp $
-</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"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
-><SPAN CLASS="keyword"
->data</SPAN
-> <A HREF="#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->= <A HREF="#v%3ARE_ZERO"
->RE_ZERO</A
-> String</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_UNIT"
->RE_UNIT</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_SYM"
->RE_SYM</A
-> a</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_DOT"
->RE_DOT</A
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_REP"
->RE_REP</A
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_PLUS"
->RE_PLUS</A
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_OPT"
->RE_OPT</A
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_SEQ"
->RE_SEQ</A
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->| <A HREF="#v%3ARE_ALT"
->RE_ALT</A
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-></TR
-></TABLE
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_unit"
->re_unit</A
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_zero"
->re_zero</A
-> :: String -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_sym"
->re_sym</A
-> :: a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_rep"
->re_rep</A
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_plus"
->re_plus</A
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_opt"
->re_opt</A
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_seq"
->re_seq</A
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_alt"
->re_alt</A
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_dot"
->re_dot</A
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AcheckRE"
->checkRE</A
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Amatches"
->matches</A
-> :: (Eq a, Show a) =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; [a] -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Anullable"
->nullable</A
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; Bool</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AprintRE"
->printRE</A
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</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%3ARE"
-></A
-><B
->RE</B
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#RE"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->Data type for regular expressions.
-</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%3ARE_ZERO"
-></A
-><B
->RE_ZERO</B
-> String</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_UNIT"
-></A
-><B
->RE_UNIT</B
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_SYM"
-></A
-><B
->RE_SYM</B
-> a</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_DOT"
-></A
-><B
->RE_DOT</B
-></TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_REP"
-></A
-><B
->RE_REP</B
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_PLUS"
-></A
-><B
->RE_PLUS</B
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_OPT"
-></A
-><B
->RE_OPT</B
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_SEQ"
-></A
-><B
->RE_SEQ</B
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-><TR
-><TD CLASS="arg"
-><A NAME="v%3ARE_ALT"
-></A
-><B
->RE_ALT</B
-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-><TD CLASS="rdoc"
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RE')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:RE" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq a =&gt; Eq (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->Show a =&gt; Show (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</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%3Are_unit"
-></A
-><B
->re_unit</B
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_unit"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for an empty sequence.
-</P
-><UL
-><LI
-> returns : regular expression for an empty sequence
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_zero"
-></A
-><B
->re_zero</B
-> :: String -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_zero"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for an empty set.
-</P
-><UL
-><LI
-> 1.parameter errMsg :  error message
-</LI
-><LI
-> returns : regular expression for an empty set
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_sym"
-></A
-><B
->re_sym</B
-> :: a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_sym"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for accepting a symbol
-</P
-><UL
-><LI
-> 1.parameter sym :  the symbol to be accepted
-</LI
-><LI
-> returns : regular expression for accepting a symbol
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_rep"
-></A
-><B
->re_rep</B
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_rep"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs an optional repetition (*) of a regular expression
-</P
-><UL
-><LI
-> 1.parameter re_a :  regular expression to be repeted
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_plus"
-></A
-><B
->re_plus</B
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_plus"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a repetition (+) of a regular expression
-</P
-><UL
-><LI
-> 1.parameter re_a :  regular expression to be repeted
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_opt"
-></A
-><B
->re_opt</B
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_opt"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs an option (?) of a regular expression
-</P
-><UL
-><LI
-> 1.parameter re_a :  regular expression to be optional
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_seq"
-></A
-><B
->re_seq</B
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_seq"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a sequence (,) of two regular expressions
-</P
-><UL
-><LI
-> 1.parameter re_a :  first regular expression in sequence
-</LI
-><LI
-> 2.parameter re_b :  second regular expression in sequence
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_alt"
-></A
-><B
->re_alt</B
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_alt"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs an alternative (|) of two regular expressions
-</P
-><UL
-><LI
-> 1.parameter re_a :  first regular expression of alternative
-</LI
-><LI
-> 2.parameter re_b :  second regular expression of alternative
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_dot"
-></A
-><B
->re_dot</B
-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_dot"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for accepting any singel symbol
-</P
-><UL
-><LI
-> returns : regular expression for accepting any singel symbol
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AcheckRE"
-></A
-><B
->checkRE</B
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#checkRE"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Checks if an input matched a regular expression. The function should be
- called after matches.
-</P
-><P
->Was the sentence used in <TT
->matches</TT
-> in the language of the regular expression?
- -&gt; matches e s == s `in` L(e)?
-</P
-><UL
-><LI
-> 1.parameter re :  the derived regular expression
-</LI
-><LI
-> returns : empty String if input matched the regular expression, otherwise
-               an error message is returned
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Amatches"
-></A
-><B
->matches</B
-> :: (Eq a, Show a) =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; [a] -&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#matches"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Derives a regular expression with respect to a sentence.
-</P
-><UL
-><LI
-> 1.parameter re :  regular expression
-</LI
-><LI
-> 2.parameter s :  sentence to which the regular expression is applied
-</LI
-><LI
-> returns : the derived regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Anullable"
-></A
-><B
->nullable</B
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; Bool</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#nullable"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Checks if a regular expression matches the empty sequence.
-</P
-><P
->nullable e == [] `in` L(e)
-</P
-><P
->This check indicates if a regular expression fits to a sentence or not.
-</P
-><UL
-><LI
-> 1.parameter re :  regular expression to be checked
-</LI
-><LI
-> returns : true if regular expression matches the empty sequence,
-                otherwise false
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AprintRE"
-></A
-><B
->printRE</B
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-RE.html#printRE"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a string representation of a regular expression.
-</P
-><UL
-><LI
-> 1.parameter re :  a regular expression
-</LI
-><LI
-> returns : the string representation of the regular expression
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Validator-Validation.html b/doc/hdoc/Text-XML-HXT-Validator-Validation.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-Validation.html
+++ /dev/null
@@ -1,187 +0,0 @@
-<!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.HXT.Validator.Validation</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-Validation.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.HXT.Validator.Validation</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->This module provides a state filter as a main function for validating XML documents.
-</P
-><P
->The real validation is done with pure filters from module <TT
-><A HREF="Text-XML-HXT-Validator.html#t%3AValidationFilter"
->ValidationFilter</A
-></TT
->
-</P
-><P
->Author : .\artin Schmidt
- Version : $Id: Validation.hs,v 1.2 2004<EM
->11</EM
->23 15:50:23 hxml Exp $
-</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"
-><A HREF="#v%3AgetValidatedDoc"
->getValidatedDoc</A
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Validator-ValidationFilter.html"
->Text.XML.HXT.Validator.ValidationFilter</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetValidatedDoc"
-></A
-><B
->getValidatedDoc</B
-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"
->XmlStateFilter</A
-> state</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-Validation.html#getValidatedDoc"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->monadic filter for validating and transforming a wellformed document.
-</P
-><P
->the <A HREF="main.html"
->main</A
-> function for validation.
-</P
-><P
->the input tree must consist of a root node with a complete document and DTD.
- Result is the single element list containing same tree but tranformed with respect to the DTD,
- or, in case of errors, the root with an empty list of children
-</P
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
->module <A HREF="Text-XML-HXT-Validator-ValidationFilter.html"
->Text.XML.HXT.Validator.ValidationFilter</A
-></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/doc/hdoc/Text-XML-HXT-Validator-ValidationFilter.html b/doc/hdoc/Text-XML-HXT-Validator-ValidationFilter.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-ValidationFilter.html
+++ /dev/null
@@ -1,363 +0,0 @@
-<!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.HXT.Validator.ValidationFilter</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.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.HXT.Validator.ValidationFilter</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
->This module provides functions for validating XML documents represented as
- XmlTree.
-</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"
-><A HREF="#v%3AgetDTDSubset"
->getDTDSubset</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Avalidate"
->validate</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AvalidateDTD"
->validateDTD</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AvalidateDoc"
->validateDoc</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AremoveDoublicateDefs"
->removeDoublicateDefs</A
-> :: XmlFilter</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Atransform"
->transform</A
-> :: XmlFilter</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AgetDTDSubset"
-></A
-><B
->getDTDSubset</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#getDTDSubset"
->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%3Avalidate"
-></A
-><B
->validate</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#validate"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Main validation filter. Check if the DTD and the document are valid.
-</P
-><UL
-><LI
-> returns : a function which expects a complete document as XmlTree input
-                     and returns a list of all errors found.
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AvalidateDTD"
-></A
-><B
->validateDTD</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#validateDTD"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Check if the DTD is valid.
-</P
-><UL
-><LI
-> returns : a function which expects an XmlTree from the parser as input
-                     and returns a list of all errors found in the DTD.
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AvalidateDoc"
-></A
-><B
->validateDoc</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#validateDoc"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Check if the document corresponds to the given DTD.
-</P
-><UL
-><LI
-> returns : a function which expects a complete document as XmlTree input
-                     and returns a list of all errors found in the content part.
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AremoveDoublicateDefs"
-></A
-><B
->removeDoublicateDefs</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#removeDoublicateDefs"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Removes doublicate declarations from the DTD which first declaration is
- binding. This is the case for ATTLIST and ENTITY declarations.
-</P
-><UL
-><LI
-> returns : A function that replaces the children of DOCTYPE nodes by a list
-               where all multiple declarations are removed.
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Atransform"
-></A
-><B
->transform</B
-> :: XmlFilter</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#transform"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->filter for transforming a document with respect to the given DTD.
-</P
-><P
->Validating parsers
- are expected to  normalize attribute values and add default values.
- This function should be called after a successful validation.
-</P
-><UL
-><LI
-> returns : a function which expects a complete XML document tree
-                and returns the transformed XmlTree
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Validator-XmlRE.html b/doc/hdoc/Text-XML-HXT-Validator-XmlRE.html
deleted file mode 100644
--- a/doc/hdoc/Text-XML-HXT-Validator-XmlRE.html
+++ /dev/null
@@ -1,834 +0,0 @@
-<!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.HXT.Validator.XmlRE</TITLE
-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
-><SCRIPT SRC="haddock-util.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"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
-><TD CLASS="topbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.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.HXT.Validator.XmlRE</FONT
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Description</TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->A module for regular expression matching, adapted for XML DTDs.
-</P
-><P
->This module is based on the module RE.
-</P
-><P
->Author .\artin Schmidt
-</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%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AcheckRE"
->checkRE</A
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Amatches"
->matches</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> String -&gt; XmlTrees -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3AprintRE"
->printRE</A
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_unit"
->re_unit</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_zero"
->re_zero</A
-> :: String -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_sym"
->re_sym</A
-> :: a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_rep"
->re_rep</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_plus"
->re_plus</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_opt"
->re_opt</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_seq"
->re_seq</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_alt"
->re_alt</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-><TR
-><TD CLASS="s8"
-></TD
-></TR
-><TR
-><TD CLASS="decl"
-><A HREF="#v%3Are_dot"
->re_dot</A
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="section1"
->Documentation</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%3ARE"
-></A
-><B
->RE</B
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#RE"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="body"
-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
-><TR
-><TD CLASS="ndoc"
->Data type for regular expressions.
-</TD
-></TR
-><TR
-><TD CLASS="section4"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RE')" ALT="show/hide"
-> Instances</TD
-></TR
-><TR
-><TD CLASS="body"
-><DIV ID="i:RE" STYLE="display:block;"
-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
-><TR
-><TD CLASS="decl"
->Eq a =&gt; Eq (<A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a)</TD
-></TR
-><TR
-><TD CLASS="decl"
->Show a =&gt; Show (<A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</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%3AcheckRE"
-></A
-><B
->checkRE</B
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#checkRE"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Checks if an input matched a regular expression. The function should be
- called after matches.
-</P
-><P
->Was the sentence used in <TT
->matches</TT
-> in the language of the regular expression?
- -&gt; matches e s == s `in` L(e)?
-</P
-><UL
-><LI
-> 1.parameter re :  the derived regular expression
-</LI
-><LI
-> returns : empty String if input matched the regular expression, otherwise
-               an error message is returned
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Amatches"
-></A
-><B
->matches</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> String -&gt; XmlTrees -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#matches"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Derives a regular expression with respect to a list of elements.
-</P
-><UL
-><LI
-> 1.parameter re :  regular expression
-</LI
-><LI
-> 2.parameter list :  list of elements to which the regular expression is applied
-</LI
-><LI
-> returns : the derived regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3AprintRE"
-></A
-><B
->printRE</B
-> :: Show a =&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; String</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#printRE"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a string representation of a regular expression.
-</P
-><UL
-><LI
-> 1.parameter re :  a regular expression
-</LI
-><LI
-> returns : the string representation of the regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_unit"
-></A
-><B
->re_unit</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_unit"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for an empty sequence.
-</P
-><UL
-><LI
-> returns : regular expression for an empty sequence
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_zero"
-></A
-><B
->re_zero</B
-> :: String -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_zero"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for an empty set.
-</P
-><UL
-><LI
-> 1.parameter errMsg :  error message
-</LI
-><LI
-> returns : regular expression for an empty set
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_sym"
-></A
-><B
->re_sym</B
-> :: a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_sym"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for accepting a symbol
-</P
-><UL
-><LI
-> 1.parameter sym :  the symbol to be accepted
-</LI
-><LI
-> returns : regular expression for accepting a symbol
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_rep"
-></A
-><B
->re_rep</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_rep"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs an optional repetition (*) of a regular expression
-</P
-><UL
-><LI
-> 1.parameter re_a :  regular expression to be repeted
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_plus"
-></A
-><B
->re_plus</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_plus"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a repetition (+) of a regular expression
-</P
-><UL
-><LI
-> 1.parameter re_a :  regular expression to be repeted
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_opt"
-></A
-><B
->re_opt</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_opt"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs an option (?) of a regular expression
-</P
-><UL
-><LI
-> 1.parameter re_a :  regular expression to be optional
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_seq"
-></A
-><B
->re_seq</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_seq"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a sequence (,) of two regular expressions
-</P
-><UL
-><LI
-> 1.parameter re_a :  first regular expression in sequence
-</LI
-><LI
-> 2.parameter re_b :  second regular expression in sequence
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_alt"
-></A
-><B
->re_alt</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a -&gt; <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_alt"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs an alternative (|) of two regular expressions
-</P
-><UL
-><LI
-> 1.parameter re_a :  first regular expression of alternative
-</LI
-><LI
-> 2.parameter re_b :  second regular expression of alternative
-</LI
-><LI
-> returns : new regular expression
-</LI
-></UL
-></TD
-></TR
-><TR
-><TD CLASS="s15"
-></TD
-></TR
-><TR
-><TD CLASS="topdecl"
-><TABLE CLASS="declbar"
-><TR
-><TD CLASS="declname"
-><A NAME="v%3Are_dot"
-></A
-><B
->re_dot</B
-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"
->RE</A
-> a</TD
-><TD CLASS="declbut"
-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#re_dot"
->Source</A
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD CLASS="doc"
-><P
->Constructs a regular expression for accepting any singel symbol
-</P
-><UL
-><LI
-> returns : regular expression for accepting any singel symbol
-</LI
-></UL
-></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/doc/hdoc/Text-XML-HXT-Version.html b/doc/hdoc/Text-XML-HXT-Version.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/Text-XML-HXT-Version.html
@@ -0,0 +1,102 @@
+<!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.HXT.Version</TITLE
+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
+><SCRIPT SRC="haddock-util.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"
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
+><TD CLASS="topbut"
+><A HREF="src/Text-XML-HXT-Version.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.HXT.Version</FONT
+></TD
+></TR
+></TABLE
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="section1"
+>Documentation</TD
+></TR
+><TR
+><TD CLASS="s15"
+></TD
+></TR
+><TR
+><TD CLASS="topdecl"
+><TABLE CLASS="declbar"
+><TR
+><TD CLASS="declname"
+><A NAME="v%3Ahxt_version"
+></A
+><B
+>hxt_version</B
+> :: String</TD
+><TD CLASS="declbut"
+><A HREF="src/Text-XML-HXT-Version.html#hxt_version"
+>Source</A
+></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/doc/hdoc/Text-XML-HXT-XPath-NavTree.html b/doc/hdoc/Text-XML-HXT-XPath-NavTree.html
--- a/doc/hdoc/Text-XML-HXT-XPath-NavTree.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-NavTree.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-NavTree.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathArithmetic.html b/doc/hdoc/Text-XML-HXT-XPath-XPathArithmetic.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathArithmetic.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathArithmetic.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathArithmetic.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathDataTypes.html b/doc/hdoc/Text-XML-HXT-XPath-XPathDataTypes.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathDataTypes.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathDataTypes.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathDataTypes.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathEval.html b/doc/hdoc/Text-XML-HXT-XPath-XPathEval.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathEval.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathEval.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathEval.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathFct.html b/doc/hdoc/Text-XML-HXT-XPath-XPathFct.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathFct.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathFct.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathFct.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathKeywords.html b/doc/hdoc/Text-XML-HXT-XPath-XPathKeywords.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathKeywords.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathKeywords.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathKeywords.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathParser.html b/doc/hdoc/Text-XML-HXT-XPath-XPathParser.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathParser.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathParser.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathParser.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathToNodeSet.html b/doc/hdoc/Text-XML-HXT-XPath-XPathToNodeSet.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathToNodeSet.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathToNodeSet.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathToNodeSet.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath-XPathToString.html b/doc/hdoc/Text-XML-HXT-XPath-XPathToString.html
--- a/doc/hdoc/Text-XML-HXT-XPath-XPathToString.html
+++ b/doc/hdoc/Text-XML-HXT-XPath-XPathToString.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath-XPathToString.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XPath.html b/doc/hdoc/Text-XML-HXT-XPath.html
--- a/doc/hdoc/Text-XML-HXT-XPath.html
+++ b/doc/hdoc/Text-XML-HXT-XPath.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XPath.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XSLT-Application.html b/doc/hdoc/Text-XML-HXT-XSLT-Application.html
--- a/doc/hdoc/Text-XML-HXT-XSLT-Application.html
+++ b/doc/hdoc/Text-XML-HXT-XSLT-Application.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XSLT-Application.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XSLT-Common.html b/doc/hdoc/Text-XML-HXT-XSLT-Common.html
--- a/doc/hdoc/Text-XML-HXT-XSLT-Common.html
+++ b/doc/hdoc/Text-XML-HXT-XSLT-Common.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XSLT-Common.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XSLT-Compilation.html b/doc/hdoc/Text-XML-HXT-XSLT-Compilation.html
--- a/doc/hdoc/Text-XML-HXT-XSLT-Compilation.html
+++ b/doc/hdoc/Text-XML-HXT-XSLT-Compilation.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XSLT-Compilation.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XSLT-CompiledStylesheet.html b/doc/hdoc/Text-XML-HXT-XSLT-CompiledStylesheet.html
--- a/doc/hdoc/Text-XML-HXT-XSLT-CompiledStylesheet.html
+++ b/doc/hdoc/Text-XML-HXT-XSLT-CompiledStylesheet.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XSLT-CompiledStylesheet.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XSLT-Names.html b/doc/hdoc/Text-XML-HXT-XSLT-Names.html
--- a/doc/hdoc/Text-XML-HXT-XSLT-Names.html
+++ b/doc/hdoc/Text-XML-HXT-XSLT-Names.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XSLT-Names.html"
 >Source code</A
diff --git a/doc/hdoc/Text-XML-HXT-XSLT-XsltArrows.html b/doc/hdoc/Text-XML-HXT-XSLT-XsltArrows.html
--- a/doc/hdoc/Text-XML-HXT-XSLT-XsltArrows.html
+++ b/doc/hdoc/Text-XML-HXT-XSLT-XsltArrows.html
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="src/Text-XML-HXT-XSLT-XsltArrows.html"
 >Source code</A
diff --git a/doc/hdoc/doc-index-36.html b/doc/hdoc/doc-index-36.html
--- a/doc/hdoc/doc-index-36.html
+++ b/doc/hdoc/doc-index-36.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-38.html b/doc/hdoc/doc-index-38.html
--- a/doc/hdoc/doc-index-38.html
+++ b/doc/hdoc/doc-index-38.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-43.html b/doc/hdoc/doc-index-43.html
--- a/doc/hdoc/doc-index-43.html
+++ b/doc/hdoc/doc-index-43.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-46.html b/doc/hdoc/doc-index-46.html
--- a/doc/hdoc/doc-index-46.html
+++ b/doc/hdoc/doc-index-46.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-47.html b/doc/hdoc/doc-index-47.html
--- a/doc/hdoc/doc-index-47.html
+++ b/doc/hdoc/doc-index-47.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-58.html b/doc/hdoc/doc-index-58.html
--- a/doc/hdoc/doc-index-58.html
+++ b/doc/hdoc/doc-index-58.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-60.html b/doc/hdoc/doc-index-60.html
--- a/doc/hdoc/doc-index-60.html
+++ b/doc/hdoc/doc-index-60.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-62.html b/doc/hdoc/doc-index-62.html
--- a/doc/hdoc/doc-index-62.html
+++ b/doc/hdoc/doc-index-62.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-A.html b/doc/hdoc/doc-index-A.html
--- a/doc/hdoc/doc-index-A.html
+++ b/doc/hdoc/doc-index-A.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -683,6 +683,22 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>a_ignore_encoding_errors</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_ignore_encoding_errors"
+>Text.XML.HXT.DOM.XmlKeywords</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>a_ignore_none_xml_contents</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_ignore_none_xml_contents"
+>Text.XML.HXT.DOM.XmlKeywords</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >a_indent</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_indent"
@@ -723,6 +739,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>a_mime_types</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_mime_types"
+>Text.XML.HXT.DOM.XmlKeywords</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >a_modifier</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_modifier"
@@ -1285,33 +1309,33 @@
 ><TD CLASS="indexentry"
 >application_xhtml</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aapplication_xhtml"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Aapplication_xhtml"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >application_xml</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aapplication_xml"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Aapplication_xml"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >application_xml_dtd</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aapplication_xml_dtd"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Aapplication_xml_dtd"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >application_xml_external_parsed_entity</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aapplication_xml_external_parsed_entity"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Aapplication_xml_external_parsed_entity"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/doc/hdoc/doc-index-B.html b/doc/hdoc/doc-index-B.html
--- a/doc/hdoc/doc-index-B.html
+++ b/doc/hdoc/doc-index-B.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-C.html b/doc/hdoc/doc-index-C.html
--- a/doc/hdoc/doc-index-C.html
+++ b/doc/hdoc/doc-index-C.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-D.html b/doc/hdoc/doc-index-D.html
--- a/doc/hdoc/doc-index-D.html
+++ b/doc/hdoc/doc-index-D.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -506,6 +506,14 @@
 ><A HREF="Data-Tree-NTree-Filter.html#v%3Adeepest"
 >Data.Tree.NTree.Filter</A
 >, Text.XML.HXT.DOM.XmlTreeTypes</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>defaultMimeTypeTable</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AdefaultMimeTypeTable"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/doc/hdoc/doc-index-E.html b/doc/hdoc/doc-index-E.html
--- a/doc/hdoc/doc-index-E.html
+++ b/doc/hdoc/doc-index-E.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -732,6 +732,14 @@
 ><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3Aexpr2XPathTree"
 >Text.XML.HXT.XPath.XPathToString</A
 >, Text.XML.HXT.XPath</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>extensionToMimeType</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AextensionToMimeType"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ></TABLE
 ></TD
diff --git a/doc/hdoc/doc-index-F.html b/doc/hdoc/doc-index-F.html
--- a/doc/hdoc/doc-index-F.html
+++ b/doc/hdoc/doc-index-F.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-G.html b/doc/hdoc/doc-index-G.html
--- a/doc/hdoc/doc-index-G.html
+++ b/doc/hdoc/doc-index-G.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -231,6 +231,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>getAllParamsString</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetAllParamsString"
+>Text.XML.HXT.Arrow.XmlIOStateArrow</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >getAtt</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AgetAtt"
@@ -445,16 +453,8 @@
 ><TD CLASS="indexannot"
 >3 (Function)</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-IO-GetHTTPCurl.html#v%3AgetCont"
->Text.XML.HXT.IO.GetHTTPCurl</A
-></TD
-></TR
-><TR
-><TD CLASS="indexannot"
->4 (Function)</TD
-><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-IO-GetHTTPNative.html#v%3AgetCont"
->Text.XML.HXT.IO.GetHTTPNative</A
+><A HREF="Text-XML-HXT-IO-GetHTTPLibCurl.html#v%3AgetCont"
+>Text.XML.HXT.IO.GetHTTPLibCurl</A
 ></TD
 ></TR
 ><TR
diff --git a/doc/hdoc/doc-index-H.html b/doc/hdoc/doc-index-H.html
--- a/doc/hdoc/doc-index-H.html
+++ b/doc/hdoc/doc-index-H.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -396,6 +396,14 @@
 ><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AhttpPrefix"
 >Text.XML.HXT.DOM.XmlKeywords</A
 >, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>hxt_version</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Version.html#v%3Ahxt_version"
+>Text.XML.HXT.Version</A
+>, Text.XML.HXT.Arrow</TD
 ></TR
 ></TABLE
 ></TD
diff --git a/doc/hdoc/doc-index-I.html b/doc/hdoc/doc-index-I.html
--- a/doc/hdoc/doc-index-I.html
+++ b/doc/hdoc/doc-index-I.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -845,9 +845,9 @@
 ><TD CLASS="indexentry"
 >isHtmlMimeType</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AisHtmlMimeType"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AisHtmlMimeType"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -1599,6 +1599,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>isTrueValue</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AisTrueValue"
+>Text.XML.HXT.DOM.XmlOptions</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >isUnicodeC</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeC"
@@ -2017,9 +2025,9 @@
 ><TD CLASS="indexentry"
 >isXmlMimeType</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AisXmlMimeType"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AisXmlMimeType"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/doc/hdoc/doc-index-K.html b/doc/hdoc/doc-index-K.html
--- a/doc/hdoc/doc-index-K.html
+++ b/doc/hdoc/doc-index-K.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-L.html b/doc/hdoc/doc-index-L.html
--- a/doc/hdoc/doc-index-L.html
+++ b/doc/hdoc/doc-index-L.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-M.html b/doc/hdoc/doc-index-M.html
--- a/doc/hdoc/doc-index-M.html
+++ b/doc/hdoc/doc-index-M.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -211,6 +211,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>MimeTypeTable</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >Minus</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AMinus"
@@ -351,6 +359,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>mimeTypeDefaults</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-MimeTypeDefaults.html#v%3AmimeTypeDefaults"
+>Text.XML.HXT.DOM.MimeTypeDefaults</A
+></TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >misc</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Amisc"
@@ -662,9 +678,21 @@
 ></TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >mkLeaf</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
 ><TD CLASS="indexlinks"
+><A HREF="Control-Arrow-ArrowTree.html#v%3AmkLeaf"
+>Control.Arrow.ArrowTree</A
+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
+><TD CLASS="indexlinks"
 ><A HREF="Data-Tree-Class.html#v%3AmkLeaf"
 >Data.Tree.Class</A
 >, Data.Tree.NTree.TypeDefs, Data.NavTree, Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD
@@ -1050,8 +1078,20 @@
 >, Text.XML.HXT.XSLT.Common</TD
 ></TR
 ><TR
-><TD CLASS="indexentry"
+><TD CLASS="indexentry" COLSPAN="2"
 >mkTree</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>1 (Function)</TD
+><TD CLASS="indexlinks"
+><A HREF="Control-Arrow-ArrowTree.html#v%3AmkTree"
+>Control.Arrow.ArrowTree</A
+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexannot"
+>2 (Function)</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Data-Tree-Class.html#v%3AmkTree"
 >Data.Tree.Class</A
diff --git a/doc/hdoc/doc-index-N.html b/doc/hdoc/doc-index-N.html
--- a/doc/hdoc/doc-index-N.html
+++ b/doc/hdoc/doc-index-N.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-O.html b/doc/hdoc/doc-index-O.html
--- a/doc/hdoc/doc-index-O.html
+++ b/doc/hdoc/doc-index-O.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-P.html b/doc/hdoc/doc-index-P.html
--- a/doc/hdoc/doc-index-P.html
+++ b/doc/hdoc/doc-index-P.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -427,6 +427,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>parseMimeTypeTable</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AparseMimeTypeTable"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >parseNMToken</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseNMToken"
@@ -806,14 +814,6 @@
 >, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3ApickleDoc"
 >Text.XML.HXT.Arrow.Pickle</A
 >, Text.XML.HXT.Arrow</TD
-></TR
-><TR
-><TD CLASS="indexentry"
->popen</TD
-><TD CLASS="indexlinks"
-><A HREF="System-PipeOpen.html#v%3Apopen"
->System.PipeOpen</A
-></TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/doc/hdoc/doc-index-Q.html b/doc/hdoc/doc-index-Q.html
--- a/doc/hdoc/doc-index-Q.html
+++ b/doc/hdoc/doc-index-Q.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-R.html b/doc/hdoc/doc-index-R.html
--- a/doc/hdoc/doc-index-R.html
+++ b/doc/hdoc/doc-index-R.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -408,6 +408,14 @@
 ><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadFromString"
 >Text.XML.HXT.Arrow.ReadDocument</A
 >, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>readMimeTypeTable</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AreadMimeTypeTable"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/doc/hdoc/doc-index-S.html b/doc/hdoc/doc-index-S.html
--- a/doc/hdoc/doc-index-S.html
+++ b/doc/hdoc/doc-index-S.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -858,6 +858,22 @@
 >setErrorMsgHandler</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetErrorMsgHandler"
+>Text.XML.HXT.Arrow.XmlIOStateArrow</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>setMimeTypeTable</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetMimeTypeTable"
+>Text.XML.HXT.Arrow.XmlIOStateArrow</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>setMimeTypeTableFromFile</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetMimeTypeTableFromFile"
 >Text.XML.HXT.Arrow.XmlIOStateArrow</A
 >, Text.XML.HXT.Arrow</TD
 ></TR
diff --git a/doc/hdoc/doc-index-T.html b/doc/hdoc/doc-index-T.html
--- a/doc/hdoc/doc-index-T.html
+++ b/doc/hdoc/doc-index-T.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -431,25 +431,25 @@
 ><TD CLASS="indexentry"
 >text_html</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Atext_html"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Atext_html"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >text_xml</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Atext_xml"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Atext_xml"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
 >text_xml_external_parsed_entity</TD
 ><TD CLASS="indexlinks"
-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Atext_xml_external_parsed_entity"
->Text.XML.HXT.DOM.XmlKeywords</A
->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Atext_xml_external_parsed_entity"
+>Text.XML.HXT.DOM.MimeTypes</A
+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
diff --git a/doc/hdoc/doc-index-U.html b/doc/hdoc/doc-index-U.html
--- a/doc/hdoc/doc-index-U.html
+++ b/doc/hdoc/doc-index-U.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-V.html b/doc/hdoc/doc-index-V.html
--- a/doc/hdoc/doc-index-V.html
+++ b/doc/hdoc/doc-index-V.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-W.html b/doc/hdoc/doc-index-W.html
--- a/doc/hdoc/doc-index-W.html
+++ b/doc/hdoc/doc-index-W.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index-X.html b/doc/hdoc/doc-index-X.html
--- a/doc/hdoc/doc-index-X.html
+++ b/doc/hdoc/doc-index-X.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -709,6 +709,14 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>xio_mimeTypes</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_mimeTypes"
+>Text.XML.HXT.Arrow.XmlIOStateArrow</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >xio_sysState</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_sysState"
@@ -885,7 +893,9 @@
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axp6Tuple"
 >Text.XML.HXT.Arrow.Pickle.Xml</A
-></TD
+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axp6Tuple"
+>Text.XML.HXT.Arrow.Pickle</A
+>, Text.XML.HXT.Arrow</TD
 ></TR
 ><TR
 ><TD CLASS="indexentry"
@@ -959,6 +969,16 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>xpDefault</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpDefault"
+>Text.XML.HXT.Arrow.Pickle.Xml</A
+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpDefault"
+>Text.XML.HXT.Arrow.Pickle</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >xpElem</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElem"
@@ -969,6 +989,16 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>xpElemWithAttrValue</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElemWithAttrValue"
+>Text.XML.HXT.Arrow.Pickle.Xml</A
+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpElemWithAttrValue"
+>Text.XML.HXT.Arrow.Pickle</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >xpLift</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpLift"
@@ -1009,6 +1039,16 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>xpMap</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpMap"
+>Text.XML.HXT.Arrow.Pickle.Xml</A
+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpMap"
+>Text.XML.HXT.Arrow.Pickle</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >xpOption</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpOption"
@@ -1099,6 +1139,16 @@
 ></TR
 ><TR
 ><TD CLASS="indexentry"
+>xpTrees</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTrees"
+>Text.XML.HXT.Arrow.Pickle.Xml</A
+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTrees"
+>Text.XML.HXT.Arrow.Pickle</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
 >xpTriple</TD
 ><TD CLASS="indexlinks"
 ><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTriple"
@@ -1134,6 +1184,16 @@
 ><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpWrapMaybe"
 >Text.XML.HXT.Arrow.Pickle.Xml</A
 >, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpWrapMaybe"
+>Text.XML.HXT.Arrow.Pickle</A
+>, Text.XML.HXT.Arrow</TD
+></TR
+><TR
+><TD CLASS="indexentry"
+>xpXmlText</TD
+><TD CLASS="indexlinks"
+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpXmlText"
+>Text.XML.HXT.Arrow.Pickle.Xml</A
+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpXmlText"
 >Text.XML.HXT.Arrow.Pickle</A
 >, Text.XML.HXT.Arrow</TD
 ></TR
diff --git a/doc/hdoc/doc-index-Z.html b/doc/hdoc/doc-index-Z.html
--- a/doc/hdoc/doc-index-Z.html
+++ b/doc/hdoc/doc-index-Z.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/doc-index.html b/doc/hdoc/doc-index.html
--- a/doc/hdoc/doc-index.html
+++ b/doc/hdoc/doc-index.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell. (Index)</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ></HEAD
 ><BODY
@@ -17,7 +17,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
diff --git a/doc/hdoc/hxt.haddock b/doc/hdoc/hxt.haddock
Binary files a/doc/hdoc/hxt.haddock and b/doc/hdoc/hxt.haddock differ
diff --git a/doc/hdoc/index.html b/doc/hdoc/index.html
--- a/doc/hdoc/index.html
+++ b/doc/hdoc/index.html
@@ -4,7 +4,7 @@
 ><HEAD
 ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
 ><TITLE
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TITLE
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TITLE
 ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
 ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
 ></SCRIPT
@@ -19,7 +19,7 @@
 ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
 ></TD
 ><TD CLASS="title"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ><TD CLASS="topbut"
 ><A HREF="index.html"
 >Contents</A
@@ -34,7 +34,7 @@
 ></TR
 ><TR
 ><TD CLASS="section1"
->hxt-8.0.0: A collection of tools for processing XML with Haskell.</TD
+>hxt-8.1.0: A collection of tools for processing XML with Haskell.</TD
 ></TR
 ><TR
 ><TD CLASS="doc"
@@ -336,31 +336,6 @@
 ><TR
 ><TD STYLE="width: 50em"
 ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:7')" ALT="show/hide"
->System</TD
-><TD
-></TD
-><TD
-></TD
-></TR
-><TR
-><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:7" STYLE="display:block;"
-><TR
-><TD STYLE="padding-left: 1.25em;width: 48em"
-><A HREF="System-PipeOpen.html"
->System.PipeOpen</A
-></TD
-><TD
-></TD
-><TD
-></TD
-></TR
-></TABLE
-></TD
-></TR
-><TR
-><TD STYLE="width: 50em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:8')" ALT="show/hide"
 >Text</TD
 ><TD
 ></TD
@@ -369,10 +344,10 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:8" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:7" STYLE="display:block;"
 ><TR
 ><TD STYLE="width: 48em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:9')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:8')" ALT="show/hide"
 >XML</TD
 ><TD
 ></TD
@@ -381,10 +356,10 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:9" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:8" STYLE="display:block;"
 ><TR
 ><TD STYLE="width: 46em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:10')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:9')" ALT="show/hide"
 >HXT</TD
 ><TD
 ></TD
@@ -393,10 +368,10 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:10" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:9" STYLE="display:block;"
 ><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:11')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:10')" ALT="show/hide"
 ><A HREF="Text-XML-HXT-Arrow.html"
 >Text.XML.HXT.Arrow</A
 ></TD
@@ -407,7 +382,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:11" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:10" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-Arrow-DTDProcessing.html"
@@ -480,7 +455,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 42em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:12')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:11')" ALT="show/hide"
 ><A HREF="Text-XML-HXT-Arrow-Pickle.html"
 >Text.XML.HXT.Arrow.Pickle</A
 ></TD
@@ -491,7 +466,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:12" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:11" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 40em"
 ><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html"
@@ -610,7 +585,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:13')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:12')" ALT="show/hide"
 >DOM</TD
 ><TD
 ></TD
@@ -619,7 +594,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:13" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:12" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-DOM-FormatXmlTree.html"
@@ -652,6 +627,26 @@
 ></TR
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
+><A HREF="Text-XML-HXT-DOM-MimeTypeDefaults.html"
+>Text.XML.HXT.DOM.MimeTypeDefaults</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding-left: 1.25em;width: 42em"
+><A HREF="Text-XML-HXT-DOM-MimeTypes.html"
+>Text.XML.HXT.DOM.MimeTypes</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
+><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html"
 >Text.XML.HXT.DOM.NamespacePredicates</A
 ></TD
@@ -765,7 +760,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:14')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:13')" ALT="show/hide"
 >DTDValidation</TD
 ><TD
 ></TD
@@ -774,7 +769,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:14" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:13" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-DTDValidation-AttributeValueValidation.html"
@@ -870,7 +865,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:15')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:14')" ALT="show/hide"
 >IO</TD
 ><TD
 ></TD
@@ -879,7 +874,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:15" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:14" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-IO-GetFILE.html"
@@ -892,18 +887,8 @@
 ></TR
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
-><A HREF="Text-XML-HXT-IO-GetHTTPCurl.html"
->Text.XML.HXT.IO.GetHTTPCurl</A
-></TD
-><TD
-></TD
-><TD
-></TD
-></TR
-><TR
-><TD STYLE="padding-left: 1.25em;width: 42em"
-><A HREF="Text-XML-HXT-IO-GetHTTPNative.html"
->Text.XML.HXT.IO.GetHTTPNative</A
+><A HREF="Text-XML-HXT-IO-GetHTTPLibCurl.html"
+>Text.XML.HXT.IO.GetHTTPLibCurl</A
 ></TD
 ><TD
 ></TD
@@ -915,7 +900,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:16')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:15')" ALT="show/hide"
 >Parser</TD
 ><TD
 ></TD
@@ -924,7 +909,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:16" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:15" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-Parser-HtmlParsec.html"
@@ -1030,7 +1015,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:17')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:16')" ALT="show/hide"
 ><A HREF="Text-XML-HXT-RelaxNG.html"
 >Text.XML.HXT.RelaxNG</A
 ></TD
@@ -1041,7 +1026,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:17" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:16" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html"
@@ -1154,7 +1139,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 42em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:18')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:17')" ALT="show/hide"
 >Unicode</TD
 ><TD
 ></TD
@@ -1163,7 +1148,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:18" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:17" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 40em"
 ><A HREF="Text-XML-HXT-RelaxNG-Unicode-Blocks.html"
@@ -1219,7 +1204,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 42em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:19')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:18')" ALT="show/hide"
 >XmlSchema</TD
 ><TD
 ></TD
@@ -1228,7 +1213,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:19" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:18" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 40em"
 ><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html"
@@ -1266,8 +1251,18 @@
 ></TD
 ></TR
 ><TR
+><TD STYLE="padding-left: 1.25em;width: 44em"
+><A HREF="Text-XML-HXT-Version.html"
+>Text.XML.HXT.Version</A
+></TD
+><TD
+></TD
+><TD
+></TD
+></TR
+><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:20')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:19')" ALT="show/hide"
 ><A HREF="Text-XML-HXT-XPath.html"
 >Text.XML.HXT.XPath</A
 ></TD
@@ -1278,7 +1273,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:20" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:19" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-XPath-NavTree.html"
@@ -1374,7 +1369,7 @@
 ></TR
 ><TR
 ><TD STYLE="width: 44em"
-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:21')" ALT="show/hide"
+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:20')" ALT="show/hide"
 >XSLT</TD
 ><TD
 ></TD
@@ -1383,7 +1378,7 @@
 ></TR
 ><TR
 ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"
-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:21" STYLE="display:block;"
+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:20" STYLE="display:block;"
 ><TR
 ><TD STYLE="padding-left: 1.25em;width: 42em"
 ><A HREF="Text-XML-HXT-XSLT-Application.html"
diff --git a/doc/hdoc/src/Control-Arrow-ArrowTree.html b/doc/hdoc/src/Control-Arrow-ArrowTree.html
--- a/doc/hdoc/src/Control-Arrow-ArrowTree.html
+++ b/doc/hdoc/src/Control-Arrow-ArrowTree.html
@@ -50,252 +50,262 @@
 <a name="line-42"></a>
 <a name="line-43"></a><a name="ArrowTree"></a><span class='keyword'>class</span> <span class='layout'>(</span><span class='conid'>ArrowPlus</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>ArrowIf</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>ArrowTree</span> <span class='varid'>a</span> <span class='keyword'>where</span>
 <a name="line-44"></a>
-<a name="line-45"></a>    <span class='comment'>-- | select the children of the root of a tree</span>
+<a name="line-45"></a>    <span class='comment'>-- | construct a leaf</span>
 <a name="line-46"></a>
-<a name="line-47"></a>    <span class='varid'>getChildren</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-48"></a>    <span class='varid'>getChildren</span>		<span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getChildren</span>
+<a name="line-47"></a>    <span class='varid'>mkLeaf</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='varid'>c</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-48"></a>    <span class='varid'>mkLeaf</span>		<span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='varop'>.</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>mkLeaf</span>
 <a name="line-49"></a>
-<a name="line-50"></a>    <span class='comment'>-- | select the attribute of the root of a tree</span>
+<a name="line-50"></a>    <span class='comment'>-- | construct an inner node</span>
 <a name="line-51"></a>
-<a name="line-52"></a>    <span class='varid'>getNode</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>b</span>
-<a name="line-53"></a>    <span class='varid'>getNode</span>		<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getNode</span>
+<a name="line-52"></a>    <span class='varid'>mkTree</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='varid'>t</span> <span class='varid'>b</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='varid'>c</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-53"></a>    <span class='varid'>mkTree</span> <span class='varid'>n</span>		<span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='varop'>.</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>mkTree</span> <span class='varid'>n</span>
 <a name="line-54"></a>
-<a name="line-55"></a>    <span class='comment'>-- | substitute the children of the root of a tree</span>
+<a name="line-55"></a>    <span class='comment'>-- | select the children of the root of a tree</span>
 <a name="line-56"></a>
-<a name="line-57"></a>    <span class='varid'>setChildren</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>            <span class='keyglyph'>[</span><span class='varid'>t</span> <span class='varid'>b</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-58"></a>    <span class='varid'>setChildren</span> <span class='varid'>cs</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>setChildren</span> <span class='varid'>cs</span><span class='layout'>)</span>
+<a name="line-57"></a>    <span class='varid'>getChildren</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-58"></a>    <span class='varid'>getChildren</span>		<span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getChildren</span>
 <a name="line-59"></a>
-<a name="line-60"></a>    <span class='comment'>-- | substitute the attribute of the root of a tree</span>
+<a name="line-60"></a>    <span class='comment'>-- | select the attribute of the root of a tree</span>
 <a name="line-61"></a>
-<a name="line-62"></a>    <span class='varid'>setNode</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>                <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-63"></a>    <span class='varid'>setNode</span> <span class='varid'>n</span>		<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>setNode</span> <span class='varid'>n</span><span class='layout'>)</span>
+<a name="line-62"></a>    <span class='varid'>getNode</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>b</span>
+<a name="line-63"></a>    <span class='varid'>getNode</span>		<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getNode</span>
 <a name="line-64"></a>
-<a name="line-65"></a>    <span class='comment'>-- | edit the children of the root of a tree</span>
+<a name="line-65"></a>    <span class='comment'>-- | substitute the children of the root of a tree</span>
 <a name="line-66"></a>
-<a name="line-67"></a>    <span class='varid'>changeChildren</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>t</span> <span class='varid'>b</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='varid'>t</span> <span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-68"></a>    <span class='varid'>changeChildren</span> <span class='varid'>csf</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>changeChildren</span> <span class='varid'>csf</span><span class='layout'>)</span>
+<a name="line-67"></a>    <span class='varid'>setChildren</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>            <span class='keyglyph'>[</span><span class='varid'>t</span> <span class='varid'>b</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-68"></a>    <span class='varid'>setChildren</span> <span class='varid'>cs</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>setChildren</span> <span class='varid'>cs</span><span class='layout'>)</span>
 <a name="line-69"></a>
-<a name="line-70"></a>    <span class='comment'>-- | edit the attribute of the root of a tree</span>
+<a name="line-70"></a>    <span class='comment'>-- | substitute the attribute of the root of a tree</span>
 <a name="line-71"></a>
-<a name="line-72"></a>    <span class='varid'>changeNode</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>        <span class='layout'>(</span><span class='varid'>b</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-73"></a>    <span class='varid'>changeNode</span> <span class='varid'>nf</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>changeNode</span> <span class='varid'>nf</span><span class='layout'>)</span>
+<a name="line-72"></a>    <span class='varid'>setNode</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>                <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-73"></a>    <span class='varid'>setNode</span> <span class='varid'>n</span>		<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>setNode</span> <span class='varid'>n</span><span class='layout'>)</span>
 <a name="line-74"></a>
-<a name="line-75"></a>								<span class='comment'>-- compound arrows</span>
+<a name="line-75"></a>    <span class='comment'>-- | edit the children of the root of a tree</span>
 <a name="line-76"></a>
-<a name="line-77"></a>    <span class='comment'>-- | apply an arrow element wise to all children of the root of a tree</span>
-<a name="line-78"></a>    <span class='comment'>-- collect these results and substitute the children with this result</span>
-<a name="line-79"></a>    <span class='comment'>--</span>
-<a name="line-80"></a>    <span class='comment'>-- example: @ processChildren isText @ deletes all subtrees, for which isText does not hold</span>
-<a name="line-81"></a>    <span class='comment'>--</span>
-<a name="line-82"></a>    <span class='comment'>-- example: @ processChildren (none \`when\` isCmt) @ removes all children, for which isCmt holds</span>
-<a name="line-83"></a>
-<a name="line-84"></a>    <span class='varid'>processChildren</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-85"></a>    <span class='varid'>processChildren</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getNode</span>
-<a name="line-86"></a>			  <span class='varop'>&amp;&amp;&amp;</span>
-<a name="line-87"></a>			  <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>arrL</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='comment'>-- new children, deterministic filter: single element result</span>
-<a name="line-88"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-89"></a>			  <span class='varid'>arr2</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>mkTree</span>
-<a name="line-90"></a>
-<a name="line-91"></a>    <span class='comment'>-- | similar to processChildren, but the new children are computed by processing</span>
-<a name="line-92"></a>    <span class='comment'>-- the whole input tree</span>
-<a name="line-93"></a>    <span class='comment'>--</span>
-<a name="line-94"></a>    <span class='comment'>-- example: @ replaceChildren (deep isText) @ selects all subtrees for which isText holds</span>
-<a name="line-95"></a>    <span class='comment'>-- and substitutes the children component of the root node with this list</span>
-<a name="line-96"></a>
-<a name="line-97"></a>    <span class='varid'>replaceChildren</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-98"></a>    <span class='varid'>replaceChildren</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getNode</span>
-<a name="line-99"></a>			  <span class='varop'>&amp;&amp;&amp;</span>
-<a name="line-100"></a>			  <span class='varid'>listA</span> <span class='varid'>f</span>				<span class='comment'>-- compute new children</span>
-<a name="line-101"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-102"></a>			  <span class='varid'>arr2</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>mkTree</span>
-<a name="line-103"></a>
-<a name="line-104"></a>    <span class='comment'>-- |</span>
-<a name="line-105"></a>    <span class='comment'>-- pronounced \"slash\", meaning g inside f</span>
-<a name="line-106"></a>    <span class='comment'>--</span>
-<a name="line-107"></a>    <span class='comment'>-- defined as @ f \/&gt; g = f &gt;&gt;&gt; getChildren &gt;&gt;&gt; g @</span>
-<a name="line-108"></a>    <span class='comment'>--</span>
-<a name="line-109"></a>    <span class='comment'>-- example: @ hasName \"html\" \/&gt; hasName \"body\" \/&gt; hasName \"h1\" @</span>
-<a name="line-110"></a>    <span class='comment'>--</span>
-<a name="line-111"></a>    <span class='comment'>-- This expression selects</span>
-<a name="line-112"></a>    <span class='comment'>-- all \"h1\" elements in the \"body\" element of an \"html\" element, an expression, that</span>
-<a name="line-113"></a>    <span class='comment'>-- corresponds 1-1 to the XPath selection path \"html\/body\/h1\" </span>
-<a name="line-114"></a>
-<a name="line-115"></a>    <span class='layout'>(</span><span class='varop'>/&gt;</span><span class='layout'>)</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-116"></a>    <span class='varid'>f</span> <span class='varop'>/&gt;</span> <span class='varid'>g</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>g</span>
-<a name="line-117"></a>
-<a name="line-118"></a>
-<a name="line-119"></a>    <span class='comment'>-- |</span>
-<a name="line-120"></a>    <span class='comment'>-- pronounced \"outside\" meaning f containing g</span>
-<a name="line-121"></a>    <span class='comment'>--</span>
-<a name="line-122"></a>    <span class='comment'>-- defined as @ f \&lt;\/ g = f \`containing\` (getChildren &gt;&gt;&gt; g) @</span>
-<a name="line-123"></a>
-<a name="line-124"></a>    <span class='layout'>(</span><span class='varop'>&lt;/</span><span class='layout'>)</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-125"></a>    <span class='varid'>f</span> <span class='varop'>&lt;/</span> <span class='varid'>g</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>`containing`</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>g</span><span class='layout'>)</span>
-<a name="line-126"></a>
+<a name="line-77"></a>    <span class='varid'>changeChildren</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>t</span> <span class='varid'>b</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='varid'>t</span> <span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-78"></a>    <span class='varid'>changeChildren</span> <span class='varid'>csf</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>changeChildren</span> <span class='varid'>csf</span><span class='layout'>)</span>
+<a name="line-79"></a>
+<a name="line-80"></a>    <span class='comment'>-- | edit the attribute of the root of a tree</span>
+<a name="line-81"></a>
+<a name="line-82"></a>    <span class='varid'>changeNode</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>        <span class='layout'>(</span><span class='varid'>b</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-83"></a>    <span class='varid'>changeNode</span> <span class='varid'>nf</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>T</span><span class='varop'>.</span><span class='varid'>changeNode</span> <span class='varid'>nf</span><span class='layout'>)</span>
+<a name="line-84"></a>
+<a name="line-85"></a>								<span class='comment'>-- compound arrows</span>
+<a name="line-86"></a>
+<a name="line-87"></a>    <span class='comment'>-- | apply an arrow element wise to all children of the root of a tree</span>
+<a name="line-88"></a>    <span class='comment'>-- collect these results and substitute the children with this result</span>
+<a name="line-89"></a>    <span class='comment'>--</span>
+<a name="line-90"></a>    <span class='comment'>-- example: @ processChildren isText @ deletes all subtrees, for which isText does not hold</span>
+<a name="line-91"></a>    <span class='comment'>--</span>
+<a name="line-92"></a>    <span class='comment'>-- example: @ processChildren (none \`when\` isCmt) @ removes all children, for which isCmt holds</span>
+<a name="line-93"></a>
+<a name="line-94"></a>    <span class='varid'>processChildren</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-95"></a>    <span class='varid'>processChildren</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getNode</span>
+<a name="line-96"></a>			  <span class='varop'>&amp;&amp;&amp;</span>
+<a name="line-97"></a>			  <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>arrL</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='comment'>-- new children, deterministic filter: single element result</span>
+<a name="line-98"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-99"></a>			  <span class='varid'>arr2</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>mkTree</span>
+<a name="line-100"></a>
+<a name="line-101"></a>    <span class='comment'>-- | similar to processChildren, but the new children are computed by processing</span>
+<a name="line-102"></a>    <span class='comment'>-- the whole input tree</span>
+<a name="line-103"></a>    <span class='comment'>--</span>
+<a name="line-104"></a>    <span class='comment'>-- example: @ replaceChildren (deep isText) @ selects all subtrees for which isText holds</span>
+<a name="line-105"></a>    <span class='comment'>-- and substitutes the children component of the root node with this list</span>
+<a name="line-106"></a>
+<a name="line-107"></a>    <span class='varid'>replaceChildren</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-108"></a>    <span class='varid'>replaceChildren</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>getNode</span>
+<a name="line-109"></a>			  <span class='varop'>&amp;&amp;&amp;</span>
+<a name="line-110"></a>			  <span class='varid'>listA</span> <span class='varid'>f</span>				<span class='comment'>-- compute new children</span>
+<a name="line-111"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-112"></a>			  <span class='varid'>arr2</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>mkTree</span>
+<a name="line-113"></a>
+<a name="line-114"></a>    <span class='comment'>-- |</span>
+<a name="line-115"></a>    <span class='comment'>-- pronounced \"slash\", meaning g inside f</span>
+<a name="line-116"></a>    <span class='comment'>--</span>
+<a name="line-117"></a>    <span class='comment'>-- defined as @ f \/&gt; g = f &gt;&gt;&gt; getChildren &gt;&gt;&gt; g @</span>
+<a name="line-118"></a>    <span class='comment'>--</span>
+<a name="line-119"></a>    <span class='comment'>-- example: @ hasName \"html\" \/&gt; hasName \"body\" \/&gt; hasName \"h1\" @</span>
+<a name="line-120"></a>    <span class='comment'>--</span>
+<a name="line-121"></a>    <span class='comment'>-- This expression selects</span>
+<a name="line-122"></a>    <span class='comment'>-- all \"h1\" elements in the \"body\" element of an \"html\" element, an expression, that</span>
+<a name="line-123"></a>    <span class='comment'>-- corresponds 1-1 to the XPath selection path \"html\/body\/h1\" </span>
+<a name="line-124"></a>
+<a name="line-125"></a>    <span class='layout'>(</span><span class='varop'>/&gt;</span><span class='layout'>)</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-126"></a>    <span class='varid'>f</span> <span class='varop'>/&gt;</span> <span class='varid'>g</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>g</span>
 <a name="line-127"></a>
-<a name="line-128"></a>    <span class='comment'>-- | recursively searches a whole tree for subtrees, for which a predicate holds.</span>
-<a name="line-129"></a>    <span class='comment'>-- The search is performed top down. When a tree is found, this becomes an element of the result</span>
-<a name="line-130"></a>    <span class='comment'>-- list. The tree found is not further examined for any subtress, for which the predicate also could hold.</span>
-<a name="line-131"></a>    <span class='comment'>-- See 'multi' for this kind of search.</span>
-<a name="line-132"></a>    <span class='comment'>--</span>
-<a name="line-133"></a>    <span class='comment'>-- example: @ deep isHtmlTable @ selects all top level table elements in a document</span>
-<a name="line-134"></a>    <span class='comment'>-- (with an appropriate definition for isHtmlTable) but no tables occuring within a table cell.</span>
-<a name="line-135"></a>
-<a name="line-136"></a>    <span class='varid'>deep</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-137"></a>    <span class='varid'>deep</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span>					<span class='comment'>-- success when applying f</span>
-<a name="line-138"></a>			  <span class='varop'>`orElse`</span>
-<a name="line-139"></a>			  <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>deep</span> <span class='varid'>f</span><span class='layout'>)</span>		<span class='comment'>-- seach children</span>
-<a name="line-140"></a>
-<a name="line-141"></a>
-<a name="line-142"></a>    <span class='comment'>-- | recursively searches a whole tree for subrees, for which a predicate holds.</span>
-<a name="line-143"></a>    <span class='comment'>-- The search is performed bottom up.</span>
-<a name="line-144"></a>    <span class='comment'>--</span>
-<a name="line-145"></a>    <span class='comment'>-- example: @ deepest isHtmlTable @ selects all innermost table elements in a document</span>
-<a name="line-146"></a>    <span class='comment'>-- but no table elements containing tables. See 'deep' and 'multi' for other search strategies.</span>
-<a name="line-147"></a>
-<a name="line-148"></a>    <span class='varid'>deepest</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-149"></a>    <span class='varid'>deepest</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>deepest</span> <span class='varid'>f</span><span class='layout'>)</span>		<span class='comment'>-- seach children</span>
-<a name="line-150"></a>			  <span class='varop'>`orElse`</span>
-<a name="line-151"></a>			  <span class='varid'>f</span>					<span class='comment'>-- no success: apply f to root</span>
-<a name="line-152"></a>
-<a name="line-153"></a>
-<a name="line-154"></a>    <span class='comment'>-- | recursively searches a whole tree for subtrees, for which a predicate holds.</span>
-<a name="line-155"></a>    <span class='comment'>-- The search is performed top down. All nodes of the tree are searched, even within the</span>
-<a name="line-156"></a>    <span class='comment'>-- subtrees of trees for which the predicate holds.</span>
-<a name="line-157"></a>    <span class='comment'>--</span>
-<a name="line-158"></a>    <span class='comment'>-- example: @ multy isHtmlTable @ selects all table elements, even nested ones.</span>
-<a name="line-159"></a>
-<a name="line-160"></a>    <span class='varid'>multi</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>c</span>
-<a name="line-161"></a>    <span class='varid'>multi</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span>					<span class='comment'>-- combine result for root</span>
-<a name="line-162"></a>			  <span class='varop'>&lt;+&gt;</span>
-<a name="line-163"></a>			  <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>multi</span> <span class='varid'>f</span><span class='layout'>)</span>		<span class='comment'>-- with result for all descendants</span>
-<a name="line-164"></a>
-<a name="line-165"></a>    <span class='comment'>-- | recursively transforms a whole tree by applying an arrow to all subtrees,</span>
-<a name="line-166"></a>    <span class='comment'>-- this is done bottom up depth first, leaves first, root as last tree</span>
+<a name="line-128"></a>
+<a name="line-129"></a>    <span class='comment'>-- |</span>
+<a name="line-130"></a>    <span class='comment'>-- pronounced \"outside\" meaning f containing g</span>
+<a name="line-131"></a>    <span class='comment'>--</span>
+<a name="line-132"></a>    <span class='comment'>-- defined as @ f \&lt;\/ g = f \`containing\` (getChildren &gt;&gt;&gt; g) @</span>
+<a name="line-133"></a>
+<a name="line-134"></a>    <span class='layout'>(</span><span class='varop'>&lt;/</span><span class='layout'>)</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-135"></a>    <span class='varid'>f</span> <span class='varop'>&lt;/</span> <span class='varid'>g</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>`containing`</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>g</span><span class='layout'>)</span>
+<a name="line-136"></a>
+<a name="line-137"></a>
+<a name="line-138"></a>    <span class='comment'>-- | recursively searches a whole tree for subtrees, for which a predicate holds.</span>
+<a name="line-139"></a>    <span class='comment'>-- The search is performed top down. When a tree is found, this becomes an element of the result</span>
+<a name="line-140"></a>    <span class='comment'>-- list. The tree found is not further examined for any subtress, for which the predicate also could hold.</span>
+<a name="line-141"></a>    <span class='comment'>-- See 'multi' for this kind of search.</span>
+<a name="line-142"></a>    <span class='comment'>--</span>
+<a name="line-143"></a>    <span class='comment'>-- example: @ deep isHtmlTable @ selects all top level table elements in a document</span>
+<a name="line-144"></a>    <span class='comment'>-- (with an appropriate definition for isHtmlTable) but no tables occuring within a table cell.</span>
+<a name="line-145"></a>
+<a name="line-146"></a>    <span class='varid'>deep</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-147"></a>    <span class='varid'>deep</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span>					<span class='comment'>-- success when applying f</span>
+<a name="line-148"></a>			  <span class='varop'>`orElse`</span>
+<a name="line-149"></a>			  <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>deep</span> <span class='varid'>f</span><span class='layout'>)</span>		<span class='comment'>-- seach children</span>
+<a name="line-150"></a>
+<a name="line-151"></a>
+<a name="line-152"></a>    <span class='comment'>-- | recursively searches a whole tree for subrees, for which a predicate holds.</span>
+<a name="line-153"></a>    <span class='comment'>-- The search is performed bottom up.</span>
+<a name="line-154"></a>    <span class='comment'>--</span>
+<a name="line-155"></a>    <span class='comment'>-- example: @ deepest isHtmlTable @ selects all innermost table elements in a document</span>
+<a name="line-156"></a>    <span class='comment'>-- but no table elements containing tables. See 'deep' and 'multi' for other search strategies.</span>
+<a name="line-157"></a>
+<a name="line-158"></a>    <span class='varid'>deepest</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-159"></a>    <span class='varid'>deepest</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>deepest</span> <span class='varid'>f</span><span class='layout'>)</span>		<span class='comment'>-- seach children</span>
+<a name="line-160"></a>			  <span class='varop'>`orElse`</span>
+<a name="line-161"></a>			  <span class='varid'>f</span>					<span class='comment'>-- no success: apply f to root</span>
+<a name="line-162"></a>
+<a name="line-163"></a>
+<a name="line-164"></a>    <span class='comment'>-- | recursively searches a whole tree for subtrees, for which a predicate holds.</span>
+<a name="line-165"></a>    <span class='comment'>-- The search is performed top down. All nodes of the tree are searched, even within the</span>
+<a name="line-166"></a>    <span class='comment'>-- subtrees of trees for which the predicate holds.</span>
 <a name="line-167"></a>    <span class='comment'>--</span>
-<a name="line-168"></a>    <span class='comment'>-- example: @ processBottomUp (getChildren \`when\` isHtmlFont) @ removes all font tags in a HTML document, even nested ones</span>
-<a name="line-169"></a>    <span class='comment'>-- (with an appropriate definition of isHtmlFont)</span>
-<a name="line-170"></a>
-<a name="line-171"></a>    <span class='varid'>processBottomUp</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-172"></a>    <span class='varid'>processBottomUp</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processBottomUp</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='comment'>-- process all descendants first</span>
-<a name="line-173"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-174"></a>			  <span class='varid'>f</span>					<span class='comment'>-- then process root</span>
-<a name="line-175"></a>
-<a name="line-176"></a>    <span class='comment'>-- | similar to 'processBottomUp', but recursively transforms a whole tree by applying an arrow to all subtrees</span>
-<a name="line-177"></a>    <span class='comment'>-- with a top down depth first traversal strategie. In many cases 'processBottomUp' and 'processTopDown'</span>
-<a name="line-178"></a>    <span class='comment'>-- give same results.</span>
-<a name="line-179"></a>
-<a name="line-180"></a>    <span class='varid'>processTopDown</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-181"></a>    <span class='varid'>processTopDown</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>f</span>					<span class='comment'>-- first process root</span>
-<a name="line-182"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-183"></a>			  <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processTopDown</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='comment'>-- then process all descendants of new root</span>
-<a name="line-184"></a>
+<a name="line-168"></a>    <span class='comment'>-- example: @ multy isHtmlTable @ selects all table elements, even nested ones.</span>
+<a name="line-169"></a>
+<a name="line-170"></a>    <span class='varid'>multi</span>		<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>c</span>
+<a name="line-171"></a>    <span class='varid'>multi</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='varid'>f</span>					<span class='comment'>-- combine result for root</span>
+<a name="line-172"></a>			  <span class='varop'>&lt;+&gt;</span>
+<a name="line-173"></a>			  <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>multi</span> <span class='varid'>f</span><span class='layout'>)</span>		<span class='comment'>-- with result for all descendants</span>
+<a name="line-174"></a>
+<a name="line-175"></a>    <span class='comment'>-- | recursively transforms a whole tree by applying an arrow to all subtrees,</span>
+<a name="line-176"></a>    <span class='comment'>-- this is done bottom up depth first, leaves first, root as last tree</span>
+<a name="line-177"></a>    <span class='comment'>--</span>
+<a name="line-178"></a>    <span class='comment'>-- example: @ processBottomUp (getChildren \`when\` isHtmlFont) @ removes all font tags in a HTML document, even nested ones</span>
+<a name="line-179"></a>    <span class='comment'>-- (with an appropriate definition of isHtmlFont)</span>
+<a name="line-180"></a>
+<a name="line-181"></a>    <span class='varid'>processBottomUp</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-182"></a>    <span class='varid'>processBottomUp</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processBottomUp</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='comment'>-- process all descendants first</span>
+<a name="line-183"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-184"></a>			  <span class='varid'>f</span>					<span class='comment'>-- then process root</span>
 <a name="line-185"></a>
-<a name="line-186"></a>    <span class='comment'>-- | recursively transforms a whole tree by applying an arrow to all subtrees,</span>
-<a name="line-187"></a>    <span class='comment'>-- but transformation stops when a predicte does not hold for a subtree,</span>
-<a name="line-188"></a>    <span class='comment'>-- leaves are transformed first</span>
+<a name="line-186"></a>    <span class='comment'>-- | similar to 'processBottomUp', but recursively transforms a whole tree by applying an arrow to all subtrees</span>
+<a name="line-187"></a>    <span class='comment'>-- with a top down depth first traversal strategie. In many cases 'processBottomUp' and 'processTopDown'</span>
+<a name="line-188"></a>    <span class='comment'>-- give same results.</span>
 <a name="line-189"></a>
-<a name="line-190"></a>    <span class='varid'>processBottomUpWhenNot</span>
-<a name="line-191"></a>			<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-192"></a>    <span class='varid'>processBottomUpWhenNot</span> <span class='varid'>f</span> <span class='varid'>p</span>
-<a name="line-193"></a>			<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processBottomUpWhenNot</span> <span class='varid'>f</span> <span class='varid'>p</span><span class='layout'>)</span>
-<a name="line-194"></a>			    <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-195"></a>			    <span class='varid'>f</span>
-<a name="line-196"></a>			  <span class='layout'>)</span> <span class='varop'>`whenNot`</span> <span class='varid'>p</span>
-<a name="line-197"></a>
-<a name="line-198"></a>    <span class='comment'>-- | recursively transforms a whole tree by applying an arrow to all subtrees,</span>
-<a name="line-199"></a>    <span class='comment'>-- but transformation stops when a tree is successfully transformed.</span>
-<a name="line-200"></a>    <span class='comment'>-- the transformation is done top down</span>
-<a name="line-201"></a>    <span class='comment'>--</span>
-<a name="line-202"></a>    <span class='comment'>-- example: @ processTopDownUntil (isHtmlTable \`guards\` tranformTable) @</span>
-<a name="line-203"></a>    <span class='comment'>-- transforms all top level table elements into something else, but inner tables remain unchanged</span>
-<a name="line-204"></a>
-<a name="line-205"></a>    <span class='varid'>processTopDownUntil</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-206"></a>    <span class='varid'>processTopDownUntil</span> <span class='varid'>f</span>
-<a name="line-207"></a>			<span class='keyglyph'>=</span> <span class='varid'>f</span>
-<a name="line-208"></a>			  <span class='varop'>`orElse`</span>
-<a name="line-209"></a>			  <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processTopDownUntil</span> <span class='varid'>f</span><span class='layout'>)</span>
-<a name="line-210"></a>
-<a name="line-211"></a>    <span class='comment'>-- | computes a list of trees by applying an arrow to the input</span>
-<a name="line-212"></a>    <span class='comment'>-- and inserts this list in front of index i in the list of children</span>
-<a name="line-213"></a>    <span class='comment'>--</span>
-<a name="line-214"></a>    <span class='comment'>-- example: @ insertChildrenAt 0 (deep isCmt) @ selects all subtrees for which isCmt holds</span>
-<a name="line-215"></a>    <span class='comment'>-- and copies theses in front of the existing children</span>
-<a name="line-216"></a>
-<a name="line-217"></a>    <span class='varid'>insertChildrenAt</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>           <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-218"></a>    <span class='varid'>insertChildrenAt</span> <span class='varid'>i</span> <span class='varid'>f</span>
-<a name="line-219"></a>			<span class='keyglyph'>=</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>this</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr2</span> <span class='varid'>insertAt</span>
-<a name="line-220"></a>			  <span class='keyword'>where</span>
-<a name="line-221"></a>			  <span class='varid'>insertAt</span> <span class='varid'>newcs</span>
-<a name="line-222"></a>			      <span class='keyglyph'>=</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>changeChildren</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>cs</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span>
-<a name="line-223"></a>						          <span class='layout'>(</span><span class='varid'>cs1</span><span class='layout'>,</span> <span class='varid'>cs2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>splitAt</span> <span class='varid'>i</span> <span class='varid'>cs</span>
-<a name="line-224"></a>						          <span class='keyword'>in</span>
-<a name="line-225"></a>						          <span class='varid'>cs1</span> <span class='varop'>++</span> <span class='varid'>newcs</span> <span class='varop'>++</span> <span class='varid'>cs2</span>
-<a name="line-226"></a>						 <span class='layout'>)</span>
-<a name="line-227"></a>
-<a name="line-228"></a>    <span class='comment'>-- | similar to 'insertChildrenAt', but the insertion position is searched with a predicate</span>
-<a name="line-229"></a>
-<a name="line-230"></a>    <span class='varid'>insertChildrenAfter</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-231"></a>    <span class='varid'>insertChildrenAfter</span> <span class='varid'>p</span> <span class='varid'>f</span>
-<a name="line-232"></a>			<span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span>
-<a name="line-233"></a>			  <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='varid'>getChildren</span>
-<a name="line-234"></a>				<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-235"></a>				<span class='varid'>spanA</span> <span class='varid'>p</span>
-<a name="line-236"></a>			      <span class='layout'>)</span>
-<a name="line-237"></a>			      <span class='varop'>&amp;&amp;&amp;</span>
-<a name="line-238"></a>			      <span class='varid'>listA</span> <span class='varid'>f</span>
-<a name="line-239"></a>			    <span class='layout'>)</span>
-<a name="line-240"></a>			    <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr2L</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>xs1</span><span class='layout'>,</span> <span class='varid'>xs2</span><span class='layout'>)</span> <span class='varid'>xs</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xs1</span> <span class='varop'>++</span> <span class='varid'>xs</span> <span class='varop'>++</span> <span class='varid'>xs2</span><span class='layout'>)</span>
-<a name="line-241"></a>			  <span class='layout'>)</span>
-<a name="line-242"></a>			  
-<a name="line-243"></a>    <span class='comment'>-- | an arrow for inserting a whole subtree with some holes in it (a template)</span>
-<a name="line-244"></a>    <span class='comment'>-- into a document. The holes can be filled with contents from the input.</span>
-<a name="line-245"></a>    <span class='comment'>--</span>
-<a name="line-246"></a>    <span class='comment'>-- Example</span>
-<a name="line-247"></a>    <span class='comment'>--</span>
-<a name="line-248"></a>    <span class='comment'>-- &gt; insertTreeTemplateTest	:: ArrowXml a =&gt; a b XmlTree</span>
-<a name="line-249"></a>    <span class='comment'>-- &gt; insertTreeTemplateTest</span>
-<a name="line-250"></a>    <span class='comment'>-- &gt;     = doc</span>
-<a name="line-251"></a>    <span class='comment'>-- &gt;       &gt;&gt;&gt;</span>
-<a name="line-252"></a>    <span class='comment'>-- &gt;       insertTemplate template pattern</span>
-<a name="line-253"></a>    <span class='comment'>-- &gt;     where</span>
-<a name="line-254"></a>    <span class='comment'>-- &gt;     doc								-- the input data</span>
-<a name="line-255"></a>    <span class='comment'>-- &gt; 	= constA "&lt;x&gt;&lt;y&gt;The Title&lt;/y&gt;&lt;z&gt;The content&lt;/z&gt;&lt;/x&gt;"</span>
-<a name="line-256"></a>    <span class='comment'>-- &gt; 	  &gt;&gt;&gt; xread</span>
-<a name="line-257"></a>    <span class='comment'>-- &gt;     template								-- the output template with 2 holes: xxx and yyy</span>
-<a name="line-258"></a>    <span class='comment'>-- &gt; 	= constA "&lt;html&gt;&lt;head&gt;&lt;title&gt;xxx&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;yyy&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;"</span>
-<a name="line-259"></a>    <span class='comment'>-- &gt; 	  &gt;&gt;&gt; xread</span>
-<a name="line-260"></a>    <span class='comment'>-- &gt;     pattern</span>
-<a name="line-261"></a>    <span class='comment'>-- &gt; 	= [ hasText (== "xxx")						-- fill the xxx hole with the input contents from element "x/y"</span>
-<a name="line-262"></a>    <span class='comment'>-- &gt; 	    :-&gt; ( getChildren &gt;&gt;&gt; hasName "y" &gt;&gt;&gt; deep isText )</span>
-<a name="line-263"></a>    <span class='comment'>-- &gt; </span>
-<a name="line-264"></a>    <span class='comment'>-- &gt; 	  , hasText (== "yyy")						-- fill the yyy hole with the input contents from element "x/z"</span>
-<a name="line-265"></a>    <span class='comment'>-- &gt; 	    :-&gt; ( getChildren &gt;&gt;&gt; hasName "z" &gt;&gt;&gt; getChildren )</span>
-<a name="line-266"></a>    <span class='comment'>-- &gt; 	  ]</span>
-<a name="line-267"></a>    <span class='comment'>--</span>
-<a name="line-268"></a>    <span class='comment'>-- computes the XML tree for the following document</span>
-<a name="line-269"></a>    <span class='comment'>--</span>
-<a name="line-270"></a>    <span class='comment'>-- &gt; "&lt;html&gt;&lt;head&gt;&lt;title&gt;The Title&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;The content&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;"</span>
-<a name="line-271"></a>
-<a name="line-272"></a>    <span class='varid'>insertTreeTemplate</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>
-<a name="line-273"></a>			   <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>					<span class='comment'>-- the the template</span>
-<a name="line-274"></a>			   <span class='keyglyph'>[</span><span class='conid'>IfThen</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span>		<span class='comment'>-- the list of nodes in the template to be substituted</span>
-<a name="line-275"></a>			   <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-276"></a>    <span class='varid'>insertTreeTemplate</span> <span class='varid'>template</span> <span class='varid'>choices</span>
-<a name="line-277"></a>	<span class='keyglyph'>=</span> <span class='varid'>insertTree</span> <span class='varop'>$&lt;</span> <span class='varid'>this</span>
-<a name="line-278"></a>	  <span class='keyword'>where</span>
-<a name="line-279"></a>	  <span class='varid'>insertTree</span> <span class='varid'>t</span>
-<a name="line-280"></a>	      <span class='keyglyph'>=</span> <span class='varid'>template</span>					<span class='comment'>-- swap input and template</span>
-<a name="line-281"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-282"></a>		<span class='varid'>processTemplate</span>
-<a name="line-283"></a>	      <span class='keyword'>where</span>
-<a name="line-284"></a>	      <span class='varid'>processTemplate</span>
-<a name="line-285"></a>		  <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='varid'>choices'</span>				<span class='comment'>-- check whether node is a "hole" within the template</span>
-<a name="line-286"></a>		    <span class='varop'>`orElse`</span>
-<a name="line-287"></a>		    <span class='varid'>processChildren</span> <span class='varid'>processTemplate</span>		<span class='comment'>-- else descent into template tree</span>
-<a name="line-288"></a>	      <span class='varid'>choices'</span>
-<a name="line-289"></a>		  <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>feedTree</span> <span class='varid'>choices</span>			<span class='comment'>-- modify choices, such that the input is feed into the action arrows</span>
-<a name="line-290"></a>	      <span class='varid'>feedTree</span> <span class='layout'>(</span><span class='varid'>cond</span> <span class='conop'>:-&gt;</span> <span class='varid'>action</span><span class='layout'>)</span>
-<a name="line-291"></a>		  <span class='keyglyph'>=</span> <span class='varid'>cond</span> <span class='conop'>:-&gt;</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='varid'>t</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>action</span><span class='layout'>)</span>		<span class='comment'>-- the real input becomes the input at the holes</span>
+<a name="line-190"></a>    <span class='varid'>processTopDown</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-191"></a>    <span class='varid'>processTopDown</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>f</span>					<span class='comment'>-- first process root</span>
+<a name="line-192"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-193"></a>			  <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processTopDown</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='comment'>-- then process all descendants of new root</span>
+<a name="line-194"></a>
+<a name="line-195"></a>
+<a name="line-196"></a>    <span class='comment'>-- | recursively transforms a whole tree by applying an arrow to all subtrees,</span>
+<a name="line-197"></a>    <span class='comment'>-- but transformation stops when a predicte does not hold for a subtree,</span>
+<a name="line-198"></a>    <span class='comment'>-- leaves are transformed first</span>
+<a name="line-199"></a>
+<a name="line-200"></a>    <span class='varid'>processBottomUpWhenNot</span>
+<a name="line-201"></a>			<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-202"></a>    <span class='varid'>processBottomUpWhenNot</span> <span class='varid'>f</span> <span class='varid'>p</span>
+<a name="line-203"></a>			<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processBottomUpWhenNot</span> <span class='varid'>f</span> <span class='varid'>p</span><span class='layout'>)</span>
+<a name="line-204"></a>			    <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-205"></a>			    <span class='varid'>f</span>
+<a name="line-206"></a>			  <span class='layout'>)</span> <span class='varop'>`whenNot`</span> <span class='varid'>p</span>
+<a name="line-207"></a>
+<a name="line-208"></a>    <span class='comment'>-- | recursively transforms a whole tree by applying an arrow to all subtrees,</span>
+<a name="line-209"></a>    <span class='comment'>-- but transformation stops when a tree is successfully transformed.</span>
+<a name="line-210"></a>    <span class='comment'>-- the transformation is done top down</span>
+<a name="line-211"></a>    <span class='comment'>--</span>
+<a name="line-212"></a>    <span class='comment'>-- example: @ processTopDownUntil (isHtmlTable \`guards\` tranformTable) @</span>
+<a name="line-213"></a>    <span class='comment'>-- transforms all top level table elements into something else, but inner tables remain unchanged</span>
+<a name="line-214"></a>
+<a name="line-215"></a>    <span class='varid'>processTopDownUntil</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-216"></a>    <span class='varid'>processTopDownUntil</span> <span class='varid'>f</span>
+<a name="line-217"></a>			<span class='keyglyph'>=</span> <span class='varid'>f</span>
+<a name="line-218"></a>			  <span class='varop'>`orElse`</span>
+<a name="line-219"></a>			  <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processTopDownUntil</span> <span class='varid'>f</span><span class='layout'>)</span>
+<a name="line-220"></a>
+<a name="line-221"></a>    <span class='comment'>-- | computes a list of trees by applying an arrow to the input</span>
+<a name="line-222"></a>    <span class='comment'>-- and inserts this list in front of index i in the list of children</span>
+<a name="line-223"></a>    <span class='comment'>--</span>
+<a name="line-224"></a>    <span class='comment'>-- example: @ insertChildrenAt 0 (deep isCmt) @ selects all subtrees for which isCmt holds</span>
+<a name="line-225"></a>    <span class='comment'>-- and copies theses in front of the existing children</span>
+<a name="line-226"></a>
+<a name="line-227"></a>    <span class='varid'>insertChildrenAt</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>           <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-228"></a>    <span class='varid'>insertChildrenAt</span> <span class='varid'>i</span> <span class='varid'>f</span>
+<a name="line-229"></a>			<span class='keyglyph'>=</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>this</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr2</span> <span class='varid'>insertAt</span>
+<a name="line-230"></a>			  <span class='keyword'>where</span>
+<a name="line-231"></a>			  <span class='varid'>insertAt</span> <span class='varid'>newcs</span>
+<a name="line-232"></a>			      <span class='keyglyph'>=</span> <span class='conid'>T</span><span class='varop'>.</span><span class='varid'>changeChildren</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>cs</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span>
+<a name="line-233"></a>						          <span class='layout'>(</span><span class='varid'>cs1</span><span class='layout'>,</span> <span class='varid'>cs2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>splitAt</span> <span class='varid'>i</span> <span class='varid'>cs</span>
+<a name="line-234"></a>						          <span class='keyword'>in</span>
+<a name="line-235"></a>						          <span class='varid'>cs1</span> <span class='varop'>++</span> <span class='varid'>newcs</span> <span class='varop'>++</span> <span class='varid'>cs2</span>
+<a name="line-236"></a>						 <span class='layout'>)</span>
+<a name="line-237"></a>
+<a name="line-238"></a>    <span class='comment'>-- | similar to 'insertChildrenAt', but the insertion position is searched with a predicate</span>
+<a name="line-239"></a>
+<a name="line-240"></a>    <span class='varid'>insertChildrenAfter</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-241"></a>    <span class='varid'>insertChildrenAfter</span> <span class='varid'>p</span> <span class='varid'>f</span>
+<a name="line-242"></a>			<span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span>
+<a name="line-243"></a>			  <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='varid'>getChildren</span>
+<a name="line-244"></a>				<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-245"></a>				<span class='varid'>spanA</span> <span class='varid'>p</span>
+<a name="line-246"></a>			      <span class='layout'>)</span>
+<a name="line-247"></a>			      <span class='varop'>&amp;&amp;&amp;</span>
+<a name="line-248"></a>			      <span class='varid'>listA</span> <span class='varid'>f</span>
+<a name="line-249"></a>			    <span class='layout'>)</span>
+<a name="line-250"></a>			    <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr2L</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>xs1</span><span class='layout'>,</span> <span class='varid'>xs2</span><span class='layout'>)</span> <span class='varid'>xs</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xs1</span> <span class='varop'>++</span> <span class='varid'>xs</span> <span class='varop'>++</span> <span class='varid'>xs2</span><span class='layout'>)</span>
+<a name="line-251"></a>			  <span class='layout'>)</span>
+<a name="line-252"></a>			  
+<a name="line-253"></a>    <span class='comment'>-- | an arrow for inserting a whole subtree with some holes in it (a template)</span>
+<a name="line-254"></a>    <span class='comment'>-- into a document. The holes can be filled with contents from the input.</span>
+<a name="line-255"></a>    <span class='comment'>--</span>
+<a name="line-256"></a>    <span class='comment'>-- Example</span>
+<a name="line-257"></a>    <span class='comment'>--</span>
+<a name="line-258"></a>    <span class='comment'>-- &gt; insertTreeTemplateTest	:: ArrowXml a =&gt; a b XmlTree</span>
+<a name="line-259"></a>    <span class='comment'>-- &gt; insertTreeTemplateTest</span>
+<a name="line-260"></a>    <span class='comment'>-- &gt;     = doc</span>
+<a name="line-261"></a>    <span class='comment'>-- &gt;       &gt;&gt;&gt;</span>
+<a name="line-262"></a>    <span class='comment'>-- &gt;       insertTemplate template pattern</span>
+<a name="line-263"></a>    <span class='comment'>-- &gt;     where</span>
+<a name="line-264"></a>    <span class='comment'>-- &gt;     doc								-- the input data</span>
+<a name="line-265"></a>    <span class='comment'>-- &gt; 	= constA "&lt;x&gt;&lt;y&gt;The Title&lt;/y&gt;&lt;z&gt;The content&lt;/z&gt;&lt;/x&gt;"</span>
+<a name="line-266"></a>    <span class='comment'>-- &gt; 	  &gt;&gt;&gt; xread</span>
+<a name="line-267"></a>    <span class='comment'>-- &gt;     template								-- the output template with 2 holes: xxx and yyy</span>
+<a name="line-268"></a>    <span class='comment'>-- &gt; 	= constA "&lt;html&gt;&lt;head&gt;&lt;title&gt;xxx&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;yyy&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;"</span>
+<a name="line-269"></a>    <span class='comment'>-- &gt; 	  &gt;&gt;&gt; xread</span>
+<a name="line-270"></a>    <span class='comment'>-- &gt;     pattern</span>
+<a name="line-271"></a>    <span class='comment'>-- &gt; 	= [ hasText (== "xxx")						-- fill the xxx hole with the input contents from element "x/y"</span>
+<a name="line-272"></a>    <span class='comment'>-- &gt; 	    :-&gt; ( getChildren &gt;&gt;&gt; hasName "y" &gt;&gt;&gt; deep isText )</span>
+<a name="line-273"></a>    <span class='comment'>-- &gt; </span>
+<a name="line-274"></a>    <span class='comment'>-- &gt; 	  , hasText (== "yyy")						-- fill the yyy hole with the input contents from element "x/z"</span>
+<a name="line-275"></a>    <span class='comment'>-- &gt; 	    :-&gt; ( getChildren &gt;&gt;&gt; hasName "z" &gt;&gt;&gt; getChildren )</span>
+<a name="line-276"></a>    <span class='comment'>-- &gt; 	  ]</span>
+<a name="line-277"></a>    <span class='comment'>--</span>
+<a name="line-278"></a>    <span class='comment'>-- computes the XML tree for the following document</span>
+<a name="line-279"></a>    <span class='comment'>--</span>
+<a name="line-280"></a>    <span class='comment'>-- &gt; "&lt;html&gt;&lt;head&gt;&lt;title&gt;The Title&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;The content&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;"</span>
+<a name="line-281"></a>
+<a name="line-282"></a>    <span class='varid'>insertTreeTemplate</span>	<span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=&gt;</span>
+<a name="line-283"></a>			   <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>					<span class='comment'>-- the the template</span>
+<a name="line-284"></a>			   <span class='keyglyph'>[</span><span class='conid'>IfThen</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span>		<span class='comment'>-- the list of nodes in the template to be substituted</span>
+<a name="line-285"></a>			   <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-286"></a>    <span class='varid'>insertTreeTemplate</span> <span class='varid'>template</span> <span class='varid'>choices</span>
+<a name="line-287"></a>	<span class='keyglyph'>=</span> <span class='varid'>insertTree</span> <span class='varop'>$&lt;</span> <span class='varid'>this</span>
+<a name="line-288"></a>	  <span class='keyword'>where</span>
+<a name="line-289"></a>	  <span class='varid'>insertTree</span> <span class='varid'>t</span>
+<a name="line-290"></a>	      <span class='keyglyph'>=</span> <span class='varid'>template</span>					<span class='comment'>-- swap input and template</span>
+<a name="line-291"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-292"></a>		<span class='varid'>processTemplate</span>
+<a name="line-293"></a>	      <span class='keyword'>where</span>
+<a name="line-294"></a>	      <span class='varid'>processTemplate</span>
+<a name="line-295"></a>		  <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='varid'>choices'</span>				<span class='comment'>-- check whether node is a "hole" within the template</span>
+<a name="line-296"></a>		    <span class='varop'>`orElse`</span>
+<a name="line-297"></a>		    <span class='varid'>processChildren</span> <span class='varid'>processTemplate</span>		<span class='comment'>-- else descent into template tree</span>
+<a name="line-298"></a>	      <span class='varid'>choices'</span>
+<a name="line-299"></a>		  <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>feedTree</span> <span class='varid'>choices</span>			<span class='comment'>-- modify choices, such that the input is feed into the action arrows</span>
+<a name="line-300"></a>	      <span class='varid'>feedTree</span> <span class='layout'>(</span><span class='varid'>cond</span> <span class='conop'>:-&gt;</span> <span class='varid'>action</span><span class='layout'>)</span>
+<a name="line-301"></a>		  <span class='keyglyph'>=</span> <span class='varid'>cond</span> <span class='conop'>:-&gt;</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='varid'>t</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>action</span><span class='layout'>)</span>		<span class='comment'>-- the real input becomes the input at the holes</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Control-Monad-MonadStateIO.html b/doc/hdoc/src/Control-Monad-MonadStateIO.html
deleted file mode 100644
--- a/doc/hdoc/src/Control-Monad-MonadStateIO.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- general usefull state monad for a local state and IO</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- Version : $Id: MonadStateIO.hs,v 1.1 2004/09/02 19:11:55 hxml Exp $</span>
-<a name="line-5"></a>
-<a name="line-6"></a>
-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span><span class='varop'>.</span><span class='conid'>MonadStateIO</span>
-<a name="line-8"></a>    <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span><span class='varop'>.</span><span class='conid'>MonadStateIO</span>
-<a name="line-9"></a>    <span class='layout'>)</span>
-<a name="line-10"></a><span class='keyword'>where</span>
-<a name="line-11"></a>
-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
-<a name="line-13"></a>
-<a name="line-14"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-15"></a>
-<a name="line-16"></a><a name="StateIO"></a><span class='keyword'>newtype</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>{</span> <span class='varid'>trans</span> <span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-17"></a>
-<a name="line-18"></a><span class='keyword'>instance</span> <span class='conid'>Monad</span> <span class='layout'>(</span><span class='conid'>StateIO</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='keyword'>where</span>
-<a name="line-19"></a>    <span class='varid'>return</span> <span class='varid'>v</span>
-<a name="line-20"></a>	<span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>v</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-21"></a>
-<a name="line-22"></a>    <span class='conid'>STIO</span> <span class='varid'>cmd</span> <span class='varop'>&gt;&gt;=</span> <span class='varid'>f</span>
-<a name="line-23"></a>	<span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-24"></a>		  <span class='varid'>cmd</span> <span class='varid'>s</span> <span class='varop'>&gt;&gt;=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>rl</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-25"></a>		  <span class='layout'>(</span><span class='varid'>trans</span> <span class='varop'>.</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>rl</span> <span class='varid'>s'</span>
-<a name="line-26"></a>		<span class='layout'>)</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-29"></a><span class='comment'>-- |</span>
-<a name="line-30"></a><span class='comment'>-- lift IO command to 'StateIO'</span>
-<a name="line-31"></a>
-<a name="line-32"></a><a name="io"></a><span class='definition'>io</span> <span class='keyglyph'>::</span> <span class='conid'>IO</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>a</span>
-<a name="line-33"></a><span class='definition'>io</span> <span class='varid'>iocmd</span>
-<a name="line-34"></a>    <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-35"></a>	     <span class='keyword'>do</span>
-<a name="line-36"></a>	     <span class='varid'>a</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>iocmd</span>
-<a name="line-37"></a>	     <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-38"></a>	   <span class='layout'>)</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-41"></a>
-<a name="line-42"></a><span class='comment'>-- |</span>
-<a name="line-43"></a><span class='comment'>-- state inspection command: a \"show\"-like function is applied to the state</span>
-<a name="line-44"></a><span class='comment'>-- and the result is written to stderr.</span>
-<a name="line-45"></a>
-<a name="line-46"></a><a name="trcState"></a><span class='definition'>trcState</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-47"></a><span class='definition'>trcState</span> <span class='varid'>fct</span>
-<a name="line-48"></a>    <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-49"></a>	      <span class='keyword'>do</span>
-<a name="line-50"></a>	      <span class='varid'>hPutStr</span> <span class='varid'>stderr</span> <span class='varop'>$</span> <span class='varid'>fct</span> <span class='varid'>s</span>
-<a name="line-51"></a>	      <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>()</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-52"></a>	    <span class='layout'>)</span>
-<a name="line-53"></a>
-<a name="line-54"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-55"></a><span class='comment'>--</span>
-<a name="line-56"></a><span class='comment'>-- state access commands</span>
-<a name="line-57"></a>
-<a name="line-58"></a><span class='comment'>-- |</span>
-<a name="line-59"></a><span class='comment'>-- change the state with a given function and return the new state</span>
-<a name="line-60"></a>
-<a name="line-61"></a><a name="changeState"></a><span class='definition'>changeState</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>state</span>
-<a name="line-62"></a><span class='definition'>changeState</span> <span class='varid'>f</span>
-<a name="line-63"></a>    <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-64"></a>	     <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>s</span>
-<a name="line-65"></a>	     <span class='keyword'>in</span>
-<a name="line-66"></a>	     <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span>
-<a name="line-67"></a>	    <span class='layout'>)</span>
-<a name="line-68"></a>
-<a name="line-69"></a><span class='comment'>-- |</span>
-<a name="line-70"></a><span class='comment'>-- set the state</span>
-<a name="line-71"></a>
-<a name="line-72"></a><a name="setState"></a><span class='definition'>setState</span>	<span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>state</span>
-<a name="line-73"></a><span class='definition'>setState</span> <span class='varid'>s</span>
-<a name="line-74"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>)</span>
-<a name="line-75"></a>
-<a name="line-76"></a><span class='comment'>-- |</span>
-<a name="line-77"></a><span class='comment'>-- read the state</span>
-<a name="line-78"></a>
-<a name="line-79"></a><a name="getState"></a><span class='definition'>getState</span>	<span class='keyglyph'>::</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>state</span>
-<a name="line-80"></a><span class='definition'>getState</span>
-<a name="line-81"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='varid'>id</span>
-<a name="line-82"></a>
-<a name="line-83"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-84"></a><span class='comment'>-- |</span>
-<a name="line-85"></a><span class='comment'>-- run a 'StateIO' command with an initial state</span>
-<a name="line-86"></a>
-<a name="line-87"></a><a name="run"></a><span class='definition'>run</span> <span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='varid'>res</span>
-<a name="line-88"></a><span class='definition'>run</span> <span class='varid'>initialState</span> <span class='layout'>(</span><span class='conid'>STIO</span> <span class='varid'>cmd</span><span class='layout'>)</span>
-<a name="line-89"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-90"></a>      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='sel'>_finalState</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>cmd</span> <span class='varid'>initialState</span>
-<a name="line-91"></a>      <span class='varid'>return</span> <span class='varid'>res</span>
-<a name="line-92"></a>
-<a name="line-93"></a>
-<a name="line-94"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/System-PipeOpen.html b/doc/hdoc/src/System-PipeOpen.html
deleted file mode 100644
--- a/doc/hdoc/src/System-PipeOpen.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a>
-<a name="line-3"></a><span class='comment'>{- |
-<a name="line-4"></a>   Module     : System.PipeOpen
-<a name="line-5"></a>   Copyright  : Copyright (C) 2005 Uwe Schmidt
-<a name="line-6"></a>   License    : MIT
-<a name="line-7"></a>
-<a name="line-8"></a>   Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)
-<a name="line-9"></a>   Stability  : experimental
-<a name="line-10"></a>   Portability: none portable
-<a name="line-11"></a>   Version    : $Id: PipeOpen.hs,v 1.2 2005/09/02 17:09:39 hxml Exp $
-<a name="line-12"></a>
-<a name="line-13"></a>pipe open implemented with System.Process functions
-<a name="line-14"></a>
-<a name="line-15"></a>-}</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>PipeOpen</span>
-<a name="line-20"></a>    <span class='layout'>(</span> <span class='varid'>popen</span> <span class='layout'>)</span>
-<a name="line-21"></a><span class='keyword'>where</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>IO</span>
-<a name="line-24"></a>    <span class='layout'>(</span> <span class='varid'>hGetContents</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>hClose</span>
-<a name="line-26"></a>    <span class='layout'>)</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Exit</span>
-<a name="line-29"></a>    <span class='layout'>(</span> <span class='conid'>ExitCode</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>
-<a name="line-30"></a>    <span class='layout'>)</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Process</span>
-<a name="line-33"></a>    <span class='layout'>(</span> <span class='varid'>runInteractiveProcess</span>
-<a name="line-34"></a>    <span class='layout'>,</span> <span class='varid'>waitForProcess</span>
-<a name="line-35"></a>    <span class='layout'>)</span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class='comment'>-- | call an external program with a list of command line arguments</span>
-<a name="line-38"></a><span class='comment'>-- and return content of stdout, content of stderr and return code</span>
-<a name="line-39"></a>
-<a name="line-40"></a><a name="popen"></a><span class='definition'>popen</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>
-<a name="line-41"></a><span class='definition'>popen</span> <span class='varid'>prg</span> <span class='varid'>argl</span>
-<a name="line-42"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-43"></a>      <span class='layout'>(</span><span class='varid'>inpH</span><span class='layout'>,</span> <span class='varid'>outH</span><span class='layout'>,</span> <span class='varid'>errH</span><span class='layout'>,</span> <span class='varid'>pH</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runInteractiveProcess</span> <span class='varid'>prg</span> <span class='varid'>argl</span> <span class='conid'>Nothing</span> <span class='conid'>Nothing</span>
-<a name="line-44"></a>      <span class='varid'>hClose</span> <span class='varid'>inpH</span>
-<a name="line-45"></a>      <span class='varid'>res</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>hGetContents</span> <span class='varid'>outH</span>
-<a name="line-46"></a>      <span class='varid'>errs</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>hGetContents</span> <span class='varid'>errH</span>
-<a name="line-47"></a>
-<a name="line-48"></a>      <span class='comment'>-- hack: stdout and stderr must be read completely, otherwise waitForProcess blocks</span>
-<a name="line-49"></a>      <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>res</span>  <span class='varop'>==</span> <span class='num'>0</span><span class='layout'>)</span> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-50"></a>      <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>errs</span> <span class='varop'>==</span> <span class='num'>0</span><span class='layout'>)</span> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-51"></a>
-<a name="line-52"></a>      <span class='varid'>rc</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>waitForProcess</span> <span class='varid'>pH</span>
-<a name="line-53"></a>      <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>res</span>
-<a name="line-54"></a>	     <span class='layout'>,</span> <span class='varid'>errs</span>
-<a name="line-55"></a>	     <span class='layout'>,</span> <span class='keyword'>case</span> <span class='varid'>rc</span> <span class='keyword'>of</span>
-<a name="line-56"></a>	       <span class='conid'>ExitSuccess</span> <span class='keyglyph'>-&gt;</span> <span class='num'>0</span>
-<a name="line-57"></a>	       <span class='conid'>ExitFailure</span> <span class='varid'>i</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>i</span>
-<a name="line-58"></a>	     <span class='layout'>)</span>
-<a name="line-59"></a>
-<a name="line-60"></a><span class='comment'>-- eof ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow-DocumentInput.html b/doc/hdoc/src/Text-XML-HXT-Arrow-DocumentInput.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow-DocumentInput.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow-DocumentInput.html
@@ -38,337 +38,392 @@
 <a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>
 <a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIO</span>
 <a name="line-32"></a>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>
-<a name="line-34"></a>    <span class='layout'>(</span> <span class='varid'>getDecodingFct</span>
-<a name="line-35"></a>    <span class='layout'>,</span> <span class='varid'>guessEncoding</span>
-<a name="line-36"></a>    <span class='layout'>,</span> <span class='varid'>normalizeNL</span>
-<a name="line-37"></a>    <span class='layout'>)</span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetFILE</span>	<span class='keyword'>as</span> <span class='conid'>FILE</span>
-<a name="line-40"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetHTTPNative</span>	<span class='keyword'>as</span> <span class='conid'>HTTP</span>
-<a name="line-41"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetHTTPCurl</span>	<span class='keyword'>as</span> <span class='conid'>CURL</span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
-<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
-<a name="line-45"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ParserInterface</span>
-<a name="line-48"></a>    <span class='layout'>(</span> <span class='varid'>parseXmlDocEncodingSpec</span>
-<a name="line-49"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlEntityEncodingSpec</span>
-<a name="line-50"></a>    <span class='layout'>,</span> <span class='varid'>removeEncodingSpec</span>
-<a name="line-51"></a>    <span class='layout'>)</span>
+<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>
+<a name="line-34"></a>    <span class='layout'>(</span> <span class='varid'>toLower</span>
+<a name="line-35"></a>    <span class='layout'>)</span>
+<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>
+<a name="line-37"></a>    <span class='layout'>(</span> <span class='varid'>isPrefixOf</span>
+<a name="line-38"></a>    <span class='layout'>)</span>
+<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
+<a name="line-40"></a>
+<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>FilePath</span>
+<a name="line-42"></a>    <span class='layout'>(</span> <span class='varid'>takeExtension</span> <span class='layout'>)</span>
+<a name="line-43"></a>
+<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>
+<a name="line-45"></a>    <span class='layout'>(</span> <span class='varid'>getDecodingFct</span>
+<a name="line-46"></a>    <span class='layout'>,</span> <span class='varid'>guessEncoding</span>
+<a name="line-47"></a>    <span class='layout'>,</span> <span class='varid'>normalizeNL</span>
+<a name="line-48"></a>    <span class='layout'>)</span>
+<a name="line-49"></a>
+<a name="line-50"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetFILE</span>	<span class='keyword'>as</span> <span class='conid'>FILE</span>
+<a name="line-51"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetHTTPLibCurl</span>	<span class='keyword'>as</span> <span class='conid'>LibCURL</span>
 <a name="line-52"></a>
-<a name="line-53"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>
-<a name="line-54"></a>    <span class='layout'>(</span> <span class='varid'>isPrefixOf</span>
-<a name="line-55"></a>    <span class='layout'>)</span>
-<a name="line-56"></a>
-<a name="line-57"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>
-<a name="line-58"></a>    <span class='layout'>(</span> <span class='varid'>toLower</span>
-<a name="line-59"></a>    <span class='layout'>)</span>
-<a name="line-60"></a>
-<a name="line-61"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-62"></a>
-<a name="line-63"></a><span class='comment'>-- ----------------------------------------------------------</span>
-<a name="line-64"></a>
-<a name="line-65"></a><a name="protocolHandlers"></a><span class='definition'>protocolHandlers</span>	<span class='keyglyph'>::</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='layout'>(</span><span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>
-<a name="line-66"></a><span class='definition'>protocolHandlers</span>
-<a name="line-67"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='str'>"file"</span><span class='layout'>,</span>	<span class='varid'>getFileContents</span><span class='layout'>)</span>
-<a name="line-68"></a>      <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"http"</span><span class='layout'>,</span>	<span class='varid'>getHttpContents</span><span class='layout'>)</span>
-<a name="line-69"></a>      <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"stdin"</span><span class='layout'>,</span>	<span class='varid'>getStdinContents</span><span class='layout'>)</span>
-<a name="line-70"></a>      <span class='keyglyph'>]</span>
-<a name="line-71"></a>
-<a name="line-72"></a><a name="getProtocolHandler"></a><span class='definition'>getProtocolHandler</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='layout'>(</span><span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>
-<a name="line-73"></a><span class='definition'>getProtocolHandler</span>
-<a name="line-74"></a>    <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>lookupDef</span> <span class='varid'>getUnsupported</span> <span class='varid'>s</span> <span class='varid'>protocolHandlers</span><span class='layout'>)</span>
-<a name="line-75"></a>
-<a name="line-76"></a><a name="getUnsupported"></a><span class='definition'>getUnsupported</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-77"></a><span class='definition'>getUnsupported</span>
-<a name="line-78"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
-<a name="line-79"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-80"></a>		<span class='varid'>arr</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"unsupported protocol in URI "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
-<a name="line-81"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-82"></a>		<span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>issueFatal</span><span class='layout'>)</span>
-<a name="line-83"></a>	      <span class='layout'>)</span>
-<a name="line-84"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-85"></a>      <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"accessing documents"</span>
-<a name="line-86"></a>	
-<a name="line-87"></a><a name="getStringContents"></a><span class='definition'>getStringContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-88"></a><span class='definition'>getStringContents</span>
-<a name="line-89"></a>    <span class='keyglyph'>=</span> <span class='varid'>setCont</span> <span class='varop'>$&lt;</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
-<a name="line-90"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-91"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>
-<a name="line-92"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-93"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferStatus</span> <span class='str'>"200"</span>
-<a name="line-94"></a>    <span class='keyword'>where</span>
-<a name="line-95"></a>    <span class='varid'>setCont</span> <span class='varid'>contents</span>
-<a name="line-96"></a>	<span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>contents'</span><span class='layout'>)</span>
-<a name="line-97"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-98"></a>	  <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='layout'>(</span><span class='varid'>take</span> <span class='num'>7</span> <span class='varid'>contents</span><span class='layout'>)</span>			<span class='comment'>-- the "string:" prefix is stored, this is required by setBaseURIFromDoc</span>
-<a name="line-99"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-100"></a>	  <span class='varid'>addAttr</span> <span class='varid'>a_source</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>prefix</span> <span class='num'>48</span> <span class='varop'>$</span> <span class='varid'>contents'</span><span class='layout'>)</span>	<span class='comment'>-- a quoted prefix of the content, max 48 chars is taken as source name</span>
-<a name="line-101"></a>	<span class='keyword'>where</span>
-<a name="line-102"></a>	<span class='varid'>contents'</span>  <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span> <span class='varid'>contents</span>
-<a name="line-103"></a>	<span class='varid'>prefix</span> <span class='varid'>l</span> <span class='varid'>s</span>
-<a name="line-104"></a>	    <span class='keyglyph'>|</span> <span class='varid'>length</span> <span class='varid'>s'</span> <span class='varop'>&gt;</span> <span class='varid'>l</span> <span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='layout'>(</span><span class='varid'>l</span> <span class='comment'>-</span> <span class='num'>3</span><span class='layout'>)</span> <span class='varid'>s'</span> <span class='varop'>++</span> <span class='str'>"..."</span>
-<a name="line-105"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>     <span class='keyglyph'>=</span> <span class='varid'>s'</span>
-<a name="line-106"></a>	    <span class='keyword'>where</span>
-<a name="line-107"></a>	    <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='layout'>(</span><span class='varid'>l</span> <span class='varop'>+</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varid'>s</span>
-<a name="line-108"></a>
-<a name="line-109"></a><a name="getFileContents"></a><span class='definition'>getFileContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-110"></a><span class='definition'>getFileContents</span>
-<a name="line-111"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
-<a name="line-112"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-113"></a>	       <span class='varid'>getPathFromURI</span>
-<a name="line-114"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-115"></a>	       <span class='varid'>arrIO</span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getCont</span>
-<a name="line-116"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-117"></a>	       <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>		<span class='comment'>-- io error occured</span>
-<a name="line-118"></a>		 <span class='varop'>|||</span>
-<a name="line-119"></a>		 <span class='varid'>arr</span> <span class='varid'>addTxtContent</span>		<span class='comment'>-- content read</span>
-<a name="line-120"></a>	       <span class='layout'>)</span>
-<a name="line-121"></a>	     <span class='layout'>)</span>
-<a name="line-122"></a>
-<a name="line-123"></a><a name="getStdinContents"></a><span class='definition'>getStdinContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-124"></a><span class='definition'>getStdinContents</span>
-<a name="line-125"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getStdinCont</span><span class='layout'>)</span>
-<a name="line-126"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-127"></a>	       <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>		<span class='comment'>-- io error occured</span>
-<a name="line-128"></a>		 <span class='varop'>|||</span>
-<a name="line-129"></a>		 <span class='varid'>arr</span> <span class='varid'>addTxtContent</span>		<span class='comment'>-- content read</span>
-<a name="line-130"></a>	       <span class='layout'>)</span>
-<a name="line-131"></a>	     <span class='layout'>)</span>
-<a name="line-132"></a>
-<a name="line-133"></a><a name="addError"></a><span class='definition'>addError</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-134"></a><span class='definition'>addError</span> <span class='varid'>e</span>
-<a name="line-135"></a>    <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='varid'>e</span>
-<a name="line-136"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-137"></a>      <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"accessing documents"</span>
-<a name="line-138"></a>
-<a name="line-139"></a><a name="addTxtContent"></a><span class='definition'>addTxtContent</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-140"></a><span class='definition'>addTxtContent</span> <span class='varid'>c</span>
-<a name="line-141"></a>    <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-142"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-143"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>
-<a name="line-144"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-145"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferStatus</span> <span class='str'>"200"</span>
-<a name="line-146"></a>
-<a name="line-147"></a><a name="getHttpContents"></a><span class='definition'>getHttpContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-148"></a><span class='definition'>getHttpContents</span>
-<a name="line-149"></a>    <span class='keyglyph'>=</span> <span class='varid'>getCont</span> <span class='varop'>$&lt;&lt;&lt;&lt;</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
-<a name="line-150"></a>		      <span class='varop'>&amp;&amp;&amp;</span>
-<a name="line-151"></a>		      <span class='varid'>getOpt</span> <span class='varid'>a_proxy</span>
-<a name="line-152"></a>		      <span class='varop'>&amp;&amp;&amp;</span>
-<a name="line-153"></a>		      <span class='varid'>getOpt</span> <span class='varid'>a_use_curl</span>
-<a name="line-154"></a>		      <span class='varop'>&amp;&amp;&amp;</span>
-<a name="line-155"></a>		      <span class='varid'>getOpt</span> <span class='varid'>a_options_curl</span>
-<a name="line-156"></a>		    <span class='layout'>)</span>
-<a name="line-157"></a>      <span class='keyword'>where</span>
-<a name="line-158"></a>      <span class='varid'>getOpt</span> <span class='varid'>opt</span>
-<a name="line-159"></a>	  <span class='keyglyph'>=</span> <span class='varid'>getAttrValue0</span> <span class='varid'>opt</span>
-<a name="line-160"></a>	    <span class='varop'>`orElse`</span>
-<a name="line-161"></a>	    <span class='varid'>getParamString</span> <span class='varid'>opt</span>
-<a name="line-162"></a>
-<a name="line-163"></a>      <span class='varid'>getCont</span> <span class='varid'>uri</span> <span class='varid'>proxy</span> <span class='varid'>curl</span> <span class='varid'>curlOpt</span>
-<a name="line-164"></a>	  <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>curl</span> <span class='varop'>==</span> <span class='varid'>v_1</span>
-<a name="line-165"></a>		       <span class='keyword'>then</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"get HTTP via "</span>
-<a name="line-166"></a>					   <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span> <span class='str'>"curl "</span>
-<a name="line-167"></a>						     <span class='varop'>++</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>proxy</span> <span class='keyword'>then</span> <span class='str'>""</span> <span class='keyword'>else</span> <span class='str'>"--proxy "</span> <span class='varop'>++</span> <span class='varid'>proxy</span><span class='layout'>)</span>
-<a name="line-168"></a>						     <span class='varop'>++</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>curlOpt</span> <span class='keyword'>then</span> <span class='str'>""</span> <span class='keyword'>else</span> <span class='str'>" "</span> <span class='varop'>++</span> <span class='varid'>curlOpt</span><span class='layout'>)</span>
-<a name="line-169"></a>						     <span class='varop'>++</span> <span class='str'>" "</span> <span class='varop'>++</span> <span class='varid'>uri</span>
-<a name="line-170"></a>						   <span class='layout'>)</span>
-<a name="line-171"></a>					 <span class='layout'>)</span>
-<a name="line-172"></a>			      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-173"></a>			      <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='conid'>CURL</span><span class='varop'>.</span><span class='varid'>getCont</span> <span class='varid'>curlOpt</span> <span class='varid'>uri</span> <span class='varid'>proxy</span> <span class='layout'>)</span>
-<a name="line-174"></a>			    <span class='layout'>)</span>
-<a name="line-175"></a>		       <span class='keyword'>else</span> <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='conid'>HTTP</span><span class='varop'>.</span><span class='varid'>getCont</span>         <span class='varid'>uri</span> <span class='varid'>proxy</span> <span class='layout'>)</span>
-<a name="line-176"></a>		     <span class='layout'>)</span>
-<a name="line-177"></a>		     <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-178"></a>		     <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>
-<a name="line-179"></a>		       <span class='varop'>|||</span>
-<a name="line-180"></a>		       <span class='varid'>arr</span> <span class='varid'>addContent</span>
-<a name="line-181"></a>		     <span class='layout'>)</span>
-<a name="line-182"></a>		   <span class='layout'>)</span>
-<a name="line-183"></a>
-<a name="line-184"></a>      <span class='varid'>addContent</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-185"></a>      <span class='varid'>addContent</span> <span class='layout'>(</span><span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-186"></a>	  <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-187"></a>	    <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-188"></a>	    <span class='varid'>seqA</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addAttr</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-189"></a>
-<a name="line-190"></a><a name="getURIContents"></a><span class='definition'>getURIContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-191"></a><span class='definition'>getURIContents</span>
-<a name="line-192"></a>    <span class='keyglyph'>=</span> <span class='varid'>getContentsFromString</span>
-<a name="line-193"></a>      <span class='varop'>`orElse`</span>
-<a name="line-194"></a>      <span class='varid'>getContentsFromDoc</span>
-<a name="line-195"></a>    <span class='keyword'>where</span>
-<a name="line-196"></a>    <span class='varid'>getContentsFromString</span>
-<a name="line-197"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
-<a name="line-198"></a>	    <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-199"></a>	    <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span>
-<a name="line-200"></a>	  <span class='layout'>)</span>
-<a name="line-201"></a>	  <span class='varop'>`guards`</span>
-<a name="line-202"></a>	  <span class='varid'>getStringContents</span>
-<a name="line-203"></a>	  
-<a name="line-204"></a>    <span class='varid'>getContentsFromDoc</span>
-<a name="line-205"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>addTransferURI</span> <span class='varop'>$&lt;</span> <span class='varid'>getBaseURI</span>
-<a name="line-206"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-207"></a>	      <span class='varid'>getCont</span>
-<a name="line-208"></a>	    <span class='layout'>)</span>
-<a name="line-209"></a>	    <span class='varop'>`when`</span>
-<a name="line-210"></a>	    <span class='layout'>(</span> <span class='varid'>setAbsURI</span> <span class='varop'>$&lt;</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
-<a name="line-211"></a>			     <span class='varop'>&gt;&gt;^</span>
-<a name="line-212"></a>			     <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>src</span><span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>src</span> <span class='keyword'>then</span> <span class='str'>"stdin:"</span> <span class='keyword'>else</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span>	<span class='comment'>-- empty document name -&gt; read from stdin</span>
-<a name="line-213"></a>			   <span class='layout'>)</span>
-<a name="line-214"></a>	    <span class='layout'>)</span>
-<a name="line-215"></a>	  <span class='layout'>)</span>
-<a name="line-216"></a>          <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-217"></a>          <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"getURIContents"</span>
-<a name="line-218"></a>
-<a name="line-219"></a>    <span class='varid'>setAbsURI</span> <span class='varid'>src</span>
-<a name="line-220"></a>	<span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='layout'>(</span> <span class='varid'>constA</span> <span class='varid'>src</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>changeBaseURI</span> <span class='layout'>)</span>
-<a name="line-221"></a>	  <span class='varid'>this</span>
-<a name="line-222"></a>	  <span class='layout'>(</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"illegal URI : "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span>
+<a name="line-53"></a><span class='comment'>{- not longer needed, libcurl is used
+<a name="line-54"></a>import qualified Text.XML.HXT.IO.GetHTTPNative	as HTTP
+<a name="line-55"></a>import qualified Text.XML.HXT.IO.GetHTTPCurl	as CURL
+<a name="line-56"></a>-}</span>
+<a name="line-57"></a>
+<a name="line-58"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
+<a name="line-59"></a>
+<a name="line-60"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
+<a name="line-61"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>
+<a name="line-62"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ParserInterface</span>
+<a name="line-63"></a>    <span class='layout'>(</span> <span class='varid'>parseXmlDocEncodingSpec</span>
+<a name="line-64"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlEntityEncodingSpec</span>
+<a name="line-65"></a>    <span class='layout'>,</span> <span class='varid'>removeEncodingSpec</span>
+<a name="line-66"></a>    <span class='layout'>)</span>
+<a name="line-67"></a>
+<a name="line-68"></a><span class='comment'>-- ----------------------------------------------------------</span>
+<a name="line-69"></a>
+<a name="line-70"></a><a name="protocolHandlers"></a><span class='definition'>protocolHandlers</span>	<span class='keyglyph'>::</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='layout'>(</span><span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>
+<a name="line-71"></a><span class='definition'>protocolHandlers</span>
+<a name="line-72"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='str'>"file"</span><span class='layout'>,</span>	<span class='varid'>getFileContents</span><span class='layout'>)</span>
+<a name="line-73"></a>      <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"http"</span><span class='layout'>,</span>	<span class='varid'>getHttpContents</span><span class='layout'>)</span>
+<a name="line-74"></a>      <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"stdin"</span><span class='layout'>,</span>	<span class='varid'>getStdinContents</span><span class='layout'>)</span>
+<a name="line-75"></a>      <span class='keyglyph'>]</span>
+<a name="line-76"></a>
+<a name="line-77"></a><a name="getProtocolHandler"></a><span class='definition'>getProtocolHandler</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='layout'>(</span><span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>
+<a name="line-78"></a><span class='definition'>getProtocolHandler</span>
+<a name="line-79"></a>    <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>lookupDef</span> <span class='varid'>getUnsupported</span> <span class='varid'>s</span> <span class='varid'>protocolHandlers</span><span class='layout'>)</span>
+<a name="line-80"></a>
+<a name="line-81"></a><a name="getUnsupported"></a><span class='definition'>getUnsupported</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-82"></a><span class='definition'>getUnsupported</span>
+<a name="line-83"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
+<a name="line-84"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-85"></a>		<span class='varid'>arr</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"unsupported protocol in URI "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
+<a name="line-86"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-87"></a>		<span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>issueFatal</span><span class='layout'>)</span>
+<a name="line-88"></a>	      <span class='layout'>)</span>
+<a name="line-89"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-90"></a>      <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"accessing documents"</span>
+<a name="line-91"></a>	
+<a name="line-92"></a><a name="getStringContents"></a><span class='definition'>getStringContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-93"></a><span class='definition'>getStringContents</span>
+<a name="line-94"></a>    <span class='keyglyph'>=</span> <span class='varid'>setCont</span> <span class='varop'>$&lt;</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
+<a name="line-95"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-96"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>
+<a name="line-97"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-98"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferStatus</span> <span class='str'>"200"</span>
+<a name="line-99"></a>    <span class='keyword'>where</span>
+<a name="line-100"></a>    <span class='varid'>setCont</span> <span class='varid'>contents</span>
+<a name="line-101"></a>	<span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>contents'</span><span class='layout'>)</span>
+<a name="line-102"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-103"></a>	  <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='layout'>(</span><span class='varid'>take</span> <span class='num'>7</span> <span class='varid'>contents</span><span class='layout'>)</span>			<span class='comment'>-- the "string:" prefix is stored, this is required by setBaseURIFromDoc</span>
+<a name="line-104"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-105"></a>	  <span class='varid'>addAttr</span> <span class='varid'>a_source</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>prefix</span> <span class='num'>48</span> <span class='varop'>$</span> <span class='varid'>contents'</span><span class='layout'>)</span>	<span class='comment'>-- a quoted prefix of the content, max 48 chars is taken as source name</span>
+<a name="line-106"></a>	<span class='keyword'>where</span>
+<a name="line-107"></a>	<span class='varid'>contents'</span>  <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span> <span class='varid'>contents</span>
+<a name="line-108"></a>	<span class='varid'>prefix</span> <span class='varid'>l</span> <span class='varid'>s</span>
+<a name="line-109"></a>	    <span class='keyglyph'>|</span> <span class='varid'>length</span> <span class='varid'>s'</span> <span class='varop'>&gt;</span> <span class='varid'>l</span> <span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='layout'>(</span><span class='varid'>l</span> <span class='comment'>-</span> <span class='num'>3</span><span class='layout'>)</span> <span class='varid'>s'</span> <span class='varop'>++</span> <span class='str'>"..."</span>
+<a name="line-110"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>     <span class='keyglyph'>=</span> <span class='varid'>s'</span>
+<a name="line-111"></a>	    <span class='keyword'>where</span>
+<a name="line-112"></a>	    <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='layout'>(</span><span class='varid'>l</span> <span class='varop'>+</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varid'>s</span>
+<a name="line-113"></a>
+<a name="line-114"></a><a name="getFileContents"></a><span class='definition'>getFileContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-115"></a><span class='definition'>getFileContents</span>
+<a name="line-116"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
+<a name="line-117"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-118"></a>	       <span class='varid'>getPathFromURI</span>
+<a name="line-119"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-120"></a>	       <span class='varid'>arrIO</span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getCont</span>
+<a name="line-121"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-122"></a>	       <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>		<span class='comment'>-- io error occured</span>
+<a name="line-123"></a>		 <span class='varop'>|||</span>
+<a name="line-124"></a>		 <span class='varid'>arr</span> <span class='varid'>addTxtContent</span>	<span class='comment'>-- content read</span>
+<a name="line-125"></a>	       <span class='layout'>)</span>
+<a name="line-126"></a>	     <span class='layout'>)</span>
+<a name="line-127"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-128"></a>      <span class='varid'>addMimeType</span>
+<a name="line-129"></a>
+<a name="line-130"></a><a name="getStdinContents"></a><span class='definition'>getStdinContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-131"></a><span class='definition'>getStdinContents</span>
+<a name="line-132"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getStdinCont</span><span class='layout'>)</span>
+<a name="line-133"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-134"></a>	       <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>		<span class='comment'>-- io error occured</span>
+<a name="line-135"></a>		 <span class='varop'>|||</span>
+<a name="line-136"></a>		 <span class='varid'>arr</span> <span class='varid'>addTxtContent</span>	<span class='comment'>-- content read</span>
+<a name="line-137"></a>	       <span class='layout'>)</span>
+<a name="line-138"></a>	     <span class='layout'>)</span>
+<a name="line-139"></a>
+<a name="line-140"></a><a name="addError"></a><span class='definition'>addError</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-141"></a><span class='definition'>addError</span> <span class='varid'>e</span>
+<a name="line-142"></a>    <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='varid'>e</span>
+<a name="line-143"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-144"></a>      <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"accessing documents"</span>
+<a name="line-145"></a>
+<a name="line-146"></a><a name="addMimeType"></a><span class='definition'>addMimeType</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-147"></a><span class='definition'>addMimeType</span>
+<a name="line-148"></a>    <span class='keyglyph'>=</span> <span class='varid'>addMime</span> <span class='varop'>$&lt;</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
+<a name="line-149"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-150"></a>		   <span class='layout'>(</span> <span class='varid'>uriToMime</span> <span class='varop'>$&lt;</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_mimeTypes</span> <span class='layout'>)</span>
+<a name="line-151"></a>		 <span class='layout'>)</span>
+<a name="line-152"></a>    <span class='keyword'>where</span>
+<a name="line-153"></a>    <span class='varid'>addMime</span> <span class='varid'>mt</span>
+<a name="line-154"></a>	<span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>transferMimeType</span> <span class='varid'>mt</span>
+<a name="line-155"></a>    <span class='varid'>uriToMime</span> <span class='varid'>mtt</span>
+<a name="line-156"></a>	<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>uri</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>extensionToMimeType</span> <span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>takeExtension</span> <span class='varop'>$</span> <span class='varid'>uri</span><span class='layout'>)</span> <span class='varid'>mtt</span> <span class='layout'>)</span>
+<a name="line-157"></a>
+<a name="line-158"></a><a name="addTxtContent"></a><span class='definition'>addTxtContent</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-159"></a><span class='definition'>addTxtContent</span> <span class='varid'>c</span>
+<a name="line-160"></a>    <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>
+<a name="line-161"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-162"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>
+<a name="line-163"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-164"></a>      <span class='varid'>addAttr</span> <span class='varid'>transferStatus</span> <span class='str'>"200"</span>
+<a name="line-165"></a>
+<a name="line-166"></a><a name="getHttpContents"></a><span class='definition'>getHttpContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-167"></a><span class='definition'>getHttpContents</span>
+<a name="line-168"></a>    <span class='keyglyph'>=</span> <span class='varid'>getCont</span> <span class='varop'>$&lt;&lt;</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
+<a name="line-169"></a>		    <span class='varop'>&amp;&amp;&amp;</span>
+<a name="line-170"></a>		    <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getAttrlAsAssoc</span>	<span class='comment'>-- get all attributes of root node</span>
+<a name="line-171"></a>			<span class='varop'>&amp;&amp;&amp;</span>
+<a name="line-172"></a>			<span class='varid'>getAllParamsString</span>	<span class='comment'>-- get all system params</span>
+<a name="line-173"></a>		      <span class='layout'>)</span>
+<a name="line-174"></a>		      <span class='varop'>&gt;&gt;^</span> <span class='varid'>uncurry</span> <span class='varid'>addEntries</span>	<span class='comment'>-- merge them, attributes overwrite system params</span>
+<a name="line-175"></a>		    <span class='layout'>)</span>
+<a name="line-176"></a>		  <span class='layout'>)</span>
+<a name="line-177"></a>      <span class='keyword'>where</span>
+<a name="line-178"></a>      <span class='varid'>getAttrlAsAssoc</span>				<span class='comment'>-- get the attributes as assoc list</span>
+<a name="line-179"></a>	  <span class='keyglyph'>=</span> <span class='varid'>listA</span> <span class='layout'>(</span> <span class='varid'>getAttrl</span>
+<a name="line-180"></a>		    <span class='varop'>&gt;&gt;&gt;</span> <span class='layout'>(</span> <span class='varid'>getName</span>
+<a name="line-181"></a>			  <span class='varop'>&amp;&amp;&amp;</span>
+<a name="line-182"></a>			  <span class='varid'>xshow</span> <span class='varid'>getChildren</span>
+<a name="line-183"></a>			<span class='layout'>)</span>
+<a name="line-184"></a>		  <span class='layout'>)</span>
+<a name="line-185"></a>
+<a name="line-186"></a>      <span class='varid'>getCont</span> <span class='varid'>uri</span> <span class='varid'>options</span>
+<a name="line-187"></a>	  <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"get HTTP via libcurl, uri="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span> <span class='varop'>++</span> <span class='str'>" options="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>options</span> <span class='layout'>)</span>
+<a name="line-188"></a>		       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-189"></a>		       <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='conid'>LibCURL</span><span class='varop'>.</span><span class='varid'>getCont</span> <span class='varid'>options</span> <span class='varid'>uri</span> <span class='layout'>)</span>
+<a name="line-190"></a>		     <span class='layout'>)</span>
+<a name="line-191"></a>		     <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-192"></a>		     <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>
+<a name="line-193"></a>		       <span class='varop'>|||</span>
+<a name="line-194"></a>		       <span class='varid'>arr</span> <span class='varid'>addContent</span>
+<a name="line-195"></a>		     <span class='layout'>)</span>
+<a name="line-196"></a>		   <span class='layout'>)</span>
+<a name="line-197"></a>		    
+<a name="line-198"></a><span class='comment'>{- old stuff
+<a name="line-199"></a>	  = applyA ( ( if curl == v_1
+<a name="line-200"></a>		       then ( traceMsg 2 ( "get HTTP via "
+<a name="line-201"></a>					   ++ show ( "curl "
+<a name="line-202"></a>						     ++ (if null proxy then "" else "--proxy " ++ proxy)
+<a name="line-203"></a>						     ++ (if null curlOpt then "" else " " ++ curlOpt)
+<a name="line-204"></a>						     ++ " " ++ uri
+<a name="line-205"></a>						   )
+<a name="line-206"></a>					 )
+<a name="line-207"></a>			      &gt;&gt;&gt;
+<a name="line-208"></a>			      arrIO0 ( CURL.getCont curlOpt uri proxy )
+<a name="line-209"></a>			    )
+<a name="line-210"></a>		       else arrIO0 ( HTTP.getCont         uri proxy )
+<a name="line-211"></a>		     )
+<a name="line-212"></a>		     &gt;&gt;&gt;
+<a name="line-213"></a>		     ( arr addError
+<a name="line-214"></a>		       |||
+<a name="line-215"></a>		       arr addContent
+<a name="line-216"></a>		     )
+<a name="line-217"></a>		   )
+<a name="line-218"></a>	    where
+<a name="line-219"></a>	    proxy   = lookup1 a_proxy        options
+<a name="line-220"></a>	    curl    = lookup1 a_use_curl     options
+<a name="line-221"></a>	    curlOpt = lookup1 a_options_curl options
+<a name="line-222"></a>-}</span>
 <a name="line-223"></a>
-<a name="line-224"></a>    <span class='varid'>addTransferURI</span> <span class='varid'>uri</span>
-<a name="line-225"></a>	<span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='varid'>uri</span>
-<a name="line-226"></a>
-<a name="line-227"></a>    <span class='varid'>getCont</span>
-<a name="line-228"></a>	<span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span>				<span class='comment'>-- compute the handler and call it</span>
-<a name="line-229"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-230"></a>		   <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getURIContents: reading"</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
-<a name="line-231"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-232"></a>		   <span class='varid'>getSchemeFromURI</span>
-<a name="line-233"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-234"></a>		   <span class='varid'>getProtocolHandler</span>
-<a name="line-235"></a>		 <span class='layout'>)</span>
-<a name="line-236"></a>	  <span class='varop'>`orElse`</span>
-<a name="line-237"></a>	  <span class='varid'>this</span>						<span class='comment'>-- don't change tree, when no handler can be found</span>
-<a name="line-238"></a>	  
-<a name="line-239"></a><a name="setBaseURIFromDoc"></a><span class='definition'>setBaseURIFromDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-240"></a><span class='definition'>setBaseURIFromDoc</span>
-<a name="line-241"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
-<a name="line-242"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-243"></a>		<span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span>		<span class='comment'>-- do not change base URI when reading from a string</span>
-<a name="line-244"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-245"></a>		<span class='varid'>setBaseURI</span>
-<a name="line-246"></a>	      <span class='layout'>)</span>
-<a name="line-247"></a>
-<a name="line-248"></a><span class='comment'>{- |
-<a name="line-249"></a>   Read the content of a document.
-<a name="line-250"></a>
-<a name="line-251"></a>   This routine is usually called from 'Text.XML.HXT.Arrow.ProcessDocument.getDocumentContents'.
-<a name="line-252"></a>
-<a name="line-253"></a>   The input must be a root node (constructed with 'Text.XML.HXT.Arrow.XmlArrow.root'), usually without children.
-<a name="line-254"></a>   The attribute list contains all input parameters, e.g. URI or source file name, encoding preferences, ...
-<a name="line-255"></a>   If the source name is empty, the input is read from standard input.
-<a name="line-256"></a>
-<a name="line-257"></a>   The source is transformed into an absolute URI. If the source is a relative URI, or a file name,
-<a name="line-258"></a>   it is expanded into an absolut URI with respect to the current base URI.
-<a name="line-259"></a>   The default base URI is of protocol \"file\" and points to the current working directory.
-<a name="line-260"></a>
-<a name="line-261"></a>   The currently supported protocols are \"http\", \"file\", \"stdin\" and \"string\".
-<a name="line-262"></a>
-<a name="line-263"></a>   The latter two are internal protocols. An uri of the form \"stdin:\" stands for the content of
-<a name="line-264"></a>   the standard input stream.
-<a name="line-265"></a>
-<a name="line-266"></a>   \"string:some text\" means, that \"some text\" is taken as input.
-<a name="line-267"></a>   This internal protocol is used for reading from normal 'String' values.
-<a name="line-268"></a>
-<a name="line-269"></a>-}</span>
-<a name="line-270"></a>
-<a name="line-271"></a><a name="getXmlContents"></a><span class='definition'>getXmlContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-272"></a><span class='definition'>getXmlContents</span>
-<a name="line-273"></a>    <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlDocEncodingSpec</span>
-<a name="line-274"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-275"></a>      <span class='varid'>setBaseURIFromDoc</span>
-<a name="line-276"></a>
-<a name="line-277"></a><a name="getXmlEntityContents"></a><span class='definition'>getXmlEntityContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-278"></a><span class='definition'>getXmlEntityContents</span>
-<a name="line-279"></a>    <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlEntityEncodingSpec</span>
-<a name="line-280"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-281"></a>      <span class='varid'>processChildren</span> <span class='varid'>removeEncodingSpec</span>
-<a name="line-282"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-283"></a>      <span class='varid'>setBaseURIFromDoc</span>
-<a name="line-284"></a>
-<a name="line-285"></a><a name="getXmlContents'"></a><span class='definition'>getXmlContents'</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-286"></a><span class='definition'>getXmlContents'</span> <span class='varid'>parseEncodingSpec</span>
-<a name="line-287"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getURIContents</span>
-<a name="line-288"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-289"></a>	<span class='varid'>parseEncodingSpec</span>
-<a name="line-290"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-291"></a>	<span class='varid'>filterErrorMsg</span>
-<a name="line-292"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-293"></a>	<span class='varid'>decodeDocument</span>
-<a name="line-294"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-295"></a>	<span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
-<a name="line-296"></a>		  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-297"></a>		  <span class='varid'>traceString</span> <span class='num'>1</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getXmlContents: content read and decoded for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
-<a name="line-298"></a>		<span class='layout'>)</span>
-<a name="line-299"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-300"></a>	<span class='varid'>traceTree</span>
-<a name="line-301"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-302"></a>	<span class='varid'>traceSource</span>
-<a name="line-303"></a>      <span class='layout'>)</span>
-<a name="line-304"></a>      <span class='varop'>`when`</span>
-<a name="line-305"></a>      <span class='varid'>isRoot</span>
-<a name="line-306"></a>
-<a name="line-307"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-224"></a>      <span class='varid'>addContent</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-225"></a>      <span class='varid'>addContent</span> <span class='layout'>(</span><span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
+<a name="line-226"></a>	  <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>
+<a name="line-227"></a>	    <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-228"></a>	    <span class='varid'>seqA</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addAttr</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span>
+<a name="line-229"></a>
+<a name="line-230"></a><a name="getURIContents"></a><span class='definition'>getURIContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-231"></a><span class='definition'>getURIContents</span>
+<a name="line-232"></a>    <span class='keyglyph'>=</span> <span class='varid'>getContentsFromString</span>
+<a name="line-233"></a>      <span class='varop'>`orElse`</span>
+<a name="line-234"></a>      <span class='varid'>getContentsFromDoc</span>
+<a name="line-235"></a>    <span class='keyword'>where</span>
+<a name="line-236"></a>    <span class='varid'>getContentsFromString</span>
+<a name="line-237"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
+<a name="line-238"></a>	    <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-239"></a>	    <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span>
+<a name="line-240"></a>	  <span class='layout'>)</span>
+<a name="line-241"></a>	  <span class='varop'>`guards`</span>
+<a name="line-242"></a>	  <span class='varid'>getStringContents</span>
+<a name="line-243"></a>	  
+<a name="line-244"></a>    <span class='varid'>getContentsFromDoc</span>
+<a name="line-245"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>addTransferURI</span> <span class='varop'>$&lt;</span> <span class='varid'>getBaseURI</span>
+<a name="line-246"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-247"></a>	      <span class='varid'>getCont</span>
+<a name="line-248"></a>	    <span class='layout'>)</span>
+<a name="line-249"></a>	    <span class='varop'>`when`</span>
+<a name="line-250"></a>	    <span class='layout'>(</span> <span class='varid'>setAbsURI</span> <span class='varop'>$&lt;</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>
+<a name="line-251"></a>			     <span class='varop'>&gt;&gt;^</span>
+<a name="line-252"></a>			     <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>src</span><span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>src</span> <span class='keyword'>then</span> <span class='str'>"stdin:"</span> <span class='keyword'>else</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span>	<span class='comment'>-- empty document name -&gt; read from stdin</span>
+<a name="line-253"></a>			   <span class='layout'>)</span>
+<a name="line-254"></a>	    <span class='layout'>)</span>
+<a name="line-255"></a>	  <span class='layout'>)</span>
+<a name="line-256"></a>          <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-257"></a>          <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"getURIContents"</span>
+<a name="line-258"></a>
+<a name="line-259"></a>    <span class='varid'>setAbsURI</span> <span class='varid'>src</span>
+<a name="line-260"></a>	<span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='layout'>(</span> <span class='varid'>constA</span> <span class='varid'>src</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>changeBaseURI</span> <span class='layout'>)</span>
+<a name="line-261"></a>	  <span class='varid'>this</span>
+<a name="line-262"></a>	  <span class='layout'>(</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"illegal URI : "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span>
+<a name="line-263"></a>
+<a name="line-264"></a>    <span class='varid'>addTransferURI</span> <span class='varid'>uri</span>
+<a name="line-265"></a>	<span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='varid'>uri</span>
+<a name="line-266"></a>
+<a name="line-267"></a>    <span class='varid'>getCont</span>
+<a name="line-268"></a>	<span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span>				<span class='comment'>-- compute the handler and call it</span>
+<a name="line-269"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-270"></a>		   <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getURIContents: reading "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
+<a name="line-271"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-272"></a>		   <span class='varid'>getSchemeFromURI</span>
+<a name="line-273"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-274"></a>		   <span class='varid'>getProtocolHandler</span>
+<a name="line-275"></a>		 <span class='layout'>)</span>
+<a name="line-276"></a>	  <span class='varop'>`orElse`</span>
+<a name="line-277"></a>	  <span class='varid'>this</span>						<span class='comment'>-- don't change tree, when no handler can be found</span>
+<a name="line-278"></a>	  
+<a name="line-279"></a><a name="setBaseURIFromDoc"></a><span class='definition'>setBaseURIFromDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-280"></a><span class='definition'>setBaseURIFromDoc</span>
+<a name="line-281"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
+<a name="line-282"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-283"></a>		<span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span>		<span class='comment'>-- do not change base URI when reading from a string</span>
+<a name="line-284"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-285"></a>		<span class='varid'>setBaseURI</span>
+<a name="line-286"></a>	      <span class='layout'>)</span>
+<a name="line-287"></a>
+<a name="line-288"></a><span class='comment'>{- |
+<a name="line-289"></a>   Read the content of a document.
+<a name="line-290"></a>
+<a name="line-291"></a>   This routine is usually called from 'Text.XML.HXT.Arrow.ProcessDocument.getDocumentContents'.
+<a name="line-292"></a>
+<a name="line-293"></a>   The input must be a root node (constructed with 'Text.XML.HXT.Arrow.XmlArrow.root'), usually without children.
+<a name="line-294"></a>   The attribute list contains all input parameters, e.g. URI or source file name, encoding preferences, ...
+<a name="line-295"></a>   If the source name is empty, the input is read from standard input.
+<a name="line-296"></a>
+<a name="line-297"></a>   The source is transformed into an absolute URI. If the source is a relative URI, or a file name,
+<a name="line-298"></a>   it is expanded into an absolut URI with respect to the current base URI.
+<a name="line-299"></a>   The default base URI is of protocol \"file\" and points to the current working directory.
+<a name="line-300"></a>
+<a name="line-301"></a>   The currently supported protocols are \"http\", \"file\", \"stdin\" and \"string\".
+<a name="line-302"></a>
+<a name="line-303"></a>   The latter two are internal protocols. An uri of the form \"stdin:\" stands for the content of
+<a name="line-304"></a>   the standard input stream.
+<a name="line-305"></a>
+<a name="line-306"></a>   \"string:some text\" means, that \"some text\" is taken as input.
+<a name="line-307"></a>   This internal protocol is used for reading from normal 'String' values.
 <a name="line-308"></a>
-<a name="line-309"></a><a name="getEncoding"></a><span class='definition'>getEncoding</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>
-<a name="line-310"></a><span class='definition'>getEncoding</span>
-<a name="line-311"></a>    <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>			<span class='comment'>-- 1. guess: guess encoding by looking at the first few bytes</span>
-<a name="line-312"></a>	     <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-313"></a>	     <span class='varid'>arr</span> <span class='varid'>guessEncoding</span>
-<a name="line-314"></a>	   <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferEncoding</span>	<span class='comment'>-- 2. guess: take the transfer encoding</span>
-<a name="line-315"></a>	   <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_encoding</span>		<span class='comment'>-- 4. guess: take encoding parameter in root node</span>
-<a name="line-316"></a>	   <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_encoding</span>		<span class='comment'>-- 5. guess: take encoding parameter in global state</span>
-<a name="line-317"></a>	   <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>utf8</span>			<span class='comment'>-- default : utf8</span>
-<a name="line-318"></a>	   <span class='keyglyph'>]</span>
-<a name="line-319"></a>      <span class='varop'>&gt;.</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='comment'>-- make the filter deterministic: take 1. entry from list of guesses</span>
-<a name="line-320"></a>
-<a name="line-321"></a>
-<a name="line-322"></a><a name="decodeDocument"></a><span class='definition'>decodeDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-323"></a><span class='definition'>decodeDocument</span>
-<a name="line-324"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>decodeArr</span> <span class='varop'>$&lt;</span> <span class='varid'>getEncoding</span> <span class='layout'>)</span>
-<a name="line-325"></a>      <span class='varop'>`when`</span>
-<a name="line-326"></a>      <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>isXmlOrHtmlDoc</span> <span class='layout'>)</span>
-<a name="line-327"></a>    <span class='keyword'>where</span>
-<a name="line-328"></a>    <span class='varid'>isXmlOrHtmlDoc</span>
-<a name="line-329"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>&gt;&gt;^</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='layout'>)</span>
-<a name="line-330"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-331"></a>	  <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>null</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>t</span><span class='layout'>)</span>
-<a name="line-332"></a>
-<a name="line-333"></a>    <span class='varid'>decodeArr</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-334"></a>    <span class='varid'>decodeArr</span> <span class='varid'>enc</span>
-<a name="line-335"></a>	<span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>getDecodingFct</span> <span class='varop'>$</span> <span class='varid'>enc</span>
-<a name="line-336"></a>	<span class='keyword'>where</span>
-<a name="line-337"></a>	<span class='varid'>found</span> <span class='varid'>df</span>
-<a name="line-338"></a>	    <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"decodeDocument: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>
-<a name="line-339"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-340"></a>	      <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>decodeText</span> <span class='varid'>df</span><span class='layout'>)</span>
-<a name="line-341"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-342"></a>	      <span class='varid'>addAttr</span> <span class='varid'>transferEncoding</span> <span class='varid'>enc</span>
-<a name="line-343"></a>
-<a name="line-344"></a>	<span class='varid'>notFound</span>
-<a name="line-345"></a>	    <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>
-<a name="line-346"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-347"></a>	      <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"decoding document"</span>
-<a name="line-348"></a>
-<a name="line-349"></a>	<span class='varid'>decodeText</span> <span class='varid'>df</span>
-<a name="line-350"></a>	    <span class='keyglyph'>=</span> <span class='varid'>getText</span>
-<a name="line-351"></a>	      <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr</span> <span class='varid'>df</span>					<span class='comment'>-- result is (string, [errMsg])</span>
-<a name="line-352"></a>	      <span class='varop'>&gt;&gt;&gt;</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>normalizeNL</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varop'>^&gt;&gt;</span> <span class='varid'>mkText</span> <span class='layout'>)</span>		<span class='comment'>-- take string, normalize newline and build text node</span>
-<a name="line-353"></a>		    <span class='varop'>&lt;+&gt;</span>
-<a name="line-354"></a>		    <span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>snd</span>					<span class='comment'>-- take the error messages</span>
-<a name="line-355"></a>		      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-356"></a>		      <span class='varid'>arr</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>enc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" encoding error"</span> <span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='comment'>-- prefix with enc error</span>
-<a name="line-357"></a>		      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-358"></a>		      <span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>issueErr</span><span class='layout'>)</span>			<span class='comment'>-- build issueErr arrow and apply</span>
-<a name="line-359"></a>		      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-360"></a>		      <span class='varid'>none</span>					<span class='comment'>-- neccessary for type match with &lt;+&gt;</span>
-<a name="line-361"></a>		    <span class='layout'>)</span>
-<a name="line-362"></a>		  <span class='layout'>)</span>
-<a name="line-363"></a>      
-<a name="line-364"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-309"></a>-}</span>
+<a name="line-310"></a>
+<a name="line-311"></a><a name="getXmlContents"></a><span class='definition'>getXmlContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-312"></a><span class='definition'>getXmlContents</span>
+<a name="line-313"></a>    <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlDocEncodingSpec</span>
+<a name="line-314"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-315"></a>      <span class='varid'>setBaseURIFromDoc</span>
+<a name="line-316"></a>
+<a name="line-317"></a><a name="getXmlEntityContents"></a><span class='definition'>getXmlEntityContents</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-318"></a><span class='definition'>getXmlEntityContents</span>
+<a name="line-319"></a>    <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlEntityEncodingSpec</span>
+<a name="line-320"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-321"></a>      <span class='varid'>processChildren</span> <span class='varid'>removeEncodingSpec</span>
+<a name="line-322"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-323"></a>      <span class='varid'>setBaseURIFromDoc</span>
+<a name="line-324"></a>
+<a name="line-325"></a><a name="getXmlContents'"></a><span class='definition'>getXmlContents'</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-326"></a><span class='definition'>getXmlContents'</span> <span class='varid'>parseEncodingSpec</span>
+<a name="line-327"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getURIContents</span>
+<a name="line-328"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-329"></a>	<span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>parseEncodingSpec</span>
+<a name="line-330"></a>	    <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-331"></a>	    <span class='varid'>filterErrorMsg</span>
+<a name="line-332"></a>	    <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-333"></a>	    <span class='varid'>decodeDocument</span>
+<a name="line-334"></a>	  <span class='layout'>)</span>
+<a name="line-335"></a>	  <span class='varop'>`when`</span>
+<a name="line-336"></a>	  <span class='varid'>isXmlHtml</span>
+<a name="line-337"></a>	<span class='layout'>)</span>
+<a name="line-338"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-339"></a>	<span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>
+<a name="line-340"></a>		  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-341"></a>		  <span class='varid'>traceString</span> <span class='num'>1</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getXmlContents: content read and decoded for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
+<a name="line-342"></a>		<span class='layout'>)</span>
+<a name="line-343"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-344"></a>	<span class='varid'>traceTree</span>
+<a name="line-345"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-346"></a>	<span class='varid'>traceSource</span>
+<a name="line-347"></a>      <span class='layout'>)</span>
+<a name="line-348"></a>      <span class='varop'>`when`</span>
+<a name="line-349"></a>      <span class='varid'>isRoot</span>
+<a name="line-350"></a>    <span class='keyword'>where</span>
+<a name="line-351"></a>    <span class='varid'>isXmlHtml</span>
+<a name="line-352"></a>	<span class='keyglyph'>=</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span>
+<a name="line-353"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-354"></a>	  <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>mt</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>mt</span> <span class='varop'>||</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>mt</span><span class='layout'>)</span>
+<a name="line-355"></a>
+<a name="line-356"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-357"></a>
+<a name="line-358"></a><a name="getEncoding"></a><span class='definition'>getEncoding</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>
+<a name="line-359"></a><span class='definition'>getEncoding</span>
+<a name="line-360"></a>    <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>			<span class='comment'>-- 1. guess: guess encoding by looking at the first few bytes</span>
+<a name="line-361"></a>	     <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-362"></a>	     <span class='varid'>arr</span> <span class='varid'>guessEncoding</span>
+<a name="line-363"></a>	   <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferEncoding</span>	<span class='comment'>-- 2. guess: take the transfer encoding</span>
+<a name="line-364"></a>	   <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_encoding</span>		<span class='comment'>-- 4. guess: take encoding parameter in root node</span>
+<a name="line-365"></a>	   <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_encoding</span>		<span class='comment'>-- 5. guess: take encoding parameter in global state</span>
+<a name="line-366"></a>	   <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>utf8</span>			<span class='comment'>-- default : utf8</span>
+<a name="line-367"></a>	   <span class='keyglyph'>]</span>
+<a name="line-368"></a>      <span class='varop'>&gt;.</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='comment'>-- make the filter deterministic: take 1. entry from list of guesses</span>
+<a name="line-369"></a>
+<a name="line-370"></a>
+<a name="line-371"></a><a name="decodeDocument"></a><span class='definition'>decodeDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-372"></a><span class='definition'>decodeDocument</span>
+<a name="line-373"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>decodeArr</span> <span class='varop'>$&lt;</span> <span class='varid'>getEncoding</span> <span class='layout'>)</span>
+<a name="line-374"></a>      <span class='varop'>`when`</span>
+<a name="line-375"></a>      <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>isXmlOrHtmlDoc</span> <span class='layout'>)</span>
+<a name="line-376"></a>    <span class='keyword'>where</span>
+<a name="line-377"></a>    <span class='varid'>isXmlOrHtmlDoc</span>
+<a name="line-378"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>&gt;&gt;^</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='layout'>)</span>
+<a name="line-379"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-380"></a>	  <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>null</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>t</span><span class='layout'>)</span>
+<a name="line-381"></a>
+<a name="line-382"></a>    <span class='varid'>decodeArr</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-383"></a>    <span class='varid'>decodeArr</span> <span class='varid'>enc</span>
+<a name="line-384"></a>	<span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>getDecodingFct</span> <span class='varop'>$</span> <span class='varid'>enc</span>
+<a name="line-385"></a>	<span class='keyword'>where</span>
+<a name="line-386"></a>	<span class='varid'>found</span> <span class='varid'>df</span>
+<a name="line-387"></a>	    <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"decodeDocument: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>
+<a name="line-388"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-389"></a>	      <span class='layout'>(</span> <span class='varid'>decodeText</span> <span class='varid'>df</span> <span class='varop'>$&lt;</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_ignore_encoding_errors</span> <span class='layout'>)</span>
+<a name="line-390"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-391"></a>	      <span class='varid'>addAttr</span> <span class='varid'>transferEncoding</span> <span class='varid'>enc</span>
+<a name="line-392"></a>
+<a name="line-393"></a>	<span class='varid'>notFound</span>
+<a name="line-394"></a>	    <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>
+<a name="line-395"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-396"></a>	      <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"decoding document"</span>
+<a name="line-397"></a>
+<a name="line-398"></a>	<span class='varid'>decodeText</span> <span class='varid'>df</span> <span class='varid'>ignoreErrs</span>
+<a name="line-399"></a>	    <span class='keyglyph'>=</span> <span class='varid'>processChildren</span>
+<a name="line-400"></a>	      <span class='layout'>(</span> <span class='varid'>getText</span>							<span class='comment'>-- get the document content</span>
+<a name="line-401"></a>		<span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr</span> <span class='varid'>df</span>						<span class='comment'>-- decode the text, result is (string, [errMsg])</span>
+<a name="line-402"></a>		<span class='varop'>&gt;&gt;&gt;</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>normalizeNL</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varop'>^&gt;&gt;</span> <span class='varid'>mkText</span> <span class='layout'>)</span>		<span class='comment'>-- take decoded string, normalize newline and build text node</span>
+<a name="line-403"></a>		      <span class='varop'>&lt;+&gt;</span>
+<a name="line-404"></a>		      <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isTrueValue</span> <span class='varid'>ignoreErrs</span>
+<a name="line-405"></a>			<span class='keyword'>then</span> <span class='varid'>none</span>					<span class='comment'>-- encoding errors are ignored</span>
+<a name="line-406"></a>			<span class='keyword'>else</span>
+<a name="line-407"></a>			<span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>snd</span>					<span class='comment'>-- take the error messages</span>
+<a name="line-408"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-409"></a>			  <span class='varid'>arr</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>enc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" encoding error"</span> <span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='comment'>-- prefix with enc error</span>
+<a name="line-410"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-411"></a>			  <span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>issueErr</span><span class='layout'>)</span>				<span class='comment'>-- build issueErr arrow and apply</span>
+<a name="line-412"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-413"></a>			  <span class='varid'>none</span>						<span class='comment'>-- neccessary for type match with &lt;+&gt;</span>
+<a name="line-414"></a>			<span class='layout'>)</span>
+<a name="line-415"></a>		      <span class='layout'>)</span>
+<a name="line-416"></a>		    <span class='layout'>)</span>
+<a name="line-417"></a>	      <span class='layout'>)</span>
+<a name="line-418"></a>      
+<a name="line-419"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow-Edit.html b/doc/hdoc/src/Text-XML-HXT-Arrow-Edit.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow-Edit.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow-Edit.html
@@ -745,16 +745,17 @@
 <a name="line-737"></a><span class='definition'>addDoctypeDecl</span> <span class='varid'>rootElem</span> <span class='varid'>public</span> <span class='varid'>system</span>
 <a name="line-738"></a>    <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>
 <a name="line-739"></a>      <span class='varid'>replaceChildren</span>
-<a name="line-740"></a>      <span class='layout'>(</span> <span class='varid'>mkDTDDoctype</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_name</span><span class='layout'>,</span> <span class='varid'>rootElem</span><span class='layout'>)</span>
-<a name="line-741"></a>		     <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>k_public</span><span class='layout'>,</span> <span class='varid'>public</span><span class='layout'>)</span>
-<a name="line-742"></a>		     <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>k_system</span><span class='layout'>,</span> <span class='varid'>system</span><span class='layout'>)</span>
-<a name="line-743"></a>		     <span class='keyglyph'>]</span> <span class='varid'>none</span>
-<a name="line-744"></a>	<span class='varop'>&lt;+&gt;</span>
-<a name="line-745"></a>	<span class='varid'>txt</span> <span class='str'>"\n"</span>
-<a name="line-746"></a>	<span class='varop'>&lt;+&gt;</span>
-<a name="line-747"></a>	<span class='varid'>getChildren</span>
-<a name="line-748"></a>      <span class='layout'>)</span>
-<a name="line-749"></a>
-<a name="line-750"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-740"></a>      <span class='layout'>(</span> <span class='varid'>mkDTDDoctype</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>public</span> <span class='keyword'>then</span> <span class='varid'>id</span> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>k_public</span><span class='layout'>,</span> <span class='varid'>public</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='layout'>)</span> <span class='layout'>)</span>
+<a name="line-741"></a>		       <span class='varop'>.</span>
+<a name="line-742"></a>		       <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>system</span> <span class='keyword'>then</span> <span class='varid'>id</span> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>k_system</span><span class='layout'>,</span> <span class='varid'>system</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='layout'>)</span> <span class='layout'>)</span>
+<a name="line-743"></a>		       <span class='varop'>$</span>  <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_name</span><span class='layout'>,</span> <span class='varid'>rootElem</span><span class='layout'>)</span> <span class='keyglyph'>]</span>
+<a name="line-744"></a>		     <span class='layout'>)</span> <span class='varid'>none</span>
+<a name="line-745"></a>	<span class='varop'>&lt;+&gt;</span>
+<a name="line-746"></a>	<span class='varid'>txt</span> <span class='str'>"\n"</span>
+<a name="line-747"></a>	<span class='varop'>&lt;+&gt;</span>
+<a name="line-748"></a>	<span class='varid'>getChildren</span>
+<a name="line-749"></a>      <span class='layout'>)</span>
+<a name="line-750"></a>
+<a name="line-751"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle-Xml.html b/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle-Xml.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle-Xml.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle-Xml.html
@@ -48,513 +48,642 @@
 <a name="line-40"></a><span class='keyword'>where</span>
 <a name="line-41"></a>
 <a name="line-42"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-43"></a>
-<a name="line-44"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
-<a name="line-45"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class='keyword'>import</span>           <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>
-<a name="line-48"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
-<a name="line-49"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Schema</span>
-<a name="line-50"></a>
-<a name="line-51"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-52"></a>
-<a name="line-53"></a><a name="St"></a><span class='keyword'>data</span> <span class='conid'>St</span>		<span class='keyglyph'>=</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>
-<a name="line-54"></a>		     <span class='layout'>,</span> <span class='varid'>contents</span>   <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>
-<a name="line-55"></a>		     <span class='layout'>}</span>
-<a name="line-56"></a>
-<a name="line-57"></a><a name="PU"></a><span class='keyword'>data</span> <span class='conid'>PU</span> <span class='varid'>a</span>	<span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
-<a name="line-58"></a>		     <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span>
-<a name="line-59"></a>		     <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>::</span> <span class='conid'>Schema</span>
-<a name="line-60"></a>		     <span class='layout'>}</span>
-<a name="line-61"></a>
-<a name="line-62"></a><a name="emptySt"></a><span class='definition'>emptySt</span>		<span class='keyglyph'>::</span> <span class='conid'>St</span>
-<a name="line-63"></a><span class='definition'>emptySt</span>		<span class='keyglyph'>=</span>  <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-64"></a>		      <span class='layout'>,</span> <span class='varid'>contents</span>   <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-65"></a>		      <span class='layout'>}</span>
-<a name="line-66"></a>
-<a name="line-67"></a><a name="addAtt"></a><span class='definition'>addAtt</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
-<a name="line-68"></a><span class='definition'>addAtt</span> <span class='varid'>x</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>attributes</span> <span class='varid'>s</span><span class='layout'>}</span>
-<a name="line-69"></a>
-<a name="line-70"></a><a name="addCont"></a><span class='definition'>addCont</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
-<a name="line-71"></a><span class='definition'>addCont</span> <span class='varid'>x</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>}</span>
-<a name="line-72"></a>
-<a name="line-73"></a><a name="dropCont"></a><span class='definition'>dropCont</span>	<span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
-<a name="line-74"></a><span class='definition'>dropCont</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-75"></a>
-<a name="line-76"></a><a name="getAtt"></a><span class='definition'>getAtt</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>
-<a name="line-77"></a><span class='definition'>getAtt</span> <span class='varid'>name</span> <span class='varid'>s</span>
-<a name="line-78"></a>    <span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>$</span>
-<a name="line-79"></a>      <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>attributes</span>
-<a name="line-80"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-81"></a>	      <span class='varid'>isAttr</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>hasName</span> <span class='varid'>name</span>
-<a name="line-82"></a>	    <span class='layout'>)</span> <span class='varid'>s</span>
-<a name="line-83"></a>
-<a name="line-84"></a><a name="getCont"></a><span class='definition'>getCont</span>		<span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>
-<a name="line-85"></a><span class='definition'>getCont</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>.</span> <span class='varid'>contents</span> <span class='varop'>$</span> <span class='varid'>s</span>
-<a name="line-86"></a>
-<a name="line-87"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-88"></a>
-<a name="line-89"></a><span class='comment'>-- | conversion of an arbitrary value into an XML document tree.</span>
-<a name="line-90"></a><span class='comment'>--</span>
-<a name="line-91"></a><span class='comment'>-- The pickler, first parameter, controls the conversion process.</span>
-<a name="line-92"></a><span class='comment'>-- Result is a complete document tree including a root node</span>
-<a name="line-93"></a>
-<a name="line-94"></a><a name="pickleDoc"></a><span class='definition'>pickleDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span>
-<a name="line-95"></a><span class='definition'>pickleDoc</span> <span class='varid'>p</span> <span class='varid'>v</span>
-<a name="line-96"></a>    <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkRoot</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-97"></a>    <span class='keyword'>where</span>
-<a name="line-98"></a>    <span class='varid'>st</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>v</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>
-<a name="line-99"></a>
-<a name="line-100"></a><span class='comment'>-- | Conversion of an XML document tree into an arbitrary data type</span>
-<a name="line-101"></a><span class='comment'>--</span>
-<a name="line-102"></a><span class='comment'>-- The inverse of 'pickleDoc'.</span>
-<a name="line-103"></a><span class='comment'>-- This law should hold for all picklers: @ unpickle px . pickle px $ v == Just v @.</span>
-<a name="line-104"></a><span class='comment'>-- Not every possible combination of picklers make sense.</span>
-<a name="line-105"></a><span class='comment'>-- For reconverting a value from an XML tree, is becomes neccessary,</span>
-<a name="line-106"></a><span class='comment'>-- to introduce \"enough\" markup for unpickling the value</span>
-<a name="line-107"></a>
-<a name="line-108"></a><a name="unpickleDoc"></a><span class='definition'>unpickleDoc</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='varid'>a</span>
-<a name="line-109"></a><span class='definition'>unpickleDoc</span> <span class='varid'>p</span> <span class='varid'>t</span>
-<a name="line-110"></a>    <span class='keyglyph'>|</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isRoot</span> <span class='varid'>t</span>
-<a name="line-111"></a>	<span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varop'>$</span>  <span class='varid'>t</span>
-<a name="line-112"></a>				   <span class='layout'>,</span> <span class='varid'>contents</span>   <span class='keyglyph'>=</span>            <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>
-<a name="line-113"></a>				   <span class='layout'>}</span>
-<a name="line-114"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-115"></a>	<span class='keyglyph'>=</span> <span class='conid'>Nothing</span>
-<a name="line-116"></a>
-<a name="line-117"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-118"></a>
-<a name="line-119"></a><span class='comment'>-- | The zero pickler</span>
-<a name="line-120"></a><span class='comment'>--</span>
-<a name="line-121"></a><span class='comment'>-- Encodes nothing, fails always during unpickling</span>
-<a name="line-122"></a>
-<a name="line-123"></a><a name="xpZero"></a><span class='definition'>xpZero</span>			<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-124"></a><span class='definition'>xpZero</span>			<span class='keyglyph'>=</span>  <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='varid'>snd</span>
-<a name="line-125"></a>			      <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-126"></a>			      <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scNull</span>
-<a name="line-127"></a>			      <span class='layout'>}</span>
-<a name="line-128"></a>
-<a name="line-129"></a><span class='comment'>-- unit pickler</span>
-<a name="line-130"></a>
-<a name="line-131"></a><a name="xpUnit"></a><span class='definition'>xpUnit</span>			<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>()</span>
-<a name="line-132"></a><span class='definition'>xpUnit</span>			<span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='conid'>()</span>
-<a name="line-133"></a>
-<a name="line-134"></a><span class='comment'>-- | Lift a value to a pickler</span>
-<a name="line-135"></a><span class='comment'>--</span>
-<a name="line-136"></a><span class='comment'>-- When pickling, nothing is encoded, when unpickling, the given value is inserted.</span>
-<a name="line-137"></a><span class='comment'>-- This pickler always succeeds.</span>
-<a name="line-138"></a>
-<a name="line-139"></a><a name="xpLift"></a><span class='definition'>xpLift</span>			<span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-140"></a><span class='definition'>xpLift</span> <span class='varid'>x</span>		<span class='keyglyph'>=</span>  <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='varid'>snd</span>
-<a name="line-141"></a>			      <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-142"></a>			      <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scEmpty</span>
-<a name="line-143"></a>			      <span class='layout'>}</span>
-<a name="line-144"></a>
-<a name="line-145"></a><span class='comment'>-- | Lift a Maybe value to a pickler.</span>
-<a name="line-146"></a><span class='comment'>--</span>
-<a name="line-147"></a><span class='comment'>-- @Nothing@ is mapped to the zero pickler, @Just x@ is pickled with @xpLift x@.</span>
-<a name="line-148"></a>
-<a name="line-149"></a><a name="xpLiftMaybe"></a><span class='definition'>xpLiftMaybe</span>		<span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-150"></a><span class='definition'>xpLiftMaybe</span> <span class='varid'>v</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe'</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='varid'>scEmpty</span> <span class='layout'>}</span>
-<a name="line-151"></a>    <span class='keyword'>where</span>
-<a name="line-152"></a>    <span class='varid'>xpLiftMaybe'</span> <span class='conid'>Nothing</span>	<span class='keyglyph'>=</span> <span class='varid'>xpZero</span>
-<a name="line-153"></a>    <span class='varid'>xpLiftMaybe'</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> 	<span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='varid'>x</span>
-<a name="line-154"></a>
-<a name="line-155"></a>
-<a name="line-156"></a><span class='comment'>-- | pickle\/unpickle combinator for sequence and choice.</span>
-<a name="line-157"></a><span class='comment'>--</span>
-<a name="line-158"></a><span class='comment'>-- When the first unpickler fails,</span>
-<a name="line-159"></a><span class='comment'>-- the second one is taken, else the third one configured with the result from the first</span>
-<a name="line-160"></a><span class='comment'>-- is taken. This pickler is a generalisation for 'xpSeq' and 'xpChoice' .</span>
-<a name="line-161"></a><span class='comment'>--</span>
-<a name="line-162"></a><span class='comment'>-- The schema must be attached later, e.g. in xpPair or other higher level combinators</span>
-<a name="line-163"></a>
-<a name="line-164"></a><a name="xpCondSeq"></a><span class='definition'>xpCondSeq</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
-<a name="line-165"></a><span class='definition'>xpCondSeq</span> <span class='varid'>pd</span> <span class='varid'>f</span> <span class='varid'>pa</span> <span class='varid'>k</span>
-<a name="line-166"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-167"></a>	                   <span class='keyword'>let</span>
-<a name="line-168"></a>			   <span class='varid'>a</span>  <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>b</span>
-<a name="line-169"></a>			   <span class='varid'>pb</span> <span class='keyglyph'>=</span> <span class='varid'>k</span> <span class='varid'>a</span>
-<a name="line-170"></a>			   <span class='keyword'>in</span>
-<a name="line-171"></a>			   <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>appPickle</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-172"></a>			 <span class='layout'>)</span>
-<a name="line-173"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-174"></a>			   <span class='keyword'>let</span>
-<a name="line-175"></a>			   <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varid'>s</span>
-<a name="line-176"></a>			   <span class='keyword'>in</span>
-<a name="line-177"></a>			   <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>
-<a name="line-178"></a>			   <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>appUnPickle</span> <span class='varid'>pd</span>     <span class='varid'>s</span>
-<a name="line-179"></a>			   <span class='conid'>Just</span> <span class='varid'>a'</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>appUnPickle</span> <span class='layout'>(</span><span class='varid'>k</span> <span class='varid'>a'</span><span class='layout'>)</span> <span class='varid'>s'</span>
-<a name="line-180"></a>			 <span class='layout'>)</span>
-<a name="line-181"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>undefined</span>
-<a name="line-182"></a>	 <span class='layout'>}</span>
-<a name="line-183"></a>
-<a name="line-184"></a>
-<a name="line-185"></a><span class='comment'>-- | Combine two picklers sequentially.</span>
-<a name="line-186"></a><span class='comment'>--</span>
-<a name="line-187"></a><span class='comment'>-- If the first fails during</span>
-<a name="line-188"></a><span class='comment'>-- unpickling, the whole unpickler fails</span>
-<a name="line-189"></a>
-<a name="line-190"></a><a name="xpSeq"></a><span class='definition'>xpSeq</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
-<a name="line-191"></a><span class='definition'>xpSeq</span>	<span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>xpZero</span>
-<a name="line-192"></a>
-<a name="line-193"></a>
-<a name="line-194"></a><span class='comment'>-- | combine tow picklers with a choice</span>
-<a name="line-195"></a><span class='comment'>--</span>
-<a name="line-196"></a><span class='comment'>-- Run two picklers in sequence like with xpSeq.</span>
-<a name="line-197"></a><span class='comment'>-- When during unpickling the first one fails,</span>
-<a name="line-198"></a><span class='comment'>-- an alternative pickler (first argument) is applied.</span>
-<a name="line-199"></a><span class='comment'>-- This pickler only is used as combinator for unpickling.</span>
-<a name="line-200"></a> 
-<a name="line-201"></a><a name="xpChoice"></a><span class='definition'>xpChoice</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
-<a name="line-202"></a><span class='definition'>xpChoice</span> <span class='varid'>pb</span>	<span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>pb</span> <span class='varid'>undefined</span>
-<a name="line-203"></a>
-<a name="line-204"></a>
-<a name="line-205"></a><span class='comment'>-- | map value into another domain and apply pickler there</span>
-<a name="line-206"></a><span class='comment'>--</span>
-<a name="line-207"></a><span class='comment'>-- One of the most often used picklers.</span>
-<a name="line-208"></a>
-<a name="line-209"></a><a name="xpWrap"></a><span class='definition'>xpWrap</span>			<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
-<a name="line-210"></a><span class='definition'>xpWrap</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>
-<a name="line-211"></a>
-<a name="line-212"></a><span class='comment'>-- | like 'xpWrap', but if the inverse mapping is undefined, the unpickler fails</span>
-<a name="line-213"></a><span class='comment'>--</span>
-<a name="line-214"></a><span class='comment'>-- Map a value into another domain. If the inverse mapping is</span>
-<a name="line-215"></a><span class='comment'>-- undefined (Nothing), the unpickler fails</span>
-<a name="line-216"></a>
-<a name="line-217"></a><a name="xpWrapMaybe"></a><span class='definition'>xpWrapMaybe</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
-<a name="line-218"></a><span class='definition'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>
-<a name="line-219"></a>
-<a name="line-220"></a><span class='comment'>-- | pickle a pair of values sequentially</span>
-<a name="line-221"></a><span class='comment'>--</span>
-<a name="line-222"></a><span class='comment'>-- Used for pairs or together with wrap for pickling</span>
-<a name="line-223"></a><span class='comment'>-- algebraic data types with two components</span>
-<a name="line-224"></a>
-<a name="line-225"></a><a name="xpPair"></a><span class='definition'>xpPair</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span>
-<a name="line-226"></a><span class='definition'>xpPair</span> <span class='varid'>pa</span> <span class='varid'>pb</span>
-<a name="line-227"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpSeq</span> <span class='varid'>fst</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-228"></a>        <span class='varid'>xpSeq</span> <span class='varid'>snd</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-229"></a>        <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-230"></a>      <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scSeq</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pb</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-231"></a>
-<a name="line-232"></a><span class='comment'>-- | Like 'xpPair' but for triples</span>
-<a name="line-233"></a>
-<a name="line-234"></a><a name="xpTriple"></a><span class='definition'>xpTriple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-235"></a><span class='definition'>xpTriple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span>
-<a name="line-236"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toTriple</span><span class='layout'>,</span> <span class='varid'>fromTriple</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='varid'>pc</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-237"></a>    <span class='keyword'>where</span>
-<a name="line-238"></a>    <span class='varid'>toTriple</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span>
-<a name="line-239"></a>    <span class='varid'>fromTriple</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-240"></a>
-<a name="line-241"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 4-tuples</span>
-<a name="line-242"></a>
-<a name="line-243"></a><a name="xp4Tuple"></a><span class='definition'>xp4Tuple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span>
-<a name="line-244"></a><span class='definition'>xp4Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span>
-<a name="line-245"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuad</span><span class='layout'>,</span> <span class='varid'>fromQuad</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='varid'>pd</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-246"></a>    <span class='keyword'>where</span>
-<a name="line-247"></a>    <span class='varid'>toQuad</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span>  <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span>  <span class='layout'>)</span>
-<a name="line-248"></a>    <span class='varid'>fromQuad</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span>   <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span>  <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-249"></a>
-<a name="line-250"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 5-tuples</span>
-<a name="line-251"></a>
-<a name="line-252"></a><a name="xp5Tuple"></a><span class='definition'>xp5Tuple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span>
-<a name="line-253"></a><span class='definition'>xp5Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span>
-<a name="line-254"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuint</span><span class='layout'>,</span> <span class='varid'>fromQuint</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='varid'>pe</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-255"></a>    <span class='keyword'>where</span>
-<a name="line-256"></a>    <span class='varid'>toQuint</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span>  <span class='varid'>c</span><span class='layout'>,</span>  <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span>   <span class='layout'>)</span>
-<a name="line-257"></a>    <span class='varid'>fromQuint</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span>   <span class='varid'>c</span><span class='layout'>,</span>   <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span>   <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-258"></a>
-<a name="line-259"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 6-tuples</span>
-<a name="line-260"></a>
-<a name="line-261"></a><a name="xp6Tuple"></a><span class='definition'>xp6Tuple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>f</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span>
-<a name="line-262"></a><span class='definition'>xp6Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span> <span class='varid'>pf</span>
-<a name="line-263"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toSix</span><span class='layout'>,</span> <span class='varid'>fromSix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pe</span> <span class='varid'>pf</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-264"></a>    <span class='keyword'>where</span>
-<a name="line-265"></a>    <span class='varid'>toSix</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span>  <span class='varid'>c</span><span class='layout'>,</span>  <span class='varid'>d</span><span class='layout'>,</span>  <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span>    <span class='layout'>)</span>
-<a name="line-266"></a>    <span class='varid'>fromSix</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span>   <span class='varid'>c</span><span class='layout'>,</span>   <span class='varid'>d</span><span class='layout'>,</span>   <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span>     <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-267"></a>
-<a name="line-268"></a><span class='comment'>-- | Pickle a string into an XML text node</span>
-<a name="line-269"></a><span class='comment'>--</span>
-<a name="line-270"></a><span class='comment'>-- One of the most often used primitive picklers. Attention:</span>
-<a name="line-271"></a><span class='comment'>-- For pickling empty strings use 'xpText0'. If the text has a more</span>
-<a name="line-272"></a><span class='comment'>-- specific datatype than xsd:string, use 'xpTextDT'</span>
-<a name="line-273"></a>
-<a name="line-274"></a><a name="xpText"></a><span class='definition'>xpText</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>
-<a name="line-275"></a><span class='definition'>xpText</span>	<span class='keyglyph'>=</span> <span class='varid'>xpTextDT</span> <span class='varid'>scString1</span>
-<a name="line-276"></a>
-<a name="line-277"></a><span class='comment'>-- | Pickle a string into an XML text node</span>
-<a name="line-278"></a><span class='comment'>--</span>
-<a name="line-279"></a><span class='comment'>-- Text pickler with a description of the structure of the text</span>
-<a name="line-280"></a><span class='comment'>-- by a schema. A schema for a data type can be defined by 'Text.XML.HXT.Arrow.Pickle.Schema.scDT'.</span>
-<a name="line-281"></a><span class='comment'>-- In 'Text.XML.HXT.Arrow.Pickle.Schema' there are some more functions for creating</span>
-<a name="line-282"></a><span class='comment'>-- simple datatype descriptions.</span>
-<a name="line-283"></a>
-<a name="line-284"></a><a name="xpTextDT"></a><span class='definition'>xpTextDT</span>	<span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='conid'>String</span>
-<a name="line-285"></a><span class='definition'>xpTextDT</span> <span class='varid'>sc</span>
-<a name="line-286"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>st</span>
-<a name="line-287"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleString</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-288"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>sc</span>
-<a name="line-289"></a>	 <span class='layout'>}</span>
-<a name="line-290"></a>    <span class='keyword'>where</span>
-<a name="line-291"></a>    <span class='varid'>unpickleString</span> <span class='varid'>st</span>
-<a name="line-292"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-293"></a>	  <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>
-<a name="line-294"></a>	  <span class='varid'>s</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varid'>t</span>
-<a name="line-295"></a>	  <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-296"></a>
-<a name="line-297"></a><span class='comment'>-- | Pickle a possibly empty string into an XML node.</span>
-<a name="line-298"></a><span class='comment'>--</span>
-<a name="line-299"></a><span class='comment'>-- Must be used in all places, where empty strings are legal values.</span>
-<a name="line-300"></a><span class='comment'>-- If the content of an element can be an empty string, this string disapears</span>
-<a name="line-301"></a><span class='comment'>-- during storing the DOM into a document and reparse the document.</span>
-<a name="line-302"></a><span class='comment'>-- So the empty text node becomes nothing, and the pickler must deliver an empty string,</span>
-<a name="line-303"></a><span class='comment'>-- if there is no text node in the document.</span>
-<a name="line-304"></a>
-<a name="line-305"></a><a name="xpText0"></a><span class='definition'>xpText0</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>
-<a name="line-306"></a><span class='definition'>xpText0</span>	<span class='keyglyph'>=</span> <span class='varid'>xpText0DT</span> <span class='varid'>scString1</span>
-<a name="line-307"></a>
-<a name="line-308"></a><span class='comment'>-- | Pickle a possibly empty string with a datatype description into an XML node.</span>
-<a name="line-309"></a><span class='comment'>--</span>
-<a name="line-310"></a><span class='comment'>-- Like 'xpText0' but with extra Parameter for datatype description as in 'xpTextDT'.</span>
-<a name="line-311"></a>
-<a name="line-312"></a><a name="xpText0DT"></a><span class='definition'>xpText0DT</span>	<span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='conid'>String</span>
-<a name="line-313"></a><span class='definition'>xpText0DT</span> <span class='varid'>sc</span>
-<a name="line-314"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='str'>""</span><span class='layout'>,</span> <span class='varid'>emptyToNothing</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpTextDT</span> <span class='varid'>sc</span>
-<a name="line-315"></a>    <span class='keyword'>where</span>
-<a name="line-316"></a>    <span class='varid'>emptyToNothing</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>
-<a name="line-317"></a>    <span class='varid'>emptyToNothing</span> <span class='varid'>x</span>  <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>
-<a name="line-318"></a>
-<a name="line-319"></a><span class='comment'>-- | Pickle an arbitrary value by applyling show during pickling</span>
-<a name="line-320"></a><span class='comment'>-- and read during unpickling.</span>
-<a name="line-321"></a><span class='comment'>--</span>
-<a name="line-322"></a><span class='comment'>-- Real pickling is then done with 'xpText'.</span>
-<a name="line-323"></a><span class='comment'>-- One of the most often used pimitive picklers. Applicable for all</span>
-<a name="line-324"></a><span class='comment'>-- types which are instances of @Read@ and @Show@</span>
-<a name="line-325"></a>
-<a name="line-326"></a><a name="xpPrim"></a><span class='definition'>xpPrim</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Read</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-327"></a><span class='definition'>xpPrim</span>
-<a name="line-328"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>readMaybe</span><span class='layout'>,</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='varid'>xpText</span>
-<a name="line-329"></a>    <span class='keyword'>where</span>
-<a name="line-330"></a>    <span class='varid'>readMaybe</span>	<span class='keyglyph'>::</span> <span class='conid'>Read</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='varid'>a</span>
-<a name="line-331"></a>    <span class='varid'>readMaybe</span> <span class='varid'>str</span>
-<a name="line-332"></a>	<span class='keyglyph'>=</span> <span class='varid'>val</span> <span class='layout'>(</span><span class='varid'>reads</span> <span class='varid'>str</span><span class='layout'>)</span>
-<a name="line-333"></a>	<span class='keyword'>where</span>
-<a name="line-334"></a>	<span class='varid'>val</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='str'>""</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>
-<a name="line-335"></a>	<span class='varid'>val</span> <span class='keyword'>_</span>        <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>
-<a name="line-336"></a>
-<a name="line-337"></a><span class='comment'>-- | Pickle an XmlTree by just adding it</span>
-<a name="line-338"></a><span class='comment'>--</span>
-<a name="line-339"></a><span class='comment'>-- Usefull for components of type XmlTree in other data structures</span>
-<a name="line-340"></a>
-<a name="line-341"></a><a name="xpTree"></a><span class='definition'>xpTree</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>XmlTree</span>
-<a name="line-342"></a><span class='definition'>xpTree</span>	<span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>addCont</span> <span class='varid'>s</span> <span class='varid'>st</span>
-<a name="line-343"></a>	     <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleTree</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-344"></a>	     <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='conid'>Any</span>
-<a name="line-345"></a>	     <span class='layout'>}</span>
-<a name="line-346"></a>    <span class='keyword'>where</span>
-<a name="line-347"></a>    <span class='varid'>unpickleTree</span> <span class='varid'>st</span>
-<a name="line-348"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-349"></a>	  <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>
-<a name="line-350"></a>	  <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>t</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-351"></a>
-<a name="line-352"></a><span class='comment'>-- | Encoding of optional data by ignoring the Nothing case during pickling</span>
-<a name="line-353"></a><span class='comment'>-- and relying on failure during unpickling to recompute the Nothing case</span>
-<a name="line-354"></a><span class='comment'>--</span>
-<a name="line-355"></a><span class='comment'>-- The default pickler for Maybe types</span>
-<a name="line-356"></a>
-<a name="line-357"></a><a name="xpOption"></a><span class='definition'>xpOption</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>
-<a name="line-358"></a><span class='definition'>xpOption</span> <span class='varid'>pa</span>
-<a name="line-359"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-360"></a>			   <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>
-<a name="line-361"></a>			   <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>st</span>
-<a name="line-362"></a>			   <span class='conid'>Just</span> <span class='varid'>x</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-363"></a>			 <span class='layout'>)</span>
-<a name="line-364"></a>
-<a name="line-365"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>
-<a name="line-366"></a>	                 <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='conid'>Just</span><span class='layout'>)</span>
-<a name="line-367"></a>
-<a name="line-368"></a>         <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
-<a name="line-369"></a>	 <span class='layout'>}</span>
-<a name="line-370"></a>
-<a name="line-371"></a><span class='comment'>-- | Encoding of list values by pickling all list elements sequentially.</span>
-<a name="line-372"></a><span class='comment'>--</span>
-<a name="line-373"></a><span class='comment'>-- Unpickler relies on failure for detecting the end of the list.</span>
-<a name="line-374"></a><span class='comment'>-- The standard pickler for lists. Can also be used in combination with 'xpWrap'</span>
-<a name="line-375"></a><span class='comment'>-- for constructing set and map picklers</span>
-<a name="line-376"></a>
-<a name="line-377"></a><a name="xpList"></a><span class='definition'>xpList</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>
-<a name="line-378"></a><span class='definition'>xpList</span> <span class='varid'>pa</span>
-<a name="line-379"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-380"></a>			   <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>
-<a name="line-381"></a>			   <span class='conid'>[]</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>st</span>
-<a name="line-382"></a>			   <span class='keyword'>_</span><span class='conop'>:</span><span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>appPickle</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-383"></a>			 <span class='layout'>)</span>
-<a name="line-384"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>
-<a name="line-385"></a>                         <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='varid'>pa</span>
-<a name="line-386"></a>	                   <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xpSeq</span> <span class='varid'>id</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>xs</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-387"></a>
-<a name="line-388"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scList</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
-<a name="line-389"></a>	 <span class='layout'>}</span>
-<a name="line-390"></a>      <span class='keyword'>where</span>
-<a name="line-391"></a>      <span class='varid'>pc</span> <span class='keyglyph'>=</span> <span class='varid'>xpSeq</span> <span class='varid'>head</span>  <span class='varid'>pa</span>       <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-392"></a>	   <span class='varid'>xpSeq</span> <span class='varid'>tail</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>xs</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-393"></a>	   <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-394"></a>
-<a name="line-395"></a><span class='comment'>-- | Encoding of a none empty list of values</span>
-<a name="line-396"></a><span class='comment'>--</span>
-<a name="line-397"></a><span class='comment'>-- Attention: when calling this pickler with an empty list,</span>
-<a name="line-398"></a><span class='comment'>-- an internal error \"head of empty list is raised\".</span>
-<a name="line-399"></a>
-<a name="line-400"></a><a name="xpList1"></a><span class='definition'>xpList1</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>
-<a name="line-401"></a><span class='definition'>xpList1</span> <span class='varid'>pa</span>
-<a name="line-402"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span>
-<a name="line-403"></a>	       <span class='layout'>,</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span>
-<a name="line-404"></a>	       <span class='layout'>)</span> <span class='varop'>$</span>
-<a name="line-405"></a>	<span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span>
-<a name="line-406"></a>      <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scList1</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-407"></a>
-<a name="line-408"></a><span class='comment'>-- | Pickler for sum data types.</span>
-<a name="line-409"></a><span class='comment'>--</span>
-<a name="line-410"></a><span class='comment'>-- Every constructor is mapped to an index into the list of picklers.</span>
-<a name="line-411"></a><span class='comment'>-- The index is used only during pickling, not during unpickling, there the 1. match is taken</span>
-<a name="line-412"></a>
-<a name="line-413"></a><a name="xpAlt"></a><span class='definition'>xpAlt</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>PU</span> <span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-414"></a><span class='definition'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps</span>
-<a name="line-415"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-416"></a>			   <span class='keyword'>let</span>
-<a name="line-417"></a>			   <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='varid'>ps</span> <span class='varop'>!!</span> <span class='layout'>(</span><span class='varid'>tag</span> <span class='varid'>a</span><span class='layout'>)</span>
-<a name="line-418"></a>			   <span class='keyword'>in</span>
-<a name="line-419"></a>			   <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-420"></a>			 <span class='layout'>)</span>
-<a name="line-421"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>
-<a name="line-422"></a>	                 <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>ps</span> <span class='keyword'>of</span>
-<a name="line-423"></a>			   <span class='conid'>[]</span>     <span class='keyglyph'>-&gt;</span> <span class='varid'>xpZero</span>
-<a name="line-424"></a>			   <span class='varid'>pa</span><span class='conop'>:</span><span class='varid'>ps1</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps1</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='varid'>xpLift</span>
-<a name="line-425"></a>			 <span class='layout'>)</span>
-<a name="line-426"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scAlts</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>theSchema</span> <span class='varid'>ps</span><span class='layout'>)</span>
-<a name="line-427"></a>	 <span class='layout'>}</span>
-<a name="line-428"></a>
-<a name="line-429"></a><span class='comment'>-- | Pickler for wrapping\/unwrapping data into an XML element</span>
-<a name="line-430"></a><span class='comment'>--</span>
-<a name="line-431"></a><span class='comment'>-- Extra parameter is the element name. THE pickler for constructing</span>
-<a name="line-432"></a><span class='comment'>-- nested structures</span>
-<a name="line-433"></a>
-<a name="line-434"></a><a name="xpElem"></a><span class='definition'>xpElem</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-435"></a><span class='definition'>xpElem</span> <span class='varid'>name</span> <span class='varid'>pa</span>
-<a name="line-436"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-437"></a>			   <span class='keyword'>let</span>
-<a name="line-438"></a>	                   <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>
-<a name="line-439"></a>			   <span class='keyword'>in</span>
-<a name="line-440"></a>			   <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st'</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>
-<a name="line-441"></a>			 <span class='layout'>)</span>
-<a name="line-442"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleElement</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-443"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scElem</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
-<a name="line-444"></a>	 <span class='layout'>}</span>
-<a name="line-445"></a>      <span class='keyword'>where</span>
-<a name="line-446"></a>      <span class='varid'>unpickleElement</span> <span class='varid'>st</span>
-<a name="line-447"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-448"></a>	    <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>
-<a name="line-449"></a>	    <span class='varid'>n</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getElemName</span> <span class='varid'>t</span>
-<a name="line-450"></a>	    <span class='keyword'>if</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span> <span class='varop'>/=</span> <span class='varid'>name</span>
-<a name="line-451"></a>	       <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='str'>"element name does not match"</span>
-<a name="line-452"></a>	       <span class='keyword'>else</span> <span class='keyword'>do</span>
-<a name="line-453"></a>		    <span class='keyword'>let</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>
-<a name="line-454"></a>		    <span class='varid'>al</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varid'>t</span>
-<a name="line-455"></a>		    <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span><span class='layout'>}</span>
-<a name="line-456"></a>		    <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-457"></a>
-<a name="line-458"></a><span class='comment'>-- | Pickler for storing\/retreiving data into\/from an attribute value</span>
-<a name="line-459"></a><span class='comment'>--</span>
-<a name="line-460"></a><span class='comment'>-- The attribute is inserted in the surrounding element constructed by the 'xpElem' pickler</span>
-<a name="line-461"></a>
-<a name="line-462"></a><a name="xpAttr"></a><span class='definition'>xpAttr</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-463"></a><span class='definition'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>pa</span>
-<a name="line-464"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-465"></a>			   <span class='keyword'>let</span>
-<a name="line-466"></a>			   <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>
-<a name="line-467"></a>			   <span class='keyword'>in</span>
-<a name="line-468"></a>			   <span class='varid'>addAtt</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>
-<a name="line-469"></a>			 <span class='layout'>)</span>
-<a name="line-470"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleAttr</span> <span class='varid'>st</span><span class='layout'>)</span>
-<a name="line-471"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
-<a name="line-472"></a>	 <span class='layout'>}</span>
-<a name="line-473"></a>      <span class='keyword'>where</span>
-<a name="line-474"></a>      <span class='varid'>unpickleAttr</span> <span class='varid'>st</span>
-<a name="line-475"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-476"></a>	    <span class='varid'>a</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getAtt</span> <span class='varid'>name</span> <span class='varid'>st</span>
-<a name="line-477"></a>	    <span class='keyword'>let</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>a</span>
-<a name="line-478"></a>	    <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>av</span><span class='layout'>}</span>
-<a name="line-479"></a>	    <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>	<span class='comment'>-- attribute is not removed from attribute list,</span>
-<a name="line-480"></a>					<span class='comment'>-- attributes are selected by name</span>
-<a name="line-481"></a>
-<a name="line-482"></a><span class='comment'>-- | Add an optional attribute for an optional value (Maybe a).</span>
-<a name="line-483"></a>
-<a name="line-484"></a><a name="xpAttrImplied"></a><span class='definition'>xpAttrImplied</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>
-<a name="line-485"></a><span class='definition'>xpAttrImplied</span> <span class='varid'>name</span> <span class='varid'>pa</span>
-<a name="line-486"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>pa</span>
-<a name="line-487"></a>
-<a name="line-488"></a><a name="xpAttrFixed"></a><span class='definition'>xpAttrFixed</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='conid'>()</span>
-<a name="line-489"></a><span class='definition'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span>
-<a name="line-490"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>if</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>val</span> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='conid'>Nothing</span>
-<a name="line-491"></a>		    <span class='layout'>,</span> <span class='varid'>const</span> <span class='varid'>val</span>
-<a name="line-492"></a>		    <span class='layout'>)</span> <span class='varop'>$</span>
-<a name="line-493"></a>	<span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>xpText</span>
-<a name="line-494"></a>      <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>scFixed</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-495"></a>
-<a name="line-496"></a><span class='comment'>-- | Add an attribute with a fixed value.</span>
-<a name="line-497"></a><span class='comment'>--</span>
-<a name="line-498"></a><span class='comment'>-- Useful e.g. to declare namespaces. Is implemented by 'xpAttrFixed'</span>
-<a name="line-499"></a>
-<a name="line-500"></a><a name="xpAddFixedAttr"></a><span class='definition'>xpAddFixedAttr</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-501"></a><span class='definition'>xpAddFixedAttr</span> <span class='varid'>name</span> <span class='varid'>val</span> <span class='varid'>pa</span>
-<a name="line-502"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>snd</span>
-<a name="line-503"></a>	     <span class='layout'>,</span> <span class='conid'>(,)</span> <span class='conid'>()</span>
-<a name="line-504"></a>	     <span class='layout'>)</span> <span class='varop'>$</span>
-<a name="line-505"></a>      <span class='varid'>xpPair</span> <span class='layout'>(</span><span class='varid'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='varid'>pa</span>
-<a name="line-506"></a>
-<a name="line-507"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-508"></a>
-<a name="line-509"></a><span class='comment'>-- | The class for overloading 'xpickle', the default pickler</span>
-<a name="line-510"></a>
-<a name="line-511"></a><a name="XmlPickler"></a><span class='keyword'>class</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyword'>where</span>
-<a name="line-512"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>
-<a name="line-513"></a>
-<a name="line-514"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Int</span> <span class='keyword'>where</span>
-<a name="line-515"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>
-<a name="line-516"></a>
-<a name="line-517"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Integer</span> <span class='keyword'>where</span>
-<a name="line-518"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>
-<a name="line-519"></a>
-<a name="line-520"></a><span class='comment'>{-
-<a name="line-521"></a>  no instance of XmlPickler Char
-<a name="line-522"></a>  because then every text would be encoded
-<a name="line-523"></a>  char by char, because of the instance for lists
-<a name="line-524"></a>
-<a name="line-525"></a>instance XmlPickler Char where
-<a name="line-526"></a>    xpickle = xpPrim
-<a name="line-527"></a>-}</span>
-<a name="line-528"></a>
-<a name="line-529"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>()</span> <span class='keyword'>where</span>
-<a name="line-530"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpUnit</span>
-<a name="line-531"></a>
-<a name="line-532"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span> <span class='keyword'>where</span>
-<a name="line-533"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPair</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
-<a name="line-534"></a>
-<a name="line-535"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>)</span> <span class='keyword'>where</span>
-<a name="line-536"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpTriple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
-<a name="line-537"></a>
-<a name="line-538"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>)</span> <span class='keyword'>where</span>
-<a name="line-539"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp4Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
-<a name="line-540"></a>
-<a name="line-541"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>,</span><span class='varid'>e</span><span class='layout'>)</span> <span class='keyword'>where</span>
-<a name="line-542"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp5Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
-<a name="line-543"></a>
-<a name="line-544"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyword'>where</span>
-<a name="line-545"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpList</span> <span class='varid'>xpickle</span>
-<a name="line-546"></a>
-<a name="line-547"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyword'>where</span>
-<a name="line-548"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varid'>xpickle</span>
-<a name="line-549"></a>
-<a name="line-550"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-43"></a><span class='keyword'>import</span>		 <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>
+<a name="line-44"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>
+<a name="line-45"></a>
+<a name="line-46"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
+<a name="line-47"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>
+<a name="line-48"></a>
+<a name="line-49"></a><span class='keyword'>import</span>           <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>
+<a name="line-50"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
+<a name="line-51"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Schema</span>
+<a name="line-52"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ReadDocument</span> <span class='layout'>(</span><span class='varid'>xread</span><span class='layout'>)</span>
+<a name="line-53"></a>
+<a name="line-54"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-55"></a>
+<a name="line-56"></a><a name="St"></a><span class='keyword'>data</span> <span class='conid'>St</span>		<span class='keyglyph'>=</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>
+<a name="line-57"></a>		     <span class='layout'>,</span> <span class='varid'>contents</span>   <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>
+<a name="line-58"></a>		     <span class='layout'>}</span>
+<a name="line-59"></a>
+<a name="line-60"></a><a name="PU"></a><span class='keyword'>data</span> <span class='conid'>PU</span> <span class='varid'>a</span>	<span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
+<a name="line-61"></a>		     <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span>
+<a name="line-62"></a>		     <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>::</span> <span class='conid'>Schema</span>
+<a name="line-63"></a>		     <span class='layout'>}</span>
+<a name="line-64"></a>
+<a name="line-65"></a><a name="emptySt"></a><span class='definition'>emptySt</span>		<span class='keyglyph'>::</span> <span class='conid'>St</span>
+<a name="line-66"></a><span class='definition'>emptySt</span>		<span class='keyglyph'>=</span>  <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-67"></a>		      <span class='layout'>,</span> <span class='varid'>contents</span>   <span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-68"></a>		      <span class='layout'>}</span>
+<a name="line-69"></a>
+<a name="line-70"></a><a name="addAtt"></a><span class='definition'>addAtt</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
+<a name="line-71"></a><span class='definition'>addAtt</span> <span class='varid'>x</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>attributes</span> <span class='varid'>s</span><span class='layout'>}</span>
+<a name="line-72"></a>
+<a name="line-73"></a><a name="addCont"></a><span class='definition'>addCont</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
+<a name="line-74"></a><span class='definition'>addCont</span> <span class='varid'>x</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>}</span>
+<a name="line-75"></a>
+<a name="line-76"></a><a name="dropCont"></a><span class='definition'>dropCont</span>	<span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span>
+<a name="line-77"></a><span class='definition'>dropCont</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-78"></a>
+<a name="line-79"></a><a name="getAtt"></a><span class='definition'>getAtt</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>
+<a name="line-80"></a><span class='definition'>getAtt</span> <span class='varid'>name</span> <span class='varid'>s</span>
+<a name="line-81"></a>    <span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>$</span>
+<a name="line-82"></a>      <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>attributes</span>
+<a name="line-83"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-84"></a>	      <span class='varid'>isAttr</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>hasName</span> <span class='varid'>name</span>
+<a name="line-85"></a>	    <span class='layout'>)</span> <span class='varid'>s</span>
+<a name="line-86"></a>
+<a name="line-87"></a><a name="getCont"></a><span class='definition'>getCont</span>		<span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>
+<a name="line-88"></a><span class='definition'>getCont</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>.</span> <span class='varid'>contents</span> <span class='varop'>$</span> <span class='varid'>s</span>
+<a name="line-89"></a>
+<a name="line-90"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-91"></a>
+<a name="line-92"></a><span class='comment'>-- | conversion of an arbitrary value into an XML document tree.</span>
+<a name="line-93"></a><span class='comment'>--</span>
+<a name="line-94"></a><span class='comment'>-- The pickler, first parameter, controls the conversion process.</span>
+<a name="line-95"></a><span class='comment'>-- Result is a complete document tree including a root node</span>
+<a name="line-96"></a>
+<a name="line-97"></a><a name="pickleDoc"></a><span class='definition'>pickleDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span>
+<a name="line-98"></a><span class='definition'>pickleDoc</span> <span class='varid'>p</span> <span class='varid'>v</span>
+<a name="line-99"></a>    <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkRoot</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-100"></a>    <span class='keyword'>where</span>
+<a name="line-101"></a>    <span class='varid'>st</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>v</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>
+<a name="line-102"></a>
+<a name="line-103"></a><span class='comment'>-- | Conversion of an XML document tree into an arbitrary data type</span>
+<a name="line-104"></a><span class='comment'>--</span>
+<a name="line-105"></a><span class='comment'>-- The inverse of 'pickleDoc'.</span>
+<a name="line-106"></a><span class='comment'>-- This law should hold for all picklers: @ unpickle px . pickle px $ v == Just v @.</span>
+<a name="line-107"></a><span class='comment'>-- Not every possible combination of picklers make sense.</span>
+<a name="line-108"></a><span class='comment'>-- For reconverting a value from an XML tree, is becomes neccessary,</span>
+<a name="line-109"></a><span class='comment'>-- to introduce \"enough\" markup for unpickling the value</span>
+<a name="line-110"></a>
+<a name="line-111"></a><a name="unpickleDoc"></a><span class='definition'>unpickleDoc</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='varid'>a</span>
+<a name="line-112"></a><span class='definition'>unpickleDoc</span> <span class='varid'>p</span> <span class='varid'>t</span>
+<a name="line-113"></a>    <span class='keyglyph'>|</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isRoot</span> <span class='varid'>t</span>
+<a name="line-114"></a>	<span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varop'>$</span>  <span class='varid'>t</span>
+<a name="line-115"></a>				   <span class='layout'>,</span> <span class='varid'>contents</span>   <span class='keyglyph'>=</span>            <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>
+<a name="line-116"></a>				   <span class='layout'>}</span>
+<a name="line-117"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
+<a name="line-118"></a>	<span class='keyglyph'>=</span> <span class='varid'>unpickleDoc</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkRoot</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span><span class='layout'>)</span>
+<a name="line-119"></a>
+<a name="line-120"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-121"></a>
+<a name="line-122"></a><span class='comment'>-- | The zero pickler</span>
+<a name="line-123"></a><span class='comment'>--</span>
+<a name="line-124"></a><span class='comment'>-- Encodes nothing, fails always during unpickling</span>
+<a name="line-125"></a>
+<a name="line-126"></a><a name="xpZero"></a><span class='definition'>xpZero</span>			<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-127"></a><span class='definition'>xpZero</span>			<span class='keyglyph'>=</span>  <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='varid'>snd</span>
+<a name="line-128"></a>			      <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
+<a name="line-129"></a>			      <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scNull</span>
+<a name="line-130"></a>			      <span class='layout'>}</span>
+<a name="line-131"></a>
+<a name="line-132"></a><span class='comment'>-- unit pickler</span>
+<a name="line-133"></a>
+<a name="line-134"></a><a name="xpUnit"></a><span class='definition'>xpUnit</span>			<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>()</span>
+<a name="line-135"></a><span class='definition'>xpUnit</span>			<span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='conid'>()</span>
+<a name="line-136"></a>
+<a name="line-137"></a><span class='comment'>-- | Lift a value to a pickler</span>
+<a name="line-138"></a><span class='comment'>--</span>
+<a name="line-139"></a><span class='comment'>-- When pickling, nothing is encoded, when unpickling, the given value is inserted.</span>
+<a name="line-140"></a><span class='comment'>-- This pickler always succeeds.</span>
+<a name="line-141"></a>
+<a name="line-142"></a><a name="xpLift"></a><span class='definition'>xpLift</span>			<span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-143"></a><span class='definition'>xpLift</span> <span class='varid'>x</span>		<span class='keyglyph'>=</span>  <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='varid'>snd</span>
+<a name="line-144"></a>			      <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
+<a name="line-145"></a>			      <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scEmpty</span>
+<a name="line-146"></a>			      <span class='layout'>}</span>
+<a name="line-147"></a>
+<a name="line-148"></a><span class='comment'>-- | Lift a Maybe value to a pickler.</span>
+<a name="line-149"></a><span class='comment'>--</span>
+<a name="line-150"></a><span class='comment'>-- @Nothing@ is mapped to the zero pickler, @Just x@ is pickled with @xpLift x@.</span>
+<a name="line-151"></a>
+<a name="line-152"></a><a name="xpLiftMaybe"></a><span class='definition'>xpLiftMaybe</span>		<span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-153"></a><span class='definition'>xpLiftMaybe</span> <span class='varid'>v</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe'</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='varid'>scEmpty</span> <span class='layout'>}</span>
+<a name="line-154"></a>    <span class='keyword'>where</span>
+<a name="line-155"></a>    <span class='varid'>xpLiftMaybe'</span> <span class='conid'>Nothing</span>	<span class='keyglyph'>=</span> <span class='varid'>xpZero</span>
+<a name="line-156"></a>    <span class='varid'>xpLiftMaybe'</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> 	<span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='varid'>x</span>
+<a name="line-157"></a>
+<a name="line-158"></a>
+<a name="line-159"></a><span class='comment'>-- | pickle\/unpickle combinator for sequence and choice.</span>
+<a name="line-160"></a><span class='comment'>--</span>
+<a name="line-161"></a><span class='comment'>-- When the first unpickler fails,</span>
+<a name="line-162"></a><span class='comment'>-- the second one is taken, else the third one configured with the result from the first</span>
+<a name="line-163"></a><span class='comment'>-- is taken. This pickler is a generalisation for 'xpSeq' and 'xpChoice' .</span>
+<a name="line-164"></a><span class='comment'>--</span>
+<a name="line-165"></a><span class='comment'>-- The schema must be attached later, e.g. in xpPair or other higher level combinators</span>
+<a name="line-166"></a>
+<a name="line-167"></a><a name="xpCondSeq"></a><span class='definition'>xpCondSeq</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
+<a name="line-168"></a><span class='definition'>xpCondSeq</span> <span class='varid'>pd</span> <span class='varid'>f</span> <span class='varid'>pa</span> <span class='varid'>k</span>
+<a name="line-169"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-170"></a>	                   <span class='keyword'>let</span>
+<a name="line-171"></a>			   <span class='varid'>a</span>  <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>b</span>
+<a name="line-172"></a>			   <span class='varid'>pb</span> <span class='keyglyph'>=</span> <span class='varid'>k</span> <span class='varid'>a</span>
+<a name="line-173"></a>			   <span class='keyword'>in</span>
+<a name="line-174"></a>			   <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>appPickle</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-175"></a>			 <span class='layout'>)</span>
+<a name="line-176"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-177"></a>			   <span class='keyword'>let</span>
+<a name="line-178"></a>			   <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varid'>s</span>
+<a name="line-179"></a>			   <span class='keyword'>in</span>
+<a name="line-180"></a>			   <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>
+<a name="line-181"></a>			   <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>appUnPickle</span> <span class='varid'>pd</span>     <span class='varid'>s</span>
+<a name="line-182"></a>			   <span class='conid'>Just</span> <span class='varid'>a'</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>appUnPickle</span> <span class='layout'>(</span><span class='varid'>k</span> <span class='varid'>a'</span><span class='layout'>)</span> <span class='varid'>s'</span>
+<a name="line-183"></a>			 <span class='layout'>)</span>
+<a name="line-184"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>undefined</span>
+<a name="line-185"></a>	 <span class='layout'>}</span>
+<a name="line-186"></a>
+<a name="line-187"></a>
+<a name="line-188"></a><span class='comment'>-- | Combine two picklers sequentially.</span>
+<a name="line-189"></a><span class='comment'>--</span>
+<a name="line-190"></a><span class='comment'>-- If the first fails during</span>
+<a name="line-191"></a><span class='comment'>-- unpickling, the whole unpickler fails</span>
+<a name="line-192"></a>
+<a name="line-193"></a><a name="xpSeq"></a><span class='definition'>xpSeq</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
+<a name="line-194"></a><span class='definition'>xpSeq</span>	<span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>xpZero</span>
+<a name="line-195"></a>
+<a name="line-196"></a>
+<a name="line-197"></a><span class='comment'>-- | combine tow picklers with a choice</span>
+<a name="line-198"></a><span class='comment'>--</span>
+<a name="line-199"></a><span class='comment'>-- Run two picklers in sequence like with xpSeq.</span>
+<a name="line-200"></a><span class='comment'>-- When during unpickling the first one fails,</span>
+<a name="line-201"></a><span class='comment'>-- an alternative pickler (first argument) is applied.</span>
+<a name="line-202"></a><span class='comment'>-- This pickler is only used as combinator for unpickling.</span>
+<a name="line-203"></a> 
+<a name="line-204"></a><a name="xpChoice"></a><span class='definition'>xpChoice</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
+<a name="line-205"></a><span class='definition'>xpChoice</span> <span class='varid'>pb</span>	<span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>pb</span> <span class='varid'>undefined</span>
+<a name="line-206"></a>
+<a name="line-207"></a>
+<a name="line-208"></a><span class='comment'>-- | map value into another domain and apply pickler there</span>
+<a name="line-209"></a><span class='comment'>--</span>
+<a name="line-210"></a><span class='comment'>-- One of the most often used picklers.</span>
+<a name="line-211"></a>
+<a name="line-212"></a><a name="xpWrap"></a><span class='definition'>xpWrap</span>			<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
+<a name="line-213"></a><span class='definition'>xpWrap</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>
+<a name="line-214"></a>
+<a name="line-215"></a><span class='comment'>-- | like 'xpWrap', but if the inverse mapping is undefined, the unpickler fails</span>
+<a name="line-216"></a><span class='comment'>--</span>
+<a name="line-217"></a><span class='comment'>-- Map a value into another domain. If the inverse mapping is</span>
+<a name="line-218"></a><span class='comment'>-- undefined (Nothing), the unpickler fails</span>
+<a name="line-219"></a>
+<a name="line-220"></a><a name="xpWrapMaybe"></a><span class='definition'>xpWrapMaybe</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span>
+<a name="line-221"></a><span class='definition'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>
+<a name="line-222"></a>
+<a name="line-223"></a><span class='comment'>-- | pickle a pair of values sequentially</span>
+<a name="line-224"></a><span class='comment'>--</span>
+<a name="line-225"></a><span class='comment'>-- Used for pairs or together with wrap for pickling</span>
+<a name="line-226"></a><span class='comment'>-- algebraic data types with two components</span>
+<a name="line-227"></a>
+<a name="line-228"></a><a name="xpPair"></a><span class='definition'>xpPair</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span>
+<a name="line-229"></a><span class='definition'>xpPair</span> <span class='varid'>pa</span> <span class='varid'>pb</span>
+<a name="line-230"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpSeq</span> <span class='varid'>fst</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-231"></a>        <span class='varid'>xpSeq</span> <span class='varid'>snd</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-232"></a>        <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-233"></a>      <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scSeq</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pb</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-234"></a>
+<a name="line-235"></a><span class='comment'>-- | Like 'xpPair' but for triples</span>
+<a name="line-236"></a>
+<a name="line-237"></a><a name="xpTriple"></a><span class='definition'>xpTriple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
+<a name="line-238"></a><span class='definition'>xpTriple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span>
+<a name="line-239"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toTriple</span><span class='layout'>,</span> <span class='varid'>fromTriple</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='varid'>pc</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-240"></a>    <span class='keyword'>where</span>
+<a name="line-241"></a>    <span class='varid'>toTriple</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span>
+<a name="line-242"></a>    <span class='varid'>fromTriple</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-243"></a>
+<a name="line-244"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 4-tuples</span>
+<a name="line-245"></a>
+<a name="line-246"></a><a name="xp4Tuple"></a><span class='definition'>xp4Tuple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span>
+<a name="line-247"></a><span class='definition'>xp4Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span>
+<a name="line-248"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuad</span><span class='layout'>,</span> <span class='varid'>fromQuad</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='varid'>pd</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-249"></a>    <span class='keyword'>where</span>
+<a name="line-250"></a>    <span class='varid'>toQuad</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span>  <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span>  <span class='layout'>)</span>
+<a name="line-251"></a>    <span class='varid'>fromQuad</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span>   <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span>  <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-252"></a>
+<a name="line-253"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 5-tuples</span>
+<a name="line-254"></a>
+<a name="line-255"></a><a name="xp5Tuple"></a><span class='definition'>xp5Tuple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span>
+<a name="line-256"></a><span class='definition'>xp5Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span>
+<a name="line-257"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuint</span><span class='layout'>,</span> <span class='varid'>fromQuint</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='varid'>pe</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-258"></a>    <span class='keyword'>where</span>
+<a name="line-259"></a>    <span class='varid'>toQuint</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span>  <span class='varid'>c</span><span class='layout'>,</span>  <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span>   <span class='layout'>)</span>
+<a name="line-260"></a>    <span class='varid'>fromQuint</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span>   <span class='varid'>c</span><span class='layout'>,</span>   <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span>   <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-261"></a>
+<a name="line-262"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 6-tuples</span>
+<a name="line-263"></a>
+<a name="line-264"></a><a name="xp6Tuple"></a><span class='definition'>xp6Tuple</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>f</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span>
+<a name="line-265"></a><span class='definition'>xp6Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span> <span class='varid'>pf</span>
+<a name="line-266"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toSix</span><span class='layout'>,</span> <span class='varid'>fromSix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pe</span> <span class='varid'>pf</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-267"></a>    <span class='keyword'>where</span>
+<a name="line-268"></a>    <span class='varid'>toSix</span>   <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>  <span class='varid'>b</span><span class='layout'>,</span>  <span class='varid'>c</span><span class='layout'>,</span>  <span class='varid'>d</span><span class='layout'>,</span>  <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span>    <span class='layout'>)</span>
+<a name="line-269"></a>    <span class='varid'>fromSix</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span>   <span class='varid'>b</span><span class='layout'>,</span>   <span class='varid'>c</span><span class='layout'>,</span>   <span class='varid'>d</span><span class='layout'>,</span>   <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span>     <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-270"></a>
+<a name="line-271"></a><span class='comment'>-- | Pickle a string into an XML text node</span>
+<a name="line-272"></a><span class='comment'>--</span>
+<a name="line-273"></a><span class='comment'>-- One of the most often used primitive picklers. Attention:</span>
+<a name="line-274"></a><span class='comment'>-- For pickling empty strings use 'xpText0'. If the text has a more</span>
+<a name="line-275"></a><span class='comment'>-- specific datatype than xsd:string, use 'xpTextDT'</span>
+<a name="line-276"></a>
+<a name="line-277"></a><a name="xpText"></a><span class='definition'>xpText</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>
+<a name="line-278"></a><span class='definition'>xpText</span>	<span class='keyglyph'>=</span> <span class='varid'>xpTextDT</span> <span class='varid'>scString1</span>
+<a name="line-279"></a>
+<a name="line-280"></a><span class='comment'>-- | Pickle a string into an XML text node</span>
+<a name="line-281"></a><span class='comment'>--</span>
+<a name="line-282"></a><span class='comment'>-- Text pickler with a description of the structure of the text</span>
+<a name="line-283"></a><span class='comment'>-- by a schema. A schema for a data type can be defined by 'Text.XML.HXT.Arrow.Pickle.Schema.scDT'.</span>
+<a name="line-284"></a><span class='comment'>-- In 'Text.XML.HXT.Arrow.Pickle.Schema' there are some more functions for creating</span>
+<a name="line-285"></a><span class='comment'>-- simple datatype descriptions.</span>
+<a name="line-286"></a>
+<a name="line-287"></a><a name="xpTextDT"></a><span class='definition'>xpTextDT</span>	<span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='conid'>String</span>
+<a name="line-288"></a><span class='definition'>xpTextDT</span> <span class='varid'>sc</span>
+<a name="line-289"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>st</span>
+<a name="line-290"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleString</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-291"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>sc</span>
+<a name="line-292"></a>	 <span class='layout'>}</span>
+<a name="line-293"></a>    <span class='keyword'>where</span>
+<a name="line-294"></a>    <span class='varid'>unpickleString</span> <span class='varid'>st</span>
+<a name="line-295"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-296"></a>	  <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>
+<a name="line-297"></a>	  <span class='varid'>s</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varid'>t</span>
+<a name="line-298"></a>	  <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-299"></a>
+<a name="line-300"></a><span class='comment'>-- | Pickle a possibly empty string into an XML node.</span>
+<a name="line-301"></a><span class='comment'>--</span>
+<a name="line-302"></a><span class='comment'>-- Must be used in all places, where empty strings are legal values.</span>
+<a name="line-303"></a><span class='comment'>-- If the content of an element can be an empty string, this string disapears</span>
+<a name="line-304"></a><span class='comment'>-- during storing the DOM into a document and reparse the document.</span>
+<a name="line-305"></a><span class='comment'>-- So the empty text node becomes nothing, and the pickler must deliver an empty string,</span>
+<a name="line-306"></a><span class='comment'>-- if there is no text node in the document.</span>
+<a name="line-307"></a>
+<a name="line-308"></a><a name="xpText0"></a><span class='definition'>xpText0</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>
+<a name="line-309"></a><span class='definition'>xpText0</span>	<span class='keyglyph'>=</span> <span class='varid'>xpText0DT</span> <span class='varid'>scString1</span>
+<a name="line-310"></a>
+<a name="line-311"></a><span class='comment'>-- | Pickle a possibly empty string with a datatype description into an XML node.</span>
+<a name="line-312"></a><span class='comment'>--</span>
+<a name="line-313"></a><span class='comment'>-- Like 'xpText0' but with extra Parameter for datatype description as in 'xpTextDT'.</span>
+<a name="line-314"></a>
+<a name="line-315"></a><a name="xpText0DT"></a><span class='definition'>xpText0DT</span>	<span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='conid'>String</span>
+<a name="line-316"></a><span class='definition'>xpText0DT</span> <span class='varid'>sc</span>
+<a name="line-317"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='str'>""</span><span class='layout'>,</span> <span class='varid'>emptyToNothing</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpTextDT</span> <span class='varid'>sc</span>
+<a name="line-318"></a>    <span class='keyword'>where</span>
+<a name="line-319"></a>    <span class='varid'>emptyToNothing</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>
+<a name="line-320"></a>    <span class='varid'>emptyToNothing</span> <span class='varid'>x</span>  <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>
+<a name="line-321"></a>
+<a name="line-322"></a><span class='comment'>-- | Pickle an arbitrary value by applyling show during pickling</span>
+<a name="line-323"></a><span class='comment'>-- and read during unpickling.</span>
+<a name="line-324"></a><span class='comment'>--</span>
+<a name="line-325"></a><span class='comment'>-- Real pickling is then done with 'xpText'.</span>
+<a name="line-326"></a><span class='comment'>-- One of the most often used pimitive picklers. Applicable for all</span>
+<a name="line-327"></a><span class='comment'>-- types which are instances of @Read@ and @Show@</span>
+<a name="line-328"></a>
+<a name="line-329"></a><a name="xpPrim"></a><span class='definition'>xpPrim</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Read</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-330"></a><span class='definition'>xpPrim</span>
+<a name="line-331"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>readMaybe</span><span class='layout'>,</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='varid'>xpText</span>
+<a name="line-332"></a>    <span class='keyword'>where</span>
+<a name="line-333"></a>    <span class='varid'>readMaybe</span>	<span class='keyglyph'>::</span> <span class='conid'>Read</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='varid'>a</span>
+<a name="line-334"></a>    <span class='varid'>readMaybe</span> <span class='varid'>str</span>
+<a name="line-335"></a>	<span class='keyglyph'>=</span> <span class='varid'>val</span> <span class='layout'>(</span><span class='varid'>reads</span> <span class='varid'>str</span><span class='layout'>)</span>
+<a name="line-336"></a>	<span class='keyword'>where</span>
+<a name="line-337"></a>	<span class='varid'>val</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='str'>""</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>
+<a name="line-338"></a>	<span class='varid'>val</span> <span class='keyword'>_</span>        <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>
+<a name="line-339"></a>
+<a name="line-340"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-341"></a>
+<a name="line-342"></a><span class='comment'>-- | Pickle an XmlTree by just adding it</span>
+<a name="line-343"></a><span class='comment'>--</span>
+<a name="line-344"></a><span class='comment'>-- Usefull for components of type XmlTree in other data structures</span>
+<a name="line-345"></a>
+<a name="line-346"></a><a name="xpTree"></a><span class='definition'>xpTree</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>XmlTree</span>
+<a name="line-347"></a><span class='definition'>xpTree</span>	<span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>addCont</span> <span class='varid'>s</span> <span class='varid'>st</span>
+<a name="line-348"></a>	     <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleTree</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-349"></a>	     <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='conid'>Any</span>
+<a name="line-350"></a>	     <span class='layout'>}</span>
+<a name="line-351"></a>    <span class='keyword'>where</span>
+<a name="line-352"></a>    <span class='varid'>unpickleTree</span> <span class='varid'>st</span>
+<a name="line-353"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-354"></a>	  <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>
+<a name="line-355"></a>	  <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>t</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-356"></a>
+<a name="line-357"></a><span class='comment'>-- | Pickle a whole list of XmlTrees by just adding the list, unpickle is done by taking all element contens.</span>
+<a name="line-358"></a><span class='comment'>--</span>
+<a name="line-359"></a><span class='comment'>-- This pickler should always combined with 'xpElem' for taking the whole contents of an element.</span>
+<a name="line-360"></a>
+<a name="line-361"></a><a name="xpTrees"></a><span class='definition'>xpTrees</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>
+<a name="line-362"></a><span class='definition'>xpTrees</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>xpTree</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='conid'>Any</span> <span class='layout'>}</span>
+<a name="line-363"></a>
+<a name="line-364"></a><span class='comment'>-- | Pickle a string representing XML contents by inserting the tree representation into the XML document.</span>
+<a name="line-365"></a><span class='comment'>--</span>
+<a name="line-366"></a><span class='comment'>-- Unpickling is done by converting the contents with</span>
+<a name="line-367"></a><span class='comment'>-- 'Text.XML.HXT.Arrow.XmlArrow.xshow' into a string,</span>
+<a name="line-368"></a><span class='comment'>-- pickling is done with 'Text.XML.HXT.Arrow.ReadDocument.xread'</span>
+<a name="line-369"></a>
+<a name="line-370"></a><a name="xpXmlText"></a><span class='definition'>xpXmlText</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>
+<a name="line-371"></a><span class='definition'>xpXmlText</span>
+<a name="line-372"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>showXML</span><span class='layout'>,</span> <span class='varid'>readXML</span> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>xpTrees</span>
+<a name="line-373"></a>    <span class='keyword'>where</span>
+<a name="line-374"></a>    <span class='varid'>showXML</span> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='varid'>unlistA</span> <span class='layout'>)</span>
+<a name="line-375"></a>    <span class='varid'>readXML</span> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='varid'>xread</span>
+<a name="line-376"></a>
+<a name="line-377"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-378"></a>
+<a name="line-379"></a><span class='comment'>-- | Encoding of optional data by ignoring the Nothing case during pickling</span>
+<a name="line-380"></a><span class='comment'>-- and relying on failure during unpickling to recompute the Nothing case</span>
+<a name="line-381"></a><span class='comment'>--</span>
+<a name="line-382"></a><span class='comment'>-- The default pickler for Maybe types</span>
+<a name="line-383"></a>
+<a name="line-384"></a><a name="xpOption"></a><span class='definition'>xpOption</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>
+<a name="line-385"></a><span class='definition'>xpOption</span> <span class='varid'>pa</span>
+<a name="line-386"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-387"></a>			   <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>
+<a name="line-388"></a>			   <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>st</span>
+<a name="line-389"></a>			   <span class='conid'>Just</span> <span class='varid'>x</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-390"></a>			 <span class='layout'>)</span>
+<a name="line-391"></a>
+<a name="line-392"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>
+<a name="line-393"></a>	                 <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='conid'>Just</span><span class='layout'>)</span>
+<a name="line-394"></a>
+<a name="line-395"></a>         <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
+<a name="line-396"></a>	 <span class='layout'>}</span>
+<a name="line-397"></a>
+<a name="line-398"></a><span class='comment'>-- | Optional conversion with default value</span>
+<a name="line-399"></a><span class='comment'>--</span>
+<a name="line-400"></a><span class='comment'>-- The default value is not encoded in the XML document,</span>
+<a name="line-401"></a><span class='comment'>-- during unpickling the default value is inserted if the pickler fails</span>
+<a name="line-402"></a>
+<a name="line-403"></a><a name="xpDefault"></a><span class='definition'>xpDefault</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Eq</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-404"></a><span class='definition'>xpDefault</span> <span class='varid'>df</span>
+<a name="line-405"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>fromMaybe</span> <span class='varid'>df</span>
+<a name="line-406"></a>	     <span class='layout'>,</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>if</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>df</span> <span class='keyword'>then</span> <span class='conid'>Nothing</span> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='varid'>x</span>
+<a name="line-407"></a>	     <span class='layout'>)</span> <span class='varop'>.</span>
+<a name="line-408"></a>      <span class='varid'>xpOption</span>
+<a name="line-409"></a>
+<a name="line-410"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-411"></a>
+<a name="line-412"></a><span class='comment'>-- | Encoding of list values by pickling all list elements sequentially.</span>
+<a name="line-413"></a><span class='comment'>--</span>
+<a name="line-414"></a><span class='comment'>-- Unpickler relies on failure for detecting the end of the list.</span>
+<a name="line-415"></a><span class='comment'>-- The standard pickler for lists. Can also be used in combination with 'xpWrap'</span>
+<a name="line-416"></a><span class='comment'>-- for constructing set and map picklers</span>
+<a name="line-417"></a>
+<a name="line-418"></a><a name="xpList"></a><span class='definition'>xpList</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>
+<a name="line-419"></a><span class='definition'>xpList</span> <span class='varid'>pa</span>
+<a name="line-420"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-421"></a>			   <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>
+<a name="line-422"></a>			   <span class='conid'>[]</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>st</span>
+<a name="line-423"></a>			   <span class='keyword'>_</span><span class='conop'>:</span><span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>appPickle</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-424"></a>			 <span class='layout'>)</span>
+<a name="line-425"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>
+<a name="line-426"></a>                         <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='varid'>pa</span>
+<a name="line-427"></a>	                   <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xpSeq</span> <span class='varid'>id</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>xs</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-428"></a>
+<a name="line-429"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scList</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
+<a name="line-430"></a>	 <span class='layout'>}</span>
+<a name="line-431"></a>      <span class='keyword'>where</span>
+<a name="line-432"></a>      <span class='varid'>pc</span> <span class='keyglyph'>=</span> <span class='varid'>xpSeq</span> <span class='varid'>head</span>  <span class='varid'>pa</span>       <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-433"></a>	   <span class='varid'>xpSeq</span> <span class='varid'>tail</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>xs</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-434"></a>	   <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-435"></a>
+<a name="line-436"></a><span class='comment'>-- | Encoding of a none empty list of values</span>
+<a name="line-437"></a><span class='comment'>--</span>
+<a name="line-438"></a><span class='comment'>-- Attention: when calling this pickler with an empty list,</span>
+<a name="line-439"></a><span class='comment'>-- an internal error \"head of empty list is raised\".</span>
+<a name="line-440"></a>
+<a name="line-441"></a><a name="xpList1"></a><span class='definition'>xpList1</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>
+<a name="line-442"></a><span class='definition'>xpList1</span> <span class='varid'>pa</span>
+<a name="line-443"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span>
+<a name="line-444"></a>	       <span class='layout'>,</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span>
+<a name="line-445"></a>	       <span class='layout'>)</span> <span class='varop'>$</span>
+<a name="line-446"></a>	<span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span>
+<a name="line-447"></a>      <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scList1</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-448"></a>
+<a name="line-449"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-450"></a>
+<a name="line-451"></a><span class='comment'>-- | Standard pickler for maps</span>
+<a name="line-452"></a><span class='comment'>--</span>
+<a name="line-453"></a><span class='comment'>-- This pickler converts a map into a list of pairs.</span>
+<a name="line-454"></a><span class='comment'>-- All key value pairs are mapped to an element with name (1.arg),</span>
+<a name="line-455"></a><span class='comment'>-- the key is encoded as an attribute named by the 2. argument,</span>
+<a name="line-456"></a><span class='comment'>-- the 3. arg is the pickler for the keys, the last one for the values</span>
+<a name="line-457"></a>
+<a name="line-458"></a><a name="xpMap"></a><span class='definition'>xpMap</span>	<span class='keyglyph'>::</span> <span class='conid'>Ord</span> <span class='varid'>k</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>k</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Map</span> <span class='varid'>k</span> <span class='varid'>v</span><span class='layout'>)</span>
+<a name="line-459"></a><span class='definition'>xpMap</span> <span class='varid'>en</span> <span class='varid'>an</span> <span class='varid'>xpk</span> <span class='varid'>xpv</span>
+<a name="line-460"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span>
+<a name="line-461"></a>	     <span class='layout'>,</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>toList</span>
+<a name="line-462"></a>	     <span class='layout'>)</span> <span class='varop'>$</span>
+<a name="line-463"></a>      <span class='varid'>xpList</span> <span class='varop'>$</span>
+<a name="line-464"></a>      <span class='varid'>xpElem</span> <span class='varid'>en</span> <span class='varop'>$</span>
+<a name="line-465"></a>      <span class='varid'>xpPair</span> <span class='layout'>(</span> <span class='varid'>xpAttr</span> <span class='varid'>an</span> <span class='varop'>$</span> <span class='varid'>xpk</span> <span class='layout'>)</span> <span class='varid'>xpv</span>
+<a name="line-466"></a>
+<a name="line-467"></a>
+<a name="line-468"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-469"></a>
+<a name="line-470"></a><span class='comment'>-- | Pickler for sum data types.</span>
+<a name="line-471"></a><span class='comment'>--</span>
+<a name="line-472"></a><span class='comment'>-- Every constructor is mapped to an index into the list of picklers.</span>
+<a name="line-473"></a><span class='comment'>-- The index is used only during pickling, not during unpickling, there the 1. match is taken</span>
+<a name="line-474"></a>
+<a name="line-475"></a><a name="xpAlt"></a><span class='definition'>xpAlt</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>PU</span> <span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-476"></a><span class='definition'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps</span>
+<a name="line-477"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-478"></a>			   <span class='keyword'>let</span>
+<a name="line-479"></a>			   <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='varid'>ps</span> <span class='varop'>!!</span> <span class='layout'>(</span><span class='varid'>tag</span> <span class='varid'>a</span><span class='layout'>)</span>
+<a name="line-480"></a>			   <span class='keyword'>in</span>
+<a name="line-481"></a>			   <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-482"></a>			 <span class='layout'>)</span>
+<a name="line-483"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>
+<a name="line-484"></a>	                 <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>ps</span> <span class='keyword'>of</span>
+<a name="line-485"></a>			   <span class='conid'>[]</span>     <span class='keyglyph'>-&gt;</span> <span class='varid'>xpZero</span>
+<a name="line-486"></a>			   <span class='varid'>pa</span><span class='conop'>:</span><span class='varid'>ps1</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps1</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='varid'>xpLift</span>
+<a name="line-487"></a>			 <span class='layout'>)</span>
+<a name="line-488"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scAlts</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>theSchema</span> <span class='varid'>ps</span><span class='layout'>)</span>
+<a name="line-489"></a>	 <span class='layout'>}</span>
+<a name="line-490"></a>
+<a name="line-491"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-492"></a>
+<a name="line-493"></a><span class='comment'>-- | Pickler for wrapping\/unwrapping data into an XML element</span>
+<a name="line-494"></a><span class='comment'>--</span>
+<a name="line-495"></a><span class='comment'>-- Extra parameter is the element name. THE pickler for constructing</span>
+<a name="line-496"></a><span class='comment'>-- nested structures</span>
+<a name="line-497"></a><span class='comment'>--</span>
+<a name="line-498"></a><span class='comment'>-- Example:</span>
+<a name="line-499"></a><span class='comment'>--</span>
+<a name="line-500"></a><span class='comment'>-- &gt; xpElem "number" $ xpickle</span>
+<a name="line-501"></a><span class='comment'>--</span>
+<a name="line-502"></a><span class='comment'>-- will map an (42::Int) onto</span>
+<a name="line-503"></a><span class='comment'>--</span>
+<a name="line-504"></a><span class='comment'>-- &gt; &lt;number&gt;42&lt;/number&gt;</span>
+<a name="line-505"></a>
+<a name="line-506"></a><a name="xpElem"></a><span class='definition'>xpElem</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-507"></a><span class='definition'>xpElem</span> <span class='varid'>name</span> <span class='varid'>pa</span>
+<a name="line-508"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-509"></a>			   <span class='keyword'>let</span>
+<a name="line-510"></a>	                   <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>
+<a name="line-511"></a>			   <span class='keyword'>in</span>
+<a name="line-512"></a>			   <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st'</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>
+<a name="line-513"></a>			 <span class='layout'>)</span>
+<a name="line-514"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleElement</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-515"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scElem</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
+<a name="line-516"></a>	 <span class='layout'>}</span>
+<a name="line-517"></a>      <span class='keyword'>where</span>
+<a name="line-518"></a>      <span class='varid'>unpickleElement</span> <span class='varid'>st</span>
+<a name="line-519"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-520"></a>	    <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>
+<a name="line-521"></a>	    <span class='varid'>n</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getElemName</span> <span class='varid'>t</span>
+<a name="line-522"></a>	    <span class='keyword'>if</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span> <span class='varop'>/=</span> <span class='varid'>name</span>
+<a name="line-523"></a>	       <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='str'>"element name does not match"</span>
+<a name="line-524"></a>	       <span class='keyword'>else</span> <span class='keyword'>do</span>
+<a name="line-525"></a>		    <span class='keyword'>let</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>
+<a name="line-526"></a>		    <span class='varid'>al</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varid'>t</span>
+<a name="line-527"></a>		    <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span><span class='layout'>}</span>
+<a name="line-528"></a>		    <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-529"></a>
+<a name="line-530"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-531"></a>
+<a name="line-532"></a><span class='comment'>-- | Pickler for wrapping\/unwrapping data into an XML element with an attribute with given value</span>
+<a name="line-533"></a><span class='comment'>--</span>
+<a name="line-534"></a><span class='comment'>-- To make XML structures flexible but limit the number of different elements, it's sometimes</span>
+<a name="line-535"></a><span class='comment'>-- useful to use a kind of generic element with a key value structure</span>
+<a name="line-536"></a><span class='comment'>--</span>
+<a name="line-537"></a><span class='comment'>-- Example:</span>
+<a name="line-538"></a><span class='comment'>--</span>
+<a name="line-539"></a><span class='comment'>-- &gt; &lt;attr name="key1"&gt;value1&lt;/attr&gt;</span>
+<a name="line-540"></a><span class='comment'>-- &gt; &lt;attr name="key2"&gt;value2&lt;/attr&gt;</span>
+<a name="line-541"></a><span class='comment'>-- &gt; &lt;attr name="key3"&gt;value3&lt;/attr&gt;</span>
+<a name="line-542"></a><span class='comment'>--</span>
+<a name="line-543"></a><span class='comment'>-- the Haskell datatype may look like this</span>
+<a name="line-544"></a><span class='comment'>--</span>
+<a name="line-545"></a><span class='comment'>-- &gt; type T = T { key1 :: Int ; key2 :: String ; key3 :: Double }</span>
+<a name="line-546"></a><span class='comment'>--</span>
+<a name="line-547"></a><span class='comment'>-- Then the picker for that type looks like this</span>
+<a name="line-548"></a><span class='comment'>--</span>
+<a name="line-549"></a><span class='comment'>-- &gt; xpT :: PU T</span>
+<a name="line-550"></a><span class='comment'>-- &gt; xpT = xpWrap ( uncurry3 T, \ t -&gt; (key1 t, key2 t, key3 t) ) $</span>
+<a name="line-551"></a><span class='comment'>-- &gt;       xpTriple (xpElemWithAttrValue "attr" "name" "key1" $ xpickle)</span>
+<a name="line-552"></a><span class='comment'>-- &gt;                (xpElemWithAttrValue "attr" "name" "key2" $ xpText0)</span>
+<a name="line-553"></a><span class='comment'>-- &gt;                (xpElemWithAttrValue "attr" "name" "key3" $ xpickle)</span>
+<a name="line-554"></a>
+<a name="line-555"></a><a name="xpElemWithAttrValue"></a><span class='definition'>xpElemWithAttrValue</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-556"></a><span class='definition'>xpElemWithAttrValue</span> <span class='varid'>name</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='varid'>pa</span>
+<a name="line-557"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-558"></a>			   <span class='keyword'>let</span>
+<a name="line-559"></a>	                   <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa'</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>
+<a name="line-560"></a>			   <span class='keyword'>in</span>
+<a name="line-561"></a>			   <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st'</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>
+<a name="line-562"></a>			 <span class='layout'>)</span>
+<a name="line-563"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleElement</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-564"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scElem</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa'</span><span class='layout'>)</span>
+<a name="line-565"></a>	 <span class='layout'>}</span>
+<a name="line-566"></a>      <span class='keyword'>where</span>
+<a name="line-567"></a>      <span class='varid'>pa'</span> <span class='keyglyph'>=</span> <span class='varid'>xpAddFixedAttr</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='varop'>$</span> <span class='varid'>pa</span>
+<a name="line-568"></a>      <span class='varid'>noMatch</span> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>isElem</span>
+<a name="line-569"></a>			       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-570"></a>			       <span class='varid'>hasName</span> <span class='varid'>name</span>
+<a name="line-571"></a>			       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-572"></a>			       <span class='varid'>hasAttrValue</span> <span class='varid'>an</span> <span class='layout'>(</span><span class='varop'>==</span><span class='varid'>av</span><span class='layout'>)</span>
+<a name="line-573"></a>			     <span class='layout'>)</span>
+<a name="line-574"></a>      <span class='varid'>unpickleElement</span> <span class='varid'>st</span>
+<a name="line-575"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-576"></a>	    <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>
+<a name="line-577"></a>	    <span class='keyword'>if</span> <span class='varid'>noMatch</span> <span class='varid'>t</span>
+<a name="line-578"></a>	       <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='str'>"element name or attr value does not match"</span>
+<a name="line-579"></a>	       <span class='keyword'>else</span> <span class='keyword'>do</span>
+<a name="line-580"></a>		    <span class='keyword'>let</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>
+<a name="line-581"></a>		    <span class='varid'>al</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varid'>t</span>
+<a name="line-582"></a>		    <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span><span class='layout'>}</span>
+<a name="line-583"></a>		    <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-584"></a>
+<a name="line-585"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-586"></a>
+<a name="line-587"></a><span class='comment'>-- | Pickler for storing\/retreiving data into\/from an attribute value</span>
+<a name="line-588"></a><span class='comment'>--</span>
+<a name="line-589"></a><span class='comment'>-- The attribute is inserted in the surrounding element constructed by the 'xpElem' pickler</span>
+<a name="line-590"></a>
+<a name="line-591"></a><a name="xpAttr"></a><span class='definition'>xpAttr</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-592"></a><span class='definition'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>pa</span>
+<a name="line-593"></a>    <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span>   <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-594"></a>			   <span class='keyword'>let</span>
+<a name="line-595"></a>			   <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>
+<a name="line-596"></a>			   <span class='keyword'>in</span>
+<a name="line-597"></a>			   <span class='varid'>addAtt</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>
+<a name="line-598"></a>			 <span class='layout'>)</span>
+<a name="line-599"></a>	 <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleAttr</span> <span class='varid'>st</span><span class='layout'>)</span>
+<a name="line-600"></a>	 <span class='layout'>,</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>
+<a name="line-601"></a>	 <span class='layout'>}</span>
+<a name="line-602"></a>      <span class='keyword'>where</span>
+<a name="line-603"></a>      <span class='varid'>unpickleAttr</span> <span class='varid'>st</span>
+<a name="line-604"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-605"></a>	    <span class='varid'>a</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getAtt</span> <span class='varid'>name</span> <span class='varid'>st</span>
+<a name="line-606"></a>	    <span class='keyword'>let</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>a</span>
+<a name="line-607"></a>	    <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>av</span><span class='layout'>}</span>
+<a name="line-608"></a>	    <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>	<span class='comment'>-- attribute is not removed from attribute list,</span>
+<a name="line-609"></a>					<span class='comment'>-- attributes are selected by name</span>
+<a name="line-610"></a>
+<a name="line-611"></a><span class='comment'>-- | Add an optional attribute for an optional value (Maybe a).</span>
+<a name="line-612"></a>
+<a name="line-613"></a><a name="xpAttrImplied"></a><span class='definition'>xpAttrImplied</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>
+<a name="line-614"></a><span class='definition'>xpAttrImplied</span> <span class='varid'>name</span> <span class='varid'>pa</span>
+<a name="line-615"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>pa</span>
+<a name="line-616"></a>
+<a name="line-617"></a><a name="xpAttrFixed"></a><span class='definition'>xpAttrFixed</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='conid'>()</span>
+<a name="line-618"></a><span class='definition'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span>
+<a name="line-619"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>if</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>val</span> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='conid'>Nothing</span>
+<a name="line-620"></a>		    <span class='layout'>,</span> <span class='varid'>const</span> <span class='varid'>val</span>
+<a name="line-621"></a>		    <span class='layout'>)</span> <span class='varop'>$</span>
+<a name="line-622"></a>	<span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>xpText</span>
+<a name="line-623"></a>      <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span>   <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>scFixed</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-624"></a>
+<a name="line-625"></a><span class='comment'>-- | Add an attribute with a fixed value.</span>
+<a name="line-626"></a><span class='comment'>--</span>
+<a name="line-627"></a><span class='comment'>-- Useful e.g. to declare namespaces. Is implemented by 'xpAttrFixed'</span>
+<a name="line-628"></a>
+<a name="line-629"></a><a name="xpAddFixedAttr"></a><span class='definition'>xpAddFixedAttr</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-630"></a><span class='definition'>xpAddFixedAttr</span> <span class='varid'>name</span> <span class='varid'>val</span> <span class='varid'>pa</span>
+<a name="line-631"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>snd</span>
+<a name="line-632"></a>	     <span class='layout'>,</span> <span class='conid'>(,)</span> <span class='conid'>()</span>
+<a name="line-633"></a>	     <span class='layout'>)</span> <span class='varop'>$</span>
+<a name="line-634"></a>      <span class='varid'>xpPair</span> <span class='layout'>(</span><span class='varid'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='varid'>pa</span>
+<a name="line-635"></a>
+<a name="line-636"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-637"></a>
+<a name="line-638"></a><span class='comment'>-- | The class for overloading 'xpickle', the default pickler</span>
+<a name="line-639"></a>
+<a name="line-640"></a><a name="XmlPickler"></a><span class='keyword'>class</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyword'>where</span>
+<a name="line-641"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>
+<a name="line-642"></a>
+<a name="line-643"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Int</span> <span class='keyword'>where</span>
+<a name="line-644"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>
+<a name="line-645"></a>
+<a name="line-646"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Integer</span> <span class='keyword'>where</span>
+<a name="line-647"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>
+<a name="line-648"></a>
+<a name="line-649"></a><span class='comment'>{-
+<a name="line-650"></a>  no instance of XmlPickler Char
+<a name="line-651"></a>  because then every text would be encoded
+<a name="line-652"></a>  char by char, because of the instance for lists
+<a name="line-653"></a>
+<a name="line-654"></a>instance XmlPickler Char where
+<a name="line-655"></a>    xpickle = xpPrim
+<a name="line-656"></a>-}</span>
+<a name="line-657"></a>
+<a name="line-658"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>()</span> <span class='keyword'>where</span>
+<a name="line-659"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpUnit</span>
+<a name="line-660"></a>
+<a name="line-661"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span> <span class='keyword'>where</span>
+<a name="line-662"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPair</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
+<a name="line-663"></a>
+<a name="line-664"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>)</span> <span class='keyword'>where</span>
+<a name="line-665"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpTriple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
+<a name="line-666"></a>
+<a name="line-667"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>)</span> <span class='keyword'>where</span>
+<a name="line-668"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp4Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
+<a name="line-669"></a>
+<a name="line-670"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>,</span><span class='varid'>e</span><span class='layout'>)</span> <span class='keyword'>where</span>
+<a name="line-671"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp5Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>
+<a name="line-672"></a>
+<a name="line-673"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyword'>where</span>
+<a name="line-674"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpList</span> <span class='varid'>xpickle</span>
+<a name="line-675"></a>
+<a name="line-676"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyword'>where</span>
+<a name="line-677"></a>    <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varid'>xpickle</span>
+<a name="line-678"></a>
+<a name="line-679"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle.html b/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow-Pickle.html
@@ -64,185 +64,191 @@
 <a name="line-56"></a>
 <a name="line-57"></a>    <span class='layout'>,</span> <span class='varid'>xp4Tuple</span>
 <a name="line-58"></a>    <span class='layout'>,</span> <span class='varid'>xp5Tuple</span>
-<a name="line-59"></a>    <span class='layout'>,</span> <span class='varid'>xpAddFixedAttr</span>
-<a name="line-60"></a>    <span class='layout'>,</span> <span class='varid'>xpAlt</span>
-<a name="line-61"></a>    <span class='layout'>,</span> <span class='varid'>xpAttr</span>
-<a name="line-62"></a>    <span class='layout'>,</span> <span class='varid'>xpAttrFixed</span>
-<a name="line-63"></a>    <span class='layout'>,</span> <span class='varid'>xpAttrImplied</span>
-<a name="line-64"></a>    <span class='layout'>,</span> <span class='varid'>xpChoice</span>
-<a name="line-65"></a>    <span class='layout'>,</span> <span class='varid'>xpCondSeq</span>
-<a name="line-66"></a>    <span class='layout'>,</span> <span class='varid'>xpElem</span>
-<a name="line-67"></a>    <span class='layout'>,</span> <span class='varid'>xpickle</span>
-<a name="line-68"></a>    <span class='layout'>,</span> <span class='varid'>xpLift</span>
-<a name="line-69"></a>    <span class='layout'>,</span> <span class='varid'>xpLiftMaybe</span>
-<a name="line-70"></a>    <span class='layout'>,</span> <span class='varid'>xpList</span>
-<a name="line-71"></a>    <span class='layout'>,</span> <span class='varid'>xpList1</span>
-<a name="line-72"></a>    <span class='layout'>,</span> <span class='varid'>xpOption</span>
-<a name="line-73"></a>    <span class='layout'>,</span> <span class='varid'>xpPair</span>
-<a name="line-74"></a>    <span class='layout'>,</span> <span class='varid'>xpPrim</span>
-<a name="line-75"></a>    <span class='layout'>,</span> <span class='varid'>xpSeq</span>
-<a name="line-76"></a>    <span class='layout'>,</span> <span class='varid'>xpText</span>
-<a name="line-77"></a>    <span class='layout'>,</span> <span class='varid'>xpText0</span>
-<a name="line-78"></a>    <span class='layout'>,</span> <span class='varid'>xpTextDT</span>
-<a name="line-79"></a>    <span class='layout'>,</span> <span class='varid'>xpText0DT</span>
-<a name="line-80"></a>    <span class='layout'>,</span> <span class='varid'>xpTree</span>
-<a name="line-81"></a>    <span class='layout'>,</span> <span class='varid'>xpTriple</span>
-<a name="line-82"></a>    <span class='layout'>,</span> <span class='varid'>xpUnit</span>
-<a name="line-83"></a>    <span class='layout'>,</span> <span class='varid'>xpWrap</span>
-<a name="line-84"></a>    <span class='layout'>,</span> <span class='varid'>xpWrapMaybe</span>
-<a name="line-85"></a>    <span class='layout'>,</span> <span class='varid'>xpZero</span>
-<a name="line-86"></a>
-<a name="line-87"></a>      <span class='comment'>-- from Text.XML.HXT.Arrow.Pickle.Schema</span>
-<a name="line-88"></a>    <span class='layout'>,</span> <span class='conid'>Schema</span>
-<a name="line-89"></a>    <span class='layout'>,</span> <span class='conid'>Schemas</span>
-<a name="line-90"></a>    <span class='layout'>,</span> <span class='conid'>DataTypeDescr</span>
-<a name="line-91"></a>    <span class='layout'>)</span>
-<a name="line-92"></a><span class='keyword'>where</span>
-<a name="line-93"></a>
-<a name="line-94"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-95"></a>
-<a name="line-96"></a><span class='keyword'>import</span>           <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>
-<a name="line-97"></a>
-<a name="line-98"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
-<a name="line-99"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
-<a name="line-100"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>
-<a name="line-101"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ReadDocument</span>
-<a name="line-102"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>WriteDocument</span>
+<a name="line-59"></a>    <span class='layout'>,</span> <span class='varid'>xp6Tuple</span>
+<a name="line-60"></a>    <span class='layout'>,</span> <span class='varid'>xpAddFixedAttr</span>
+<a name="line-61"></a>    <span class='layout'>,</span> <span class='varid'>xpAlt</span>
+<a name="line-62"></a>    <span class='layout'>,</span> <span class='varid'>xpAttr</span>
+<a name="line-63"></a>    <span class='layout'>,</span> <span class='varid'>xpAttrFixed</span>
+<a name="line-64"></a>    <span class='layout'>,</span> <span class='varid'>xpAttrImplied</span>
+<a name="line-65"></a>    <span class='layout'>,</span> <span class='varid'>xpChoice</span>
+<a name="line-66"></a>    <span class='layout'>,</span> <span class='varid'>xpCondSeq</span>
+<a name="line-67"></a>    <span class='layout'>,</span> <span class='varid'>xpDefault</span>
+<a name="line-68"></a>    <span class='layout'>,</span> <span class='varid'>xpElem</span>
+<a name="line-69"></a>    <span class='layout'>,</span> <span class='varid'>xpElemWithAttrValue</span>
+<a name="line-70"></a>    <span class='layout'>,</span> <span class='varid'>xpickle</span>
+<a name="line-71"></a>    <span class='layout'>,</span> <span class='varid'>xpLift</span>
+<a name="line-72"></a>    <span class='layout'>,</span> <span class='varid'>xpLiftMaybe</span>
+<a name="line-73"></a>    <span class='layout'>,</span> <span class='varid'>xpList</span>
+<a name="line-74"></a>    <span class='layout'>,</span> <span class='varid'>xpList1</span>
+<a name="line-75"></a>    <span class='layout'>,</span> <span class='varid'>xpMap</span>
+<a name="line-76"></a>    <span class='layout'>,</span> <span class='varid'>xpOption</span>
+<a name="line-77"></a>    <span class='layout'>,</span> <span class='varid'>xpPair</span>
+<a name="line-78"></a>    <span class='layout'>,</span> <span class='varid'>xpPrim</span>
+<a name="line-79"></a>    <span class='layout'>,</span> <span class='varid'>xpSeq</span>
+<a name="line-80"></a>    <span class='layout'>,</span> <span class='varid'>xpText</span>
+<a name="line-81"></a>    <span class='layout'>,</span> <span class='varid'>xpText0</span>
+<a name="line-82"></a>    <span class='layout'>,</span> <span class='varid'>xpTextDT</span>
+<a name="line-83"></a>    <span class='layout'>,</span> <span class='varid'>xpText0DT</span>
+<a name="line-84"></a>    <span class='layout'>,</span> <span class='varid'>xpTree</span>
+<a name="line-85"></a>    <span class='layout'>,</span> <span class='varid'>xpTrees</span>
+<a name="line-86"></a>    <span class='layout'>,</span> <span class='varid'>xpTriple</span>
+<a name="line-87"></a>    <span class='layout'>,</span> <span class='varid'>xpUnit</span>
+<a name="line-88"></a>    <span class='layout'>,</span> <span class='varid'>xpWrap</span>
+<a name="line-89"></a>    <span class='layout'>,</span> <span class='varid'>xpWrapMaybe</span>
+<a name="line-90"></a>    <span class='layout'>,</span> <span class='varid'>xpXmlText</span>
+<a name="line-91"></a>    <span class='layout'>,</span> <span class='varid'>xpZero</span>
+<a name="line-92"></a>
+<a name="line-93"></a>      <span class='comment'>-- from Text.XML.HXT.Arrow.Pickle.Schema</span>
+<a name="line-94"></a>    <span class='layout'>,</span> <span class='conid'>Schema</span>
+<a name="line-95"></a>    <span class='layout'>,</span> <span class='conid'>Schemas</span>
+<a name="line-96"></a>    <span class='layout'>,</span> <span class='conid'>DataTypeDescr</span>
+<a name="line-97"></a>    <span class='layout'>)</span>
+<a name="line-98"></a><span class='keyword'>where</span>
+<a name="line-99"></a>
+<a name="line-100"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
+<a name="line-101"></a>
+<a name="line-102"></a><span class='keyword'>import</span>           <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>
 <a name="line-103"></a>
-<a name="line-104"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Xml</span>
-<a name="line-105"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Schema</span>
-<a name="line-106"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>DTD</span>
-<a name="line-107"></a>
-<a name="line-108"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-104"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
+<a name="line-105"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
+<a name="line-106"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>
+<a name="line-107"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ReadDocument</span>
+<a name="line-108"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>WriteDocument</span>
 <a name="line-109"></a>
-<a name="line-110"></a><span class='comment'>-- the arrow interface for pickling and unpickling</span>
-<a name="line-111"></a>
-<a name="line-112"></a><span class='comment'>-- | store an arbitray value in a persistent XML document</span>
-<a name="line-113"></a><span class='comment'>--</span>
-<a name="line-114"></a><span class='comment'>-- The pickler converts a value into an XML tree, this is written out with</span>
-<a name="line-115"></a><span class='comment'>-- 'Text.XML.HXT.Arrow.writeDocument'. The option list is passed to 'Text.XML.HXT.Arrow.writeDocument'</span>
-<a name="line-116"></a><span class='comment'>--</span>
-<a name="line-117"></a><span class='comment'>-- An option evaluated by this arrow is 'a_addDTD'.</span>
-<a name="line-118"></a><span class='comment'>-- If 'a_addDTD' is set ('v_1'), the pickler DTD is added as an inline DTD into the document.</span>
-<a name="line-119"></a>
-<a name="line-120"></a><a name="xpickleDocument"></a><span class='definition'>xpickleDocument</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span>
-<a name="line-121"></a><span class='definition'>xpickleDocument</span> <span class='varid'>xp</span> <span class='varid'>al</span> <span class='varid'>dest</span>
-<a name="line-122"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpickleVal</span> <span class='varid'>xp</span>
-<a name="line-123"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-124"></a>      <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"xpickleVal applied"</span>
-<a name="line-125"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-126"></a>      <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>lookup1</span> <span class='varid'>a_addDTD</span> <span class='varid'>al</span> <span class='varop'>==</span> <span class='varid'>v_1</span>
-<a name="line-127"></a>	<span class='keyword'>then</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='varid'>undefined</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>xpickleDTD</span> <span class='varid'>xp</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span><span class='layout'>)</span>
-<a name="line-128"></a>			       <span class='varop'>&lt;+&gt;</span>
-<a name="line-129"></a>			       <span class='varid'>getChildren</span>
-<a name="line-130"></a>			     <span class='layout'>)</span>
-<a name="line-131"></a>	<span class='keyword'>else</span> <span class='varid'>this</span>
-<a name="line-132"></a>      <span class='layout'>)</span>
-<a name="line-133"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-134"></a>      <span class='varid'>writeDocument</span> <span class='varid'>al</span> <span class='varid'>dest</span>
-<a name="line-135"></a>
-<a name="line-136"></a><span class='comment'>-- | Option for generating and adding DTD when document is pickled</span>
-<a name="line-137"></a>
-<a name="line-138"></a><a name="a_addDTD"></a><span class='definition'>a_addDTD</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-139"></a><span class='definition'>a_addDTD</span>	<span class='keyglyph'>=</span> <span class='str'>"addDTD"</span>
-<a name="line-140"></a>
-<a name="line-141"></a><span class='comment'>-- | read an arbitray value from an XML document</span>
-<a name="line-142"></a><span class='comment'>--</span>
-<a name="line-143"></a><span class='comment'>-- The document is read with 'Text.XML.HXT.Arrow.readDocument'. Options are passed</span>
-<a name="line-144"></a><span class='comment'>-- to 'Text.XML.HXT.Arrow.readDocument'. The conversion from XmlTree is done with the</span>
-<a name="line-145"></a><span class='comment'>-- pickler.</span>
-<a name="line-146"></a><span class='comment'>--</span>
-<a name="line-147"></a><span class='comment'>-- @ xpickleDocument xp al dest &gt;&gt;&gt; xunpickleDocument xp al' dest @ is the identity arrow</span>
-<a name="line-148"></a><span class='comment'>-- when applied with the appropriate options. When during pickling indentation is switched on,</span>
-<a name="line-149"></a><span class='comment'>-- the whitespace must be removed during unpickling.</span>
-<a name="line-150"></a>
-<a name="line-151"></a><a name="xunpickleDocument"></a><span class='definition'>xunpickleDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>a</span>
-<a name="line-152"></a><span class='definition'>xunpickleDocument</span> <span class='varid'>xp</span> <span class='varid'>al</span> <span class='varid'>src</span>
-<a name="line-153"></a>			<span class='keyglyph'>=</span> <span class='varid'>readDocument</span> <span class='varid'>al</span> <span class='varid'>src</span>
-<a name="line-154"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-155"></a>			  <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"xunpickleVal for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" started"</span><span class='layout'>)</span>
-<a name="line-156"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-157"></a>			  <span class='varid'>xunpickleVal</span> <span class='varid'>xp</span>
-<a name="line-158"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-159"></a>			  <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"xunpickleVal for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" finished"</span><span class='layout'>)</span>
-<a name="line-160"></a>
-<a name="line-161"></a><span class='comment'>-- | Write out the DTD generated out of a pickler. Calls 'xpicklerDTD'</span>
-<a name="line-162"></a>
-<a name="line-163"></a><a name="xpickleWriteDTD"></a><span class='definition'>xpickleWriteDTD</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-164"></a><span class='definition'>xpickleWriteDTD</span>	<span class='varid'>xp</span> <span class='varid'>al</span> <span class='varid'>dest</span>
-<a name="line-165"></a>			<span class='keyglyph'>=</span> <span class='varid'>xpickleDTD</span> <span class='varid'>xp</span>
-<a name="line-166"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-167"></a>			  <span class='varid'>writeDocument</span> <span class='varid'>al</span> <span class='varid'>dest</span>
+<a name="line-110"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Xml</span>
+<a name="line-111"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Schema</span>
+<a name="line-112"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>DTD</span>
+<a name="line-113"></a>
+<a name="line-114"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-115"></a>
+<a name="line-116"></a><span class='comment'>-- the arrow interface for pickling and unpickling</span>
+<a name="line-117"></a>
+<a name="line-118"></a><span class='comment'>-- | store an arbitray value in a persistent XML document</span>
+<a name="line-119"></a><span class='comment'>--</span>
+<a name="line-120"></a><span class='comment'>-- The pickler converts a value into an XML tree, this is written out with</span>
+<a name="line-121"></a><span class='comment'>-- 'Text.XML.HXT.Arrow.writeDocument'. The option list is passed to 'Text.XML.HXT.Arrow.writeDocument'</span>
+<a name="line-122"></a><span class='comment'>--</span>
+<a name="line-123"></a><span class='comment'>-- An option evaluated by this arrow is 'a_addDTD'.</span>
+<a name="line-124"></a><span class='comment'>-- If 'a_addDTD' is set ('v_1'), the pickler DTD is added as an inline DTD into the document.</span>
+<a name="line-125"></a>
+<a name="line-126"></a><a name="xpickleDocument"></a><span class='definition'>xpickleDocument</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span>
+<a name="line-127"></a><span class='definition'>xpickleDocument</span> <span class='varid'>xp</span> <span class='varid'>al</span> <span class='varid'>dest</span>
+<a name="line-128"></a>    <span class='keyglyph'>=</span> <span class='varid'>xpickleVal</span> <span class='varid'>xp</span>
+<a name="line-129"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-130"></a>      <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"xpickleVal applied"</span>
+<a name="line-131"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-132"></a>      <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>lookup1</span> <span class='varid'>a_addDTD</span> <span class='varid'>al</span> <span class='varop'>==</span> <span class='varid'>v_1</span>
+<a name="line-133"></a>	<span class='keyword'>then</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='varid'>undefined</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>xpickleDTD</span> <span class='varid'>xp</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span><span class='layout'>)</span>
+<a name="line-134"></a>			       <span class='varop'>&lt;+&gt;</span>
+<a name="line-135"></a>			       <span class='varid'>getChildren</span>
+<a name="line-136"></a>			     <span class='layout'>)</span>
+<a name="line-137"></a>	<span class='keyword'>else</span> <span class='varid'>this</span>
+<a name="line-138"></a>      <span class='layout'>)</span>
+<a name="line-139"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-140"></a>      <span class='varid'>writeDocument</span> <span class='varid'>al</span> <span class='varid'>dest</span>
+<a name="line-141"></a>
+<a name="line-142"></a><span class='comment'>-- | Option for generating and adding DTD when document is pickled</span>
+<a name="line-143"></a>
+<a name="line-144"></a><a name="a_addDTD"></a><span class='definition'>a_addDTD</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-145"></a><span class='definition'>a_addDTD</span>	<span class='keyglyph'>=</span> <span class='str'>"addDTD"</span>
+<a name="line-146"></a>
+<a name="line-147"></a><span class='comment'>-- | read an arbitray value from an XML document</span>
+<a name="line-148"></a><span class='comment'>--</span>
+<a name="line-149"></a><span class='comment'>-- The document is read with 'Text.XML.HXT.Arrow.readDocument'. Options are passed</span>
+<a name="line-150"></a><span class='comment'>-- to 'Text.XML.HXT.Arrow.readDocument'. The conversion from XmlTree is done with the</span>
+<a name="line-151"></a><span class='comment'>-- pickler.</span>
+<a name="line-152"></a><span class='comment'>--</span>
+<a name="line-153"></a><span class='comment'>-- @ xpickleDocument xp al dest &gt;&gt;&gt; xunpickleDocument xp al' dest @ is the identity arrow</span>
+<a name="line-154"></a><span class='comment'>-- when applied with the appropriate options. When during pickling indentation is switched on,</span>
+<a name="line-155"></a><span class='comment'>-- the whitespace must be removed during unpickling.</span>
+<a name="line-156"></a>
+<a name="line-157"></a><a name="xunpickleDocument"></a><span class='definition'>xunpickleDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>a</span>
+<a name="line-158"></a><span class='definition'>xunpickleDocument</span> <span class='varid'>xp</span> <span class='varid'>al</span> <span class='varid'>src</span>
+<a name="line-159"></a>			<span class='keyglyph'>=</span> <span class='varid'>readDocument</span> <span class='varid'>al</span> <span class='varid'>src</span>
+<a name="line-160"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-161"></a>			  <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"xunpickleVal for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" started"</span><span class='layout'>)</span>
+<a name="line-162"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-163"></a>			  <span class='varid'>xunpickleVal</span> <span class='varid'>xp</span>
+<a name="line-164"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-165"></a>			  <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"xunpickleVal for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" finished"</span><span class='layout'>)</span>
+<a name="line-166"></a>
+<a name="line-167"></a><span class='comment'>-- | Write out the DTD generated out of a pickler. Calls 'xpicklerDTD'</span>
 <a name="line-168"></a>
-<a name="line-169"></a><span class='comment'>-- | The arrow for generating the DTD out of a pickler</span>
-<a name="line-170"></a><span class='comment'>--</span>
-<a name="line-171"></a><span class='comment'>-- A DTD is generated from a pickler and check for consistency.</span>
-<a name="line-172"></a><span class='comment'>-- Errors concerning the DTD are issued.</span>
-<a name="line-173"></a>
-<a name="line-174"></a><a name="xpickleDTD"></a><span class='definition'>xpickleDTD</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-175"></a><span class='definition'>xpickleDTD</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span> <span class='varid'>constL</span> <span class='layout'>(</span><span class='varid'>thePicklerDTD</span> <span class='varid'>xp</span><span class='layout'>)</span>
-<a name="line-176"></a>				    <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-177"></a>				    <span class='varid'>filterErrorMsg</span>
-<a name="line-178"></a>				  <span class='keyglyph'>]</span>
+<a name="line-169"></a><a name="xpickleWriteDTD"></a><span class='definition'>xpickleWriteDTD</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-170"></a><span class='definition'>xpickleWriteDTD</span>	<span class='varid'>xp</span> <span class='varid'>al</span> <span class='varid'>dest</span>
+<a name="line-171"></a>			<span class='keyglyph'>=</span> <span class='varid'>xpickleDTD</span> <span class='varid'>xp</span>
+<a name="line-172"></a>			  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-173"></a>			  <span class='varid'>writeDocument</span> <span class='varid'>al</span> <span class='varid'>dest</span>
+<a name="line-174"></a>
+<a name="line-175"></a><span class='comment'>-- | The arrow for generating the DTD out of a pickler</span>
+<a name="line-176"></a><span class='comment'>--</span>
+<a name="line-177"></a><span class='comment'>-- A DTD is generated from a pickler and check for consistency.</span>
+<a name="line-178"></a><span class='comment'>-- Errors concerning the DTD are issued.</span>
 <a name="line-179"></a>
-<a name="line-180"></a><span class='comment'>-- | An arrow for checking picklers</span>
-<a name="line-181"></a><span class='comment'>--</span>
-<a name="line-182"></a><span class='comment'>-- A value is transformed into an XML document by a given pickler,</span>
-<a name="line-183"></a><span class='comment'>-- the associated DTD is extracted from the pickler and checked,</span>
-<a name="line-184"></a><span class='comment'>-- the document including the DTD is tranlated into a string,</span>
-<a name="line-185"></a><span class='comment'>-- this string is read and validated against the included DTD,</span>
-<a name="line-186"></a><span class='comment'>-- and unpickled.</span>
-<a name="line-187"></a><span class='comment'>-- The last step is the equality with the input.</span>
-<a name="line-188"></a><span class='comment'>--</span>
-<a name="line-189"></a><span class='comment'>-- If the check succeeds, the arrow works like this, else it fails.</span>
-<a name="line-190"></a>
-<a name="line-191"></a><a name="checkPickler"></a><span class='definition'>checkPickler</span>		<span class='keyglyph'>::</span> <span class='conid'>Eq</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>a</span> <span class='varid'>a</span>
-<a name="line-192"></a><span class='definition'>checkPickler</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>xpickleVal</span> <span class='varid'>xp</span>
-<a name="line-193"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-194"></a>				  <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='varid'>undefined</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>xpickleDTD</span> <span class='varid'>xp</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span><span class='layout'>)</span>
-<a name="line-195"></a>						    <span class='varop'>&lt;+&gt;</span>
-<a name="line-196"></a>						    <span class='varid'>getChildren</span>
-<a name="line-197"></a>						  <span class='layout'>)</span>
-<a name="line-198"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-199"></a>				  <span class='varid'>writeDocumentToString</span> <span class='conid'>[]</span>
-<a name="line-200"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-201"></a>				  <span class='varid'>readFromString</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_validate</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-202"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-203"></a>				  <span class='layout'>(</span> <span class='varid'>xunpickleVal</span> <span class='varid'>xp</span>
-<a name="line-204"></a>				    <span class='varop'>`orElse`</span>
-<a name="line-205"></a>				    <span class='layout'>(</span> <span class='varid'>issueErr</span> <span class='str'>"unpickling the document failed"</span>
-<a name="line-206"></a>				      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-207"></a>				      <span class='varid'>none</span>
-<a name="line-208"></a>				    <span class='layout'>)</span>
-<a name="line-209"></a>				  <span class='layout'>)</span>
-<a name="line-210"></a>				<span class='layout'>)</span>
-<a name="line-211"></a>				<span class='varop'>&amp;&amp;&amp;</span> 
-<a name="line-212"></a>				<span class='varid'>this</span>
-<a name="line-213"></a>			      <span class='layout'>)</span>
-<a name="line-214"></a>			      <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-215"></a>			    <span class='layout'>)</span>
-<a name="line-216"></a>			    <span class='varop'>`guards`</span> <span class='varid'>this</span>
-<a name="line-217"></a>			  <span class='layout'>)</span>
-<a name="line-218"></a>			  <span class='varop'>`orElse`</span> <span class='varid'>issueErr</span> <span class='str'>"pickle/unpickle combinators failed"</span>
-<a name="line-219"></a>
-<a name="line-220"></a><span class='comment'>-- | The arrow version of the pickler function</span>
-<a name="line-221"></a>
-<a name="line-222"></a><a name="xpickleVal"></a><span class='definition'>xpickleVal</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-223"></a><span class='definition'>xpickleVal</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>pickleDoc</span> <span class='varid'>xp</span><span class='layout'>)</span>
-<a name="line-224"></a>
-<a name="line-225"></a><span class='comment'>-- | The arrow version of the unpickler function</span>
-<a name="line-226"></a>
-<a name="line-227"></a><a name="xunpickleVal"></a><span class='definition'>xunpickleVal</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='varid'>b</span>
-<a name="line-228"></a><span class='definition'>xunpickleVal</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>unpickleDoc</span> <span class='varid'>xp</span><span class='layout'>)</span>
-<a name="line-229"></a>
+<a name="line-180"></a><a name="xpickleDTD"></a><span class='definition'>xpickleDTD</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-181"></a><span class='definition'>xpickleDTD</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span> <span class='varid'>constL</span> <span class='layout'>(</span><span class='varid'>thePicklerDTD</span> <span class='varid'>xp</span><span class='layout'>)</span>
+<a name="line-182"></a>				    <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-183"></a>				    <span class='varid'>filterErrorMsg</span>
+<a name="line-184"></a>				  <span class='keyglyph'>]</span>
+<a name="line-185"></a>
+<a name="line-186"></a><span class='comment'>-- | An arrow for checking picklers</span>
+<a name="line-187"></a><span class='comment'>--</span>
+<a name="line-188"></a><span class='comment'>-- A value is transformed into an XML document by a given pickler,</span>
+<a name="line-189"></a><span class='comment'>-- the associated DTD is extracted from the pickler and checked,</span>
+<a name="line-190"></a><span class='comment'>-- the document including the DTD is tranlated into a string,</span>
+<a name="line-191"></a><span class='comment'>-- this string is read and validated against the included DTD,</span>
+<a name="line-192"></a><span class='comment'>-- and unpickled.</span>
+<a name="line-193"></a><span class='comment'>-- The last step is the equality with the input.</span>
+<a name="line-194"></a><span class='comment'>--</span>
+<a name="line-195"></a><span class='comment'>-- If the check succeeds, the arrow works like this, else it fails.</span>
+<a name="line-196"></a>
+<a name="line-197"></a><a name="checkPickler"></a><span class='definition'>checkPickler</span>		<span class='keyglyph'>::</span> <span class='conid'>Eq</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>a</span> <span class='varid'>a</span>
+<a name="line-198"></a><span class='definition'>checkPickler</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>xpickleVal</span> <span class='varid'>xp</span>
+<a name="line-199"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-200"></a>				  <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='varid'>undefined</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>xpickleDTD</span> <span class='varid'>xp</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span><span class='layout'>)</span>
+<a name="line-201"></a>						    <span class='varop'>&lt;+&gt;</span>
+<a name="line-202"></a>						    <span class='varid'>getChildren</span>
+<a name="line-203"></a>						  <span class='layout'>)</span>
+<a name="line-204"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-205"></a>				  <span class='varid'>writeDocumentToString</span> <span class='conid'>[]</span>
+<a name="line-206"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-207"></a>				  <span class='varid'>readFromString</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_validate</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-208"></a>				  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-209"></a>				  <span class='layout'>(</span> <span class='varid'>xunpickleVal</span> <span class='varid'>xp</span>
+<a name="line-210"></a>				    <span class='varop'>`orElse`</span>
+<a name="line-211"></a>				    <span class='layout'>(</span> <span class='varid'>issueErr</span> <span class='str'>"unpickling the document failed"</span>
+<a name="line-212"></a>				      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-213"></a>				      <span class='varid'>none</span>
+<a name="line-214"></a>				    <span class='layout'>)</span>
+<a name="line-215"></a>				  <span class='layout'>)</span>
+<a name="line-216"></a>				<span class='layout'>)</span>
+<a name="line-217"></a>				<span class='varop'>&amp;&amp;&amp;</span> 
+<a name="line-218"></a>				<span class='varid'>this</span>
+<a name="line-219"></a>			      <span class='layout'>)</span>
+<a name="line-220"></a>			      <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-221"></a>			    <span class='layout'>)</span>
+<a name="line-222"></a>			    <span class='varop'>`guards`</span> <span class='varid'>this</span>
+<a name="line-223"></a>			  <span class='layout'>)</span>
+<a name="line-224"></a>			  <span class='varop'>`orElse`</span> <span class='varid'>issueErr</span> <span class='str'>"pickle/unpickle combinators failed"</span>
+<a name="line-225"></a>
+<a name="line-226"></a><span class='comment'>-- | The arrow version of the pickler function</span>
+<a name="line-227"></a>
+<a name="line-228"></a><a name="xpickleVal"></a><span class='definition'>xpickleVal</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-229"></a><span class='definition'>xpickleVal</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>pickleDoc</span> <span class='varid'>xp</span><span class='layout'>)</span>
 <a name="line-230"></a>
-<a name="line-231"></a><span class='comment'>-- | Compute the associated DTD of a pickler</span>
+<a name="line-231"></a><span class='comment'>-- | The arrow version of the unpickler function</span>
 <a name="line-232"></a>
-<a name="line-233"></a><a name="thePicklerDTD"></a><span class='definition'>thePicklerDTD</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-234"></a><span class='definition'>thePicklerDTD</span>		<span class='keyglyph'>=</span> <span class='varid'>dtdDescrToXml</span> <span class='varop'>.</span> <span class='varid'>dtdDescr</span> <span class='varop'>.</span> <span class='varid'>theSchema</span>
+<a name="line-233"></a><a name="xunpickleVal"></a><span class='definition'>xunpickleVal</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='varid'>b</span>
+<a name="line-234"></a><span class='definition'>xunpickleVal</span> <span class='varid'>xp</span>		<span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>unpickleDoc</span> <span class='varid'>xp</span><span class='layout'>)</span>
 <a name="line-235"></a>
-<a name="line-236"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-237"></a>
+<a name="line-236"></a>
+<a name="line-237"></a><span class='comment'>-- | Compute the associated DTD of a pickler</span>
 <a name="line-238"></a>
+<a name="line-239"></a><a name="thePicklerDTD"></a><span class='definition'>thePicklerDTD</span>		<span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
+<a name="line-240"></a><span class='definition'>thePicklerDTD</span>		<span class='keyglyph'>=</span> <span class='varid'>dtdDescrToXml</span> <span class='varop'>.</span> <span class='varid'>dtdDescr</span> <span class='varop'>.</span> <span class='varid'>theSchema</span>
+<a name="line-241"></a>
+<a name="line-242"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-243"></a>
+<a name="line-244"></a>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow-ProcessDocument.html b/doc/hdoc/src/Text-XML-HXT-Arrow-ProcessDocument.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow-ProcessDocument.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow-ProcessDocument.html
@@ -251,46 +251,44 @@
 <a name="line-243"></a>	<span class='varop'>&gt;&gt;&gt;</span>
 <a name="line-244"></a>	<span class='varid'>propagateNamespaces</span>
 <a name="line-245"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-246"></a>	<span class='varid'>traceTree</span>
+<a name="line-246"></a>	<span class='varid'>traceDoc</span> <span class='str'>"propagating namespaces done"</span>
 <a name="line-247"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-248"></a>	<span class='varid'>traceSource</span>
+<a name="line-248"></a>	<span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"validating namespaces"</span>
 <a name="line-249"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-250"></a>	<span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"validating namespaces"</span>
-<a name="line-251"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-252"></a>	<span class='layout'>(</span> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"namespace propagation"</span>
-<a name="line-253"></a>	  <span class='varop'>`when`</span>
-<a name="line-254"></a>	  <span class='layout'>(</span> <span class='varid'>validateNamespaces</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>perform</span> <span class='varid'>filterErrorMsg</span> <span class='layout'>)</span>
-<a name="line-255"></a>	<span class='layout'>)</span>
-<a name="line-256"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-257"></a>	<span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"namespace validation finished"</span>
-<a name="line-258"></a>      <span class='layout'>)</span>
-<a name="line-259"></a>      <span class='varop'>`when`</span>
-<a name="line-260"></a>      <span class='varid'>documentStatusOk</span>
+<a name="line-250"></a>	<span class='layout'>(</span> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"namespace propagation"</span>
+<a name="line-251"></a>	  <span class='varop'>`when`</span>
+<a name="line-252"></a>	  <span class='layout'>(</span> <span class='varid'>validateNamespaces</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>perform</span> <span class='varid'>filterErrorMsg</span> <span class='layout'>)</span>
+<a name="line-253"></a>	<span class='layout'>)</span>
+<a name="line-254"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-255"></a>	<span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"namespace validation finished"</span>
+<a name="line-256"></a>      <span class='layout'>)</span>
+<a name="line-257"></a>      <span class='varop'>`when`</span>
+<a name="line-258"></a>      <span class='varid'>documentStatusOk</span>
+<a name="line-259"></a>
+<a name="line-260"></a><span class='comment'>-- ------------------------------------------------------------</span>
 <a name="line-261"></a>
-<a name="line-262"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-263"></a>
-<a name="line-264"></a><span class='comment'>{- |
-<a name="line-265"></a>   creates a new document root, adds all options
-<a name="line-266"></a>   as attributes to the document root and calls 'getXmlContents'.
-<a name="line-267"></a>
-<a name="line-268"></a>   If the document name is the empty string, the document will be read
-<a name="line-269"></a>   from standard input.
-<a name="line-270"></a>
-<a name="line-271"></a>   For supported protocols see 'Text.XML.HXT.Arrow.DocumentInput.getXmlContents'
-<a name="line-272"></a>-}</span>
-<a name="line-273"></a>
-<a name="line-274"></a><a name="getDocumentContents"></a><span class='definition'>getDocumentContents</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-275"></a><span class='definition'>getDocumentContents</span> <span class='varid'>options</span> <span class='varid'>src</span>
-<a name="line-276"></a>    <span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='conid'>[]</span>
+<a name="line-262"></a><span class='comment'>{- |
+<a name="line-263"></a>   creates a new document root, adds all options
+<a name="line-264"></a>   as attributes to the document root and calls 'getXmlContents'.
+<a name="line-265"></a>
+<a name="line-266"></a>   If the document name is the empty string, the document will be read
+<a name="line-267"></a>   from standard input.
+<a name="line-268"></a>
+<a name="line-269"></a>   For supported protocols see 'Text.XML.HXT.Arrow.DocumentInput.getXmlContents'
+<a name="line-270"></a>-}</span>
+<a name="line-271"></a>
+<a name="line-272"></a><a name="getDocumentContents"></a><span class='definition'>getDocumentContents</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-273"></a><span class='definition'>getDocumentContents</span> <span class='varid'>options</span> <span class='varid'>src</span>
+<a name="line-274"></a>    <span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='conid'>[]</span>
+<a name="line-275"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-276"></a>      <span class='varid'>addAttr</span> <span class='varid'>a_source</span> <span class='varid'>src</span>
 <a name="line-277"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-278"></a>      <span class='varid'>addAttr</span> <span class='varid'>a_source</span> <span class='varid'>src</span>
-<a name="line-279"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-280"></a>      <span class='varid'>seqA</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addAttr</span><span class='layout'>)</span> <span class='varid'>options</span><span class='layout'>)</span>					<span class='comment'>-- add all options to doc root</span>
-<a name="line-281"></a>      <span class='varop'>&gt;&gt;&gt;</span>									<span class='comment'>-- e.g. getXmlContents needs some of these</span>
-<a name="line-282"></a>      <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: start processing document "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span>
-<a name="line-283"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-284"></a>      <span class='varid'>getXmlContents</span>
-<a name="line-285"></a>
-<a name="line-286"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-278"></a>      <span class='varid'>seqA</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addAttr</span><span class='layout'>)</span> <span class='varid'>options</span><span class='layout'>)</span>					<span class='comment'>-- add all options to doc root</span>
+<a name="line-279"></a>      <span class='varop'>&gt;&gt;&gt;</span>									<span class='comment'>-- e.g. getXmlContents needs some of these</span>
+<a name="line-280"></a>      <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: start processing document "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span>
+<a name="line-281"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-282"></a>      <span class='varid'>getXmlContents</span>
+<a name="line-283"></a>
+<a name="line-284"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow-ReadDocument.html b/doc/hdoc/src/Text-XML-HXT-Arrow-ReadDocument.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow-ReadDocument.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow-ReadDocument.html
@@ -103,252 +103,284 @@
 <a name="line-95"></a>
 <a name="line-96"></a>- 'a_issue_warnings' : issue warnings, when parsing HTML (default), else ignore HTML parser warnings
 <a name="line-97"></a>
-<a name="line-98"></a>- 'a_issue_errors' : issue all error messages on stderr (default), or ignore all error messages (default)
+<a name="line-98"></a>- 'a_issue_errors' : issue all error messages on stderr (default), or ignore all error messages
 <a name="line-99"></a>
-<a name="line-100"></a>- 'a_trace' : trace level: values: 0 - 4
+<a name="line-100"></a>- 'a_ignore_encoding_errors': ignore all encoding errors, default is issue all encoding errors
 <a name="line-101"></a>
-<a name="line-102"></a>- 'a_proxy' : proxy for http access, e.g. www-cache:3128
-<a name="line-103"></a>
-<a name="line-104"></a>- 'a_use_curl' : for http access via external programm curl, default is native HTTP access
+<a name="line-102"></a>- 'a_ignore_none_xml_contents': ignore document contents of none XML\/HTML documents.
+<a name="line-103"></a>                                This option can be useful for implementing crawler like applications, e.g. an URL checker.
+<a name="line-104"></a>                                In those cases net traffic can be reduced.
 <a name="line-105"></a>
-<a name="line-106"></a>- 'a_options_curl' : more options for external program curl
+<a name="line-106"></a>- 'a_trace' : trace level: values: 0 - 4
 <a name="line-107"></a>
-<a name="line-108"></a>- 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', 'iso8859_2', ... , 'iso8859_16', ...)
+<a name="line-108"></a>- 'a_proxy' : proxy for http access, e.g. www-cache:3128
 <a name="line-109"></a>
-<a name="line-110"></a>All attributes not evaluated by readDocument are stored in the created document root node for easy access of the various
-<a name="line-111"></a>options in e.g. the input\/output modules
-<a name="line-112"></a>
-<a name="line-113"></a>If the document name is the empty string or an uri of the form \"stdin:\", the document is read from standard input.
-<a name="line-114"></a>
-<a name="line-115"></a>examples:
+<a name="line-110"></a>- 'a_use_curl' : obsolete and ignored, HTTP acccess is always done with curl bindings for libcurl
+<a name="line-111"></a>
+<a name="line-112"></a>- 'a_options_curl' : deprecated but for compatibility reasons still supported.
+<a name="line-113"></a>                     More options passed to the curl binding.
+<a name="line-114"></a>                     Instead of using this option to set a whole bunch of options at once for curl
+<a name="line-115"></a>                     it is recomended to use the @curl-.*@ options syntax described below.
 <a name="line-116"></a>
-<a name="line-117"></a>&gt; readDocument [ ] "test.xml"
-<a name="line-118"></a>
-<a name="line-119"></a>reads and validates a document \"test.xml\", no namespace propagation, only canonicalization is performed 
-<a name="line-120"></a>
-<a name="line-121"></a>&gt; readDocument [ (a_validate, "0")
-<a name="line-122"></a>&gt;              , (a_encoding, isoLatin1)
-<a name="line-123"></a>&gt;              ] "test.xml"
-<a name="line-124"></a>
-<a name="line-125"></a>reads document \"test.xml\" without validation, default encoding 'isoLatin1'.
-<a name="line-126"></a>
-<a name="line-127"></a>
-<a name="line-128"></a>&gt; readDocument [ (a_parse_html, "1")
-<a name="line-129"></a>&gt;              , (a_encoding, isoLatin1)
-<a name="line-130"></a>&gt;              , (a_tagsoup,    "1")
-<a name="line-131"></a>&gt;              ] ""
+<a name="line-117"></a>- 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', 'iso8859_2', ... , 'iso8859_16', ...).
+<a name="line-118"></a>                 Only XML and HTML documents are decoded, documents with none XML\/HTML mime types are not decoded. The whole content is returned in a single text node
+<a name="line-119"></a>
+<a name="line-120"></a>- 'a_mime_types' : set the mime type table for file input with given file. The format of this config file must be in the syntax of a debian linux \"mime.types\" config file
+<a name="line-121"></a>
+<a name="line-122"></a>- curl options : the HTTP interface with libcurl can be configured with a lot of options. To support these options in an easy way, there is a naming convetion:
+<a name="line-123"></a>                 Every option, which has the prefix @curl@ and the rest of the name forms an option as described in the curl man page, is passed to the curl binding lib.
+<a name="line-124"></a>                 See 'Text.XML.HXT.IO.GetHTTPLibCurl.getCont' for examples. Currently most of the options concerning HTTP requests are implemented.
+<a name="line-125"></a>
+<a name="line-126"></a>All attributes not evaluated by readDocument are stored in the created document root node for easy access of the various
+<a name="line-127"></a>options in e.g. the input\/output modules
+<a name="line-128"></a>
+<a name="line-129"></a>If the document name is the empty string or an uri of the form \"stdin:\", the document is read from standard input.
+<a name="line-130"></a>
+<a name="line-131"></a>examples:
 <a name="line-132"></a>
-<a name="line-133"></a>reads a HTML document from standard input, no validation is done when parsing HTML, default encoding is 'isoLatin1',
-<a name="line-134"></a>parsing is done with tagsoup parser
-<a name="line-135"></a>
-<a name="line-136"></a>&gt; readDocument [ (a_parse_html,     "1")
-<a name="line-137"></a>&gt;              , (a_proxy,          "www-cache:3128")
-<a name="line-138"></a>&gt;              , (a_curl,           "1")
-<a name="line-139"></a>&gt;              , (a_issue_warnings, "0")
-<a name="line-140"></a>&gt;              ] "<a href="http://www.haskell.org/">http://www.haskell.org/</a>"
+<a name="line-133"></a>&gt; readDocument [ ] "test.xml"
+<a name="line-134"></a>
+<a name="line-135"></a>reads and validates a document \"test.xml\", no namespace propagation, only canonicalization is performed 
+<a name="line-136"></a>
+<a name="line-137"></a>&gt; readDocument [ (a_validate, "0")
+<a name="line-138"></a>&gt;              , (a_encoding, isoLatin1)
+<a name="line-139"></a>&gt;              , (a_parse_by_mimetype, "1")
+<a name="line-140"></a>&gt;              ] "<a href="http://localhost/test.php">http://localhost/test.php</a>"
 <a name="line-141"></a>
-<a name="line-142"></a>reads Haskell homepage with HTML parser ignoring any warnings, with http access via external program curl and proxy \"www-cache\" at port 3128
+<a name="line-142"></a>reads document \"test.php\", parses it as HTML or XML depending on the mimetype given from the server, but without validation, default encoding 'isoLatin1'.
 <a name="line-143"></a>
-<a name="line-144"></a>&gt; readDocument [ (a_validate,          "1")
-<a name="line-145"></a>&gt;              , (a_check_namespace,   "1")
-<a name="line-146"></a>&gt;              , (a_remove_whitespace, "1")
-<a name="line-147"></a>&gt;              , (a_trace,             "2")
-<a name="line-148"></a>&gt;              ] "<a href="http://www.w3c.org/">http://www.w3c.org/</a>"
-<a name="line-149"></a>
-<a name="line-150"></a>read w3c home page (xhtml), validate and check namespaces, remove whitespace between tags, trace activities with level 2
+<a name="line-144"></a>
+<a name="line-145"></a>&gt; readDocument [ (a_parse_html, "1")
+<a name="line-146"></a>&gt;              , (a_encoding, isoLatin1)
+<a name="line-147"></a>&gt;              ] ""
+<a name="line-148"></a>
+<a name="line-149"></a>reads a HTML document from standard input, no validation is done when parsing HTML, default encoding is 'isoLatin1',
+<a name="line-150"></a>parsing is done with tagsoup parser
 <a name="line-151"></a>
-<a name="line-152"></a>for minimal complete examples see 'Text.XML.HXT.Arrow.WriteDocument.writeDocument' and 'runX', the main starting point for running an XML arrow.
-<a name="line-153"></a>-}</span>
-<a name="line-154"></a>
-<a name="line-155"></a><a name="readDocument"></a><span class='definition'>readDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-156"></a><span class='definition'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>src</span>
-<a name="line-157"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceLevel</span>
-<a name="line-158"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-159"></a>      <span class='varid'>addInputOptionsToSystemState</span>
-<a name="line-160"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-161"></a>      <span class='varid'>getDocumentContents</span> <span class='varid'>remainingOptions</span> <span class='varid'>src</span>
-<a name="line-162"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-163"></a>      <span class='layout'>(</span> <span class='varid'>processDoc</span> <span class='varop'>$&lt;</span> <span class='varid'>getMimeType</span> <span class='layout'>)</span>
-<a name="line-164"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-165"></a>      <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" processed"</span><span class='layout'>)</span>
-<a name="line-166"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-167"></a>      <span class='varid'>traceSource</span>
-<a name="line-168"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-169"></a>      <span class='varid'>traceTree</span>
-<a name="line-170"></a>    <span class='keyword'>where</span>
-<a name="line-171"></a>    <span class='varid'>options</span>
-<a name="line-172"></a> 	<span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>
+<a name="line-152"></a>&gt; readDocument [ (a_encoding, isoLatin1)
+<a name="line-153"></a>&gt;              , (a_mime_type,    "/etc/mime.types")
+<a name="line-154"></a>&gt;              , (a_tagsoup,    "1")
+<a name="line-155"></a>&gt;              ] "test.svg"
+<a name="line-156"></a>
+<a name="line-157"></a>reads an SVG document from standard input, sets the mime type by looking in the system mimetype config file, default encoding is 'isoLatin1',
+<a name="line-158"></a>parsing is done with the lightweight tagsoup parser, which implies no validation.
+<a name="line-159"></a>
+<a name="line-160"></a>&gt; readDocument [ (a_parse_html,     "1")
+<a name="line-161"></a>&gt;              , (a_proxy,          "www-cache:3128")
+<a name="line-162"></a>&gt;              , (a_curl,           "1")
+<a name="line-163"></a>&gt;              , (a_issue_warnings, "0")
+<a name="line-164"></a>&gt;              ] "<a href="http://www.haskell.org/">http://www.haskell.org/</a>"
+<a name="line-165"></a>
+<a name="line-166"></a>reads Haskell homepage with HTML parser ignoring any warnings, with http access via external program curl and proxy \"www-cache\" at port 3128
+<a name="line-167"></a>
+<a name="line-168"></a>&gt; readDocument [ (a_validate,          "1")
+<a name="line-169"></a>&gt;              , (a_check_namespace,   "1")
+<a name="line-170"></a>&gt;              , (a_remove_whitespace, "1")
+<a name="line-171"></a>&gt;              , (a_trace,             "2")
+<a name="line-172"></a>&gt;              ] "<a href="http://www.w3c.org/">http://www.w3c.org/</a>"
 <a name="line-173"></a>
-<a name="line-174"></a>    <span class='varid'>defaultOptions</span>
-<a name="line-175"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>a_parse_html</span><span class='layout'>,</span>		<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-176"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_tagsoup</span><span class='layout'>,</span>		<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-177"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_validate</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-178"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_issue_warnings</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-179"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_check_namespaces</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-180"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_canonicalize</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-181"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-182"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-183"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-184"></a>	  <span class='keyglyph'>]</span>
-<a name="line-185"></a>
-<a name="line-186"></a>    <span class='varid'>httpOptions</span>
-<a name="line-187"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>a_proxy</span><span class='layout'>,</span> <span class='varid'>a_use_curl</span><span class='layout'>,</span> <span class='varid'>a_options_curl</span><span class='keyglyph'>]</span>
-<a name="line-188"></a>
-<a name="line-189"></a>    <span class='varid'>remainingOptions</span>
-<a name="line-190"></a>	 <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>flip</span> <span class='varid'>hasEntry</span> <span class='varid'>defaultOptions</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varid'>options</span>
-<a name="line-191"></a>
-<a name="line-192"></a>    <span class='varid'>traceLevel</span>
-<a name="line-193"></a>	<span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>this</span> <span class='layout'>(</span><span class='varid'>setTraceLevel</span> <span class='varop'>.</span> <span class='varid'>read</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>a_trace</span> <span class='varop'>$</span> <span class='varid'>options</span>
-<a name="line-194"></a>
-<a name="line-195"></a>    <span class='varid'>addInputOptionsToSystemState</span>
-<a name="line-196"></a>	<span class='keyglyph'>=</span> <span class='varid'>addSysOptions</span> <span class='layout'>(</span><span class='varid'>filter</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>`elem`</span> <span class='varid'>httpOptions</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varid'>remainingOptions</span><span class='layout'>)</span>
-<a name="line-197"></a>	  <span class='keyword'>where</span>
-<a name="line-198"></a>	  <span class='varid'>addSysOptions</span>
-<a name="line-199"></a>	      <span class='keyglyph'>=</span> <span class='varid'>seqA</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>setParamString</span><span class='layout'>)</span>
-<a name="line-200"></a>
-<a name="line-201"></a>    <span class='varid'>getMimeType</span>
-<a name="line-202"></a>	<span class='keyglyph'>=</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>&gt;&gt;^</span> <span class='varid'>map</span> <span class='varid'>toLower</span>
-<a name="line-203"></a>
-<a name="line-204"></a>    <span class='varid'>processDoc</span> <span class='varid'>mimeType</span>
-<a name="line-205"></a>	<span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" (mime type: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>mimeType</span> <span class='varop'>++</span> <span class='str'>") will be processed"</span><span class='layout'>)</span>
-<a name="line-206"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-207"></a>	  <span class='varid'>parse</span>
-<a name="line-208"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-209"></a>	  <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isXmlOrHtml</span>
-<a name="line-210"></a>	    <span class='keyword'>then</span> <span class='layout'>(</span> <span class='varid'>checknamespaces</span>
-<a name="line-211"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-212"></a>		   <span class='varid'>canonicalize</span>
-<a name="line-213"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-214"></a>		   <span class='varid'>whitespace</span>
-<a name="line-215"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-216"></a>		   <span class='varid'>relax</span>
-<a name="line-217"></a>		 <span class='layout'>)</span>
-<a name="line-218"></a>	    <span class='keyword'>else</span> <span class='varid'>this</span>
-<a name="line-219"></a>	  <span class='layout'>)</span>
-<a name="line-220"></a>	<span class='keyword'>where</span>
-<a name="line-221"></a>	<span class='varid'>parse</span>
-<a name="line-222"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isHtml</span>
-<a name="line-223"></a>	      <span class='varop'>||</span> 
-<a name="line-224"></a>	      <span class='varid'>withTagSoup</span>		<span class='keyglyph'>=</span> <span class='varid'>parseHtmlDocument</span>			<span class='comment'>-- parse as HTML or with tagsoup XML</span>
-<a name="line-225"></a>					  <span class='varid'>withTagSoup</span>
-<a name="line-226"></a>					  <span class='varid'>withNamespaces</span>
-<a name="line-227"></a>					  <span class='varid'>issueW</span>
-<a name="line-228"></a>					  <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span><span class='layout'>)</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>preserveCmt</span><span class='layout'>)</span>
-<a name="line-229"></a>					  <span class='varid'>removeWS</span>
-<a name="line-230"></a>					  <span class='varid'>isHtml</span>
-<a name="line-231"></a>	    <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='conid'>False</span>		<span class='comment'>-- for Relax NG use XML parser without validation</span>
-<a name="line-232"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isXml</span>			<span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='varid'>validate</span>		<span class='comment'>-- parse as XML</span>
-<a name="line-233"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>					<span class='comment'>-- don't parse, mime type is not XML nor HTML</span>
-<a name="line-234"></a>	<span class='varid'>checknamespaces</span>
-<a name="line-235"></a>	    <span class='keyglyph'>|</span> <span class='layout'>(</span><span class='varid'>withNamespaces</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>not</span> <span class='varid'>withTagSoup</span><span class='layout'>)</span>
-<a name="line-236"></a>	      <span class='varop'>||</span>
-<a name="line-237"></a>	      <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>propagateAndValidateNamespaces</span>
-<a name="line-238"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
-<a name="line-239"></a>	<span class='varid'>canonicalize</span>
-<a name="line-240"></a>	    <span class='keyglyph'>|</span> <span class='varid'>withTagSoup</span>		<span class='keyglyph'>=</span> <span class='varid'>this</span>					<span class='comment'>-- tagsoup already removes redundant struff</span>
-<a name="line-241"></a>	    <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>
-<a name="line-242"></a>	    <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span>
-<a name="line-243"></a>	      <span class='varop'>&amp;&amp;</span>
-<a name="line-244"></a>	      <span class='varid'>preserveCmt</span>			<span class='keyglyph'>=</span> <span class='varid'>canonicalizeForXPath</span>
-<a name="line-245"></a>	    <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span>	<span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>
-<a name="line-246"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
-<a name="line-247"></a>	<span class='varid'>relax</span>
-<a name="line-248"></a>	    <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>validateDocumentWithRelaxSchema</span> <span class='varid'>remainingOptions</span> <span class='varid'>relaxSchema</span>
-<a name="line-249"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
-<a name="line-250"></a>	<span class='varid'>whitespace</span>
-<a name="line-251"></a>	    <span class='keyglyph'>|</span> <span class='varid'>removeWS</span>
-<a name="line-252"></a>	      <span class='varop'>&amp;&amp;</span>
-<a name="line-253"></a>	      <span class='varid'>not</span> <span class='varid'>withTagSoup</span>		<span class='keyglyph'>=</span> <span class='varid'>removeDocWhiteSpace</span>			<span class='comment'>-- tagsoup already removes whitespace</span>
-<a name="line-254"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
-<a name="line-255"></a>	<span class='varid'>validateWithRelax</span>	<span class='keyglyph'>=</span> <span class='varid'>hasEntry</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>
-<a name="line-256"></a>	<span class='varid'>relaxSchema</span>		<span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>
-<a name="line-257"></a>	<span class='varid'>parseHtml</span>		<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_html</span>
-<a name="line-258"></a>	<span class='varid'>parseXml</span>		<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_xml</span>
-<a name="line-259"></a>	<span class='varid'>isHtml</span>			<span class='keyglyph'>=</span> <span class='varid'>parseHtml</span>				<span class='comment'>-- force HTML</span>
-<a name="line-260"></a>				  <span class='varop'>||</span>
-<a name="line-261"></a>				  <span class='varid'>mimeTypeIsHtml</span>
-<a name="line-262"></a>	<span class='varid'>isXml</span>			<span class='keyglyph'>=</span> <span class='varid'>parseXml</span>				<span class='comment'>-- force XML parsing</span>
-<a name="line-263"></a>				  <span class='varop'>||</span>
-<a name="line-264"></a>				  <span class='layout'>(</span> <span class='varid'>not</span> <span class='varid'>parseHtml</span>
-<a name="line-265"></a>				    <span class='varop'>&amp;&amp;</span>
-<a name="line-266"></a>				    <span class='layout'>(</span> <span class='varid'>mimeTypeIsXml</span> <span class='varop'>||</span> <span class='varid'>null</span> <span class='varid'>mimeType</span> <span class='layout'>)</span>	<span class='comment'>-- mime type is XML or not there</span>
-<a name="line-267"></a>				  <span class='layout'>)</span>
-<a name="line-268"></a>	<span class='varid'>isXmlOrHtml</span>	<span class='keyglyph'>=</span> <span class='varid'>isHtml</span> <span class='varop'>||</span> <span class='varid'>isXml</span>
-<a name="line-269"></a>	<span class='varid'>parseByMimeType</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_by_mimetype</span>
-<a name="line-270"></a>	<span class='varid'>validate</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_validate</span>
-<a name="line-271"></a>	<span class='varid'>withNamespaces</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_check_namespaces</span>
-<a name="line-272"></a>	<span class='varid'>withTagSoup</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_tagsoup</span>
-<a name="line-273"></a>	<span class='varid'>issueW</span>		<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_issue_warnings</span>
-<a name="line-274"></a>	<span class='varid'>removeWS</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span>
-<a name="line-275"></a>	<span class='varid'>preserveCmt</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_preserve_comment</span>
-<a name="line-276"></a>	<span class='varid'>mimeTypeIsHtml</span>	<span class='keyglyph'>=</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>mimeType</span>
-<a name="line-277"></a>	<span class='varid'>mimeTypeIsXml</span>	<span class='keyglyph'>=</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>isXmlMimeType</span>  <span class='varid'>mimeType</span>
-<a name="line-278"></a>	<span class='varid'>hasOption</span> <span class='varid'>n</span>	<span class='keyglyph'>=</span> <span class='varid'>optionIsSet</span> <span class='varid'>n</span> <span class='varid'>options</span>
-<a name="line-279"></a>
-<a name="line-280"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-281"></a>
-<a name="line-282"></a><span class='comment'>-- |</span>
-<a name="line-283"></a><span class='comment'>-- the arrow version of 'readDocument', the arrow input is the source URI</span>
-<a name="line-284"></a>
-<a name="line-285"></a><a name="readFromDocument"></a><span class='definition'>readFromDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
-<a name="line-286"></a><span class='definition'>readFromDocument</span> <span class='varid'>userOptions</span>
-<a name="line-287"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>
-<a name="line-288"></a>
-<a name="line-289"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-290"></a>
-<a name="line-291"></a><span class='comment'>-- |</span>
-<a name="line-292"></a><span class='comment'>-- read a document that is stored in a normal Haskell String</span>
-<a name="line-293"></a><span class='comment'>--</span>
-<a name="line-294"></a><span class='comment'>-- the same function as readDocument, but the parameter forms the input.</span>
-<a name="line-295"></a><span class='comment'>-- All options available for 'readDocument' are applicable for readString.</span>
-<a name="line-296"></a><span class='comment'>--</span>
-<a name="line-297"></a><span class='comment'>-- Default encoding: No encoding is done, the String argument is taken as Unicode string</span>
-<a name="line-298"></a>
-<a name="line-299"></a><a name="readString"></a><span class='definition'>readString</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-300"></a><span class='definition'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>content</span>
-<a name="line-301"></a>    <span class='keyglyph'>=</span> <span class='varid'>readDocument</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>a_encoding</span><span class='layout'>,</span> <span class='varid'>unicodeString</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>userOptions</span> <span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>stringProtocol</span> <span class='varop'>++</span> <span class='varid'>content</span><span class='layout'>)</span>
-<a name="line-302"></a>
-<a name="line-303"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-304"></a>
-<a name="line-305"></a><span class='comment'>-- |</span>
-<a name="line-306"></a><span class='comment'>-- the arrow version of 'readString', the arrow input is the source URI</span>
-<a name="line-307"></a>
-<a name="line-308"></a><a name="readFromString"></a><span class='definition'>readFromString</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
-<a name="line-309"></a><span class='definition'>readFromString</span> <span class='varid'>userOptions</span>
-<a name="line-310"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>
+<a name="line-174"></a>read w3c home page (xhtml), validate and check namespaces, remove whitespace between tags, trace activities with level 2
+<a name="line-175"></a>
+<a name="line-176"></a>for minimal complete examples see 'Text.XML.HXT.Arrow.WriteDocument.writeDocument' and 'runX', the main starting point for running an XML arrow.
+<a name="line-177"></a>-}</span>
+<a name="line-178"></a>
+<a name="line-179"></a><a name="readDocument"></a><span class='definition'>readDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-180"></a><span class='definition'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>src</span>
+<a name="line-181"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceLevel</span>
+<a name="line-182"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-183"></a>      <span class='varid'>addInputOptionsToSystemState</span>
+<a name="line-184"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-185"></a>      <span class='varid'>getDocumentContents</span> <span class='varid'>remainingOptions</span> <span class='varid'>src</span>
+<a name="line-186"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-187"></a>      <span class='layout'>(</span> <span class='varid'>processDoc</span> <span class='varop'>$&lt;</span> <span class='varid'>getMimeType</span> <span class='layout'>)</span>
+<a name="line-188"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-189"></a>      <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" processed"</span><span class='layout'>)</span>
+<a name="line-190"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-191"></a>      <span class='varid'>traceSource</span>
+<a name="line-192"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-193"></a>      <span class='varid'>traceTree</span>
+<a name="line-194"></a>    <span class='keyword'>where</span>
+<a name="line-195"></a>    <span class='varid'>options</span>
+<a name="line-196"></a> 	<span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>
+<a name="line-197"></a>
+<a name="line-198"></a>    <span class='varid'>defaultOptions</span>
+<a name="line-199"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>a_parse_html</span><span class='layout'>,</span>		  <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-200"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_tagsoup</span><span class='layout'>,</span>		  <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-201"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_validate</span><span class='layout'>,</span>		  <span class='varid'>v_1</span> <span class='layout'>)</span>
+<a name="line-202"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_issue_warnings</span><span class='layout'>,</span>		  <span class='varid'>v_1</span> <span class='layout'>)</span>
+<a name="line-203"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_check_namespaces</span><span class='layout'>,</span>	  <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-204"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_canonicalize</span><span class='layout'>,</span>		  <span class='varid'>v_1</span> <span class='layout'>)</span>
+<a name="line-205"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span>	  <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-206"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>	  <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-207"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span>	  <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-208"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_ignore_encoding_errors</span><span class='layout'>,</span>   <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-209"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_ignore_none_xml_contents</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>
+<a name="line-210"></a>	  <span class='keyglyph'>]</span>
+<a name="line-211"></a>
+<a name="line-212"></a>    <span class='varid'>httpOptions</span>
+<a name="line-213"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>a_proxy</span><span class='layout'>,</span> <span class='varid'>a_use_curl</span><span class='layout'>,</span> <span class='varid'>a_options_curl</span><span class='layout'>,</span> <span class='varid'>a_mime_types</span><span class='keyglyph'>]</span>
+<a name="line-214"></a>
+<a name="line-215"></a>    <span class='varid'>remainingOptions</span>
+<a name="line-216"></a>	 <span class='keyglyph'>=</span> <span class='varid'>options</span> <span class='comment'>-- filter (not . flip hasEntry defaultOptions . fst) options</span>
+<a name="line-217"></a>
+<a name="line-218"></a>    <span class='varid'>traceLevel</span>
+<a name="line-219"></a>	<span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>this</span> <span class='layout'>(</span><span class='varid'>setTraceLevel</span> <span class='varop'>.</span> <span class='varid'>read</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>a_trace</span> <span class='varop'>$</span> <span class='varid'>options</span>
+<a name="line-220"></a>
+<a name="line-221"></a>    <span class='varid'>addInputOptionsToSystemState</span>
+<a name="line-222"></a>	<span class='keyglyph'>=</span> <span class='varid'>addSysOptions</span> <span class='layout'>(</span><span class='varid'>filter</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>`elem`</span> <span class='varid'>httpOptions</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varid'>remainingOptions</span><span class='layout'>)</span>
+<a name="line-223"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-224"></a>	  <span class='varid'>loadMineTypes</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_mime_types</span> <span class='varid'>userOptions</span><span class='layout'>)</span>
+<a name="line-225"></a>	  <span class='keyword'>where</span>
+<a name="line-226"></a>	  <span class='varid'>addSysOptions</span>
+<a name="line-227"></a>	      <span class='keyglyph'>=</span> <span class='varid'>seqA</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>setParamString</span><span class='layout'>)</span>
+<a name="line-228"></a>	  <span class='varid'>loadMineTypes</span> <span class='str'>""</span>	<span class='keyglyph'>=</span> <span class='varid'>this</span>
+<a name="line-229"></a>	  <span class='varid'>loadMineTypes</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>setMimeTypeTableFromFile</span> <span class='varid'>f</span>
+<a name="line-230"></a>
+<a name="line-231"></a>    <span class='varid'>getMimeType</span>
+<a name="line-232"></a>	<span class='keyglyph'>=</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>&gt;&gt;^</span> <span class='varid'>map</span> <span class='varid'>toLower</span>
+<a name="line-233"></a>
+<a name="line-234"></a>    <span class='varid'>processDoc</span> <span class='varid'>mimeType</span>
+<a name="line-235"></a>	<span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" (mime type: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>mimeType</span> <span class='varop'>++</span> <span class='str'>") will be processed"</span><span class='layout'>)</span>
+<a name="line-236"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-237"></a>	  <span class='varid'>parse</span>
+<a name="line-238"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-239"></a>	  <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isXmlOrHtml</span>
+<a name="line-240"></a>	    <span class='keyword'>then</span> <span class='layout'>(</span> <span class='varid'>checknamespaces</span>
+<a name="line-241"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-242"></a>		   <span class='varid'>canonicalize</span>
+<a name="line-243"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-244"></a>		   <span class='varid'>whitespace</span>
+<a name="line-245"></a>		   <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-246"></a>		   <span class='varid'>relax</span>
+<a name="line-247"></a>		 <span class='layout'>)</span>
+<a name="line-248"></a>	    <span class='keyword'>else</span> <span class='varid'>this</span>
+<a name="line-249"></a>	  <span class='layout'>)</span>
+<a name="line-250"></a>	<span class='keyword'>where</span>
+<a name="line-251"></a>	<span class='varid'>parse</span>
+<a name="line-252"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isHtml</span>
+<a name="line-253"></a>	      <span class='varop'>||</span> 
+<a name="line-254"></a>	      <span class='varid'>withTagSoup</span>		<span class='keyglyph'>=</span> <span class='varid'>parseHtmlDocument</span>			<span class='comment'>-- parse as HTML or with tagsoup XML</span>
+<a name="line-255"></a>					  <span class='varid'>withTagSoup</span>
+<a name="line-256"></a>					  <span class='varid'>withNamespaces</span>
+<a name="line-257"></a>					  <span class='varid'>issueW</span>
+<a name="line-258"></a>					  <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span><span class='layout'>)</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>preserveCmt</span><span class='layout'>)</span>
+<a name="line-259"></a>					  <span class='varid'>removeWS</span>
+<a name="line-260"></a>					  <span class='varid'>isHtml</span>
+<a name="line-261"></a>	    <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='conid'>False</span>		<span class='comment'>-- for Relax NG use XML parser without validation</span>
+<a name="line-262"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isXml</span>			<span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='varid'>validate</span>		<span class='comment'>-- parse as XML</span>
+<a name="line-263"></a>	    <span class='keyglyph'>|</span> <span class='varid'>removeNoneXml</span>		<span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='varid'>none</span>			<span class='comment'>-- don't parse, if mime type is not XML nore HTML</span>
+<a name="line-264"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>					<span class='comment'>-- but remove contents when option is set</span>
+<a name="line-265"></a>	<span class='varid'>checknamespaces</span>
+<a name="line-266"></a>	    <span class='keyglyph'>|</span> <span class='layout'>(</span><span class='varid'>withNamespaces</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>not</span> <span class='varid'>withTagSoup</span><span class='layout'>)</span>
+<a name="line-267"></a>	      <span class='varop'>||</span>
+<a name="line-268"></a>	      <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>propagateAndValidateNamespaces</span>
+<a name="line-269"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
+<a name="line-270"></a>	<span class='varid'>canonicalize</span>
+<a name="line-271"></a>	    <span class='keyglyph'>|</span> <span class='varid'>withTagSoup</span>		<span class='keyglyph'>=</span> <span class='varid'>this</span>					<span class='comment'>-- tagsoup already removes redundant struff</span>
+<a name="line-272"></a>	    <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>
+<a name="line-273"></a>	    <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span>
+<a name="line-274"></a>	      <span class='varop'>&amp;&amp;</span>
+<a name="line-275"></a>	      <span class='varid'>preserveCmt</span>			<span class='keyglyph'>=</span> <span class='varid'>canonicalizeForXPath</span>
+<a name="line-276"></a>	    <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span>	<span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>
+<a name="line-277"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
+<a name="line-278"></a>	<span class='varid'>relax</span>
+<a name="line-279"></a>	    <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span>		<span class='keyglyph'>=</span> <span class='varid'>validateDocumentWithRelaxSchema</span> <span class='varid'>remainingOptions</span> <span class='varid'>relaxSchema</span>
+<a name="line-280"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
+<a name="line-281"></a>	<span class='varid'>whitespace</span>
+<a name="line-282"></a>	    <span class='keyglyph'>|</span> <span class='varid'>removeWS</span>
+<a name="line-283"></a>	      <span class='varop'>&amp;&amp;</span>
+<a name="line-284"></a>	      <span class='varid'>not</span> <span class='varid'>withTagSoup</span>		<span class='keyglyph'>=</span> <span class='varid'>removeDocWhiteSpace</span>			<span class='comment'>-- tagsoup already removes whitespace</span>
+<a name="line-285"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>this</span>
+<a name="line-286"></a>	<span class='varid'>validateWithRelax</span>	<span class='keyglyph'>=</span> <span class='varid'>hasEntry</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>
+<a name="line-287"></a>	<span class='varid'>relaxSchema</span>		<span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>
+<a name="line-288"></a>	<span class='varid'>parseHtml</span>		<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_html</span>
+<a name="line-289"></a>	<span class='varid'>isHtml</span>			<span class='keyglyph'>=</span> <span class='varid'>parseHtml</span>				<span class='comment'>-- force HTML</span>
+<a name="line-290"></a>				  <span class='varop'>||</span>
+<a name="line-291"></a>				  <span class='layout'>(</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>mimeType</span> <span class='layout'>)</span>
+<a name="line-292"></a>	<span class='varid'>isXml</span>			<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>not</span> <span class='varid'>parseHtml</span> <span class='layout'>)</span>
+<a name="line-293"></a>				  <span class='varop'>||</span>
+<a name="line-294"></a>				  <span class='layout'>(</span> <span class='varid'>parseByMimeType</span>
+<a name="line-295"></a>				    <span class='varop'>&amp;&amp;</span>
+<a name="line-296"></a>				    <span class='layout'>(</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>mimeType</span>
+<a name="line-297"></a>				      <span class='varop'>||</span>
+<a name="line-298"></a>				      <span class='varid'>null</span> <span class='varid'>mimeType</span>
+<a name="line-299"></a>				    <span class='layout'>)</span>					<span class='comment'>-- mime type is XML or not known</span>
+<a name="line-300"></a>				  <span class='layout'>)</span>
+<a name="line-301"></a>	<span class='varid'>isXmlOrHtml</span>	<span class='keyglyph'>=</span> <span class='varid'>isHtml</span> <span class='varop'>||</span> <span class='varid'>isXml</span>
+<a name="line-302"></a>	<span class='varid'>parseByMimeType</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_by_mimetype</span>
+<a name="line-303"></a>	<span class='varid'>validate</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_validate</span>
+<a name="line-304"></a>	<span class='varid'>withNamespaces</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_check_namespaces</span>
+<a name="line-305"></a>	<span class='varid'>withTagSoup</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_tagsoup</span>
+<a name="line-306"></a>	<span class='varid'>issueW</span>		<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_issue_warnings</span>
+<a name="line-307"></a>	<span class='varid'>removeWS</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span>
+<a name="line-308"></a>	<span class='varid'>preserveCmt</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_preserve_comment</span>
+<a name="line-309"></a>	<span class='varid'>removeNoneXml</span>	<span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_ignore_none_xml_contents</span>
+<a name="line-310"></a>	<span class='varid'>hasOption</span> <span class='varid'>n</span>	<span class='keyglyph'>=</span> <span class='varid'>optionIsSet</span> <span class='varid'>n</span> <span class='varid'>options</span>
 <a name="line-311"></a>
 <a name="line-312"></a><span class='comment'>-- ------------------------------------------------------------</span>
 <a name="line-313"></a>
 <a name="line-314"></a><span class='comment'>-- |</span>
-<a name="line-315"></a><span class='comment'>-- parse a string as HTML content, substitute all HTML entity refs and canonicalize tree</span>
-<a name="line-316"></a><span class='comment'>-- (substitute char refs, ...). Errors are ignored.</span>
-<a name="line-317"></a><span class='comment'>-- </span>
-<a name="line-318"></a><span class='comment'>-- A simpler version of 'readFromString' but with less functionality.</span>
-<a name="line-319"></a><span class='comment'>-- Does not run in the IO monad</span>
+<a name="line-315"></a><span class='comment'>-- the arrow version of 'readDocument', the arrow input is the source URI</span>
+<a name="line-316"></a>
+<a name="line-317"></a><a name="readFromDocument"></a><span class='definition'>readFromDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
+<a name="line-318"></a><span class='definition'>readFromDocument</span> <span class='varid'>userOptions</span>
+<a name="line-319"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>
 <a name="line-320"></a>
-<a name="line-321"></a><a name="hread"></a><span class='definition'>hread</span>			<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
-<a name="line-322"></a><span class='definition'>hread</span>
-<a name="line-323"></a>    <span class='keyglyph'>=</span> <span class='varid'>parseHtmlContent</span>
-<a name="line-324"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-325"></a>      <span class='varid'>substHtmlEntityRefs</span>
-<a name="line-326"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-327"></a>      <span class='varid'>processTopDown</span> <span class='layout'>(</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isError</span> <span class='layout'>)</span>
-<a name="line-328"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-329"></a>      <span class='varid'>canonicalizeContents</span>
+<a name="line-321"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-322"></a>
+<a name="line-323"></a><span class='comment'>-- |</span>
+<a name="line-324"></a><span class='comment'>-- read a document that is stored in a normal Haskell String</span>
+<a name="line-325"></a><span class='comment'>--</span>
+<a name="line-326"></a><span class='comment'>-- the same function as readDocument, but the parameter forms the input.</span>
+<a name="line-327"></a><span class='comment'>-- All options available for 'readDocument' are applicable for readString.</span>
+<a name="line-328"></a><span class='comment'>--</span>
+<a name="line-329"></a><span class='comment'>-- Default encoding: No encoding is done, the String argument is taken as Unicode string</span>
 <a name="line-330"></a>
-<a name="line-331"></a><span class='comment'>-- |</span>
-<a name="line-332"></a><span class='comment'>-- parse a string as XML content, substitute all predefined XML entity refs and canonicalize tree</span>
-<a name="line-333"></a><span class='comment'>-- (substitute char refs, ...)</span>
+<a name="line-331"></a><a name="readString"></a><span class='definition'>readString</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-332"></a><span class='definition'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>content</span>
+<a name="line-333"></a>    <span class='keyglyph'>=</span> <span class='varid'>readDocument</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>a_encoding</span><span class='layout'>,</span> <span class='varid'>unicodeString</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>userOptions</span> <span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>stringProtocol</span> <span class='varop'>++</span> <span class='varid'>content</span><span class='layout'>)</span>
 <a name="line-334"></a>
-<a name="line-335"></a><a name="xread"></a><span class='definition'>xread</span>			<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
-<a name="line-336"></a><span class='definition'>xread</span>
-<a name="line-337"></a>    <span class='keyglyph'>=</span> <span class='varid'>parseXmlContent</span>
-<a name="line-338"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-339"></a>      <span class='varid'>substXmlEntityRefs</span>
-<a name="line-340"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-341"></a>      <span class='varid'>canonicalizeContents</span>
-<a name="line-342"></a>
-<a name="line-343"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-344"></a>
+<a name="line-335"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-336"></a>
+<a name="line-337"></a><span class='comment'>-- |</span>
+<a name="line-338"></a><span class='comment'>-- the arrow version of 'readString', the arrow input is the source URI</span>
+<a name="line-339"></a>
+<a name="line-340"></a><a name="readFromString"></a><span class='definition'>readFromString</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
+<a name="line-341"></a><span class='definition'>readFromString</span> <span class='varid'>userOptions</span>
+<a name="line-342"></a>    <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>
+<a name="line-343"></a>
+<a name="line-344"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-345"></a>
+<a name="line-346"></a><span class='comment'>-- |</span>
+<a name="line-347"></a><span class='comment'>-- parse a string as HTML content, substitute all HTML entity refs and canonicalize tree</span>
+<a name="line-348"></a><span class='comment'>-- (substitute char refs, ...). Errors are ignored.</span>
+<a name="line-349"></a><span class='comment'>-- </span>
+<a name="line-350"></a><span class='comment'>-- A simpler version of 'readFromString' but with less functionality.</span>
+<a name="line-351"></a><span class='comment'>-- Does not run in the IO monad</span>
+<a name="line-352"></a>
+<a name="line-353"></a><a name="hread"></a><span class='definition'>hread</span>			<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
+<a name="line-354"></a><span class='definition'>hread</span>
+<a name="line-355"></a>    <span class='keyglyph'>=</span> <span class='varid'>parseHtmlContent</span>
+<a name="line-356"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-357"></a>      <span class='varid'>substHtmlEntityRefs</span>
+<a name="line-358"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-359"></a>      <span class='varid'>processTopDown</span> <span class='layout'>(</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isError</span> <span class='layout'>)</span>
+<a name="line-360"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-361"></a>      <span class='varid'>canonicalizeContents</span>
+<a name="line-362"></a>
+<a name="line-363"></a><span class='comment'>-- |</span>
+<a name="line-364"></a><span class='comment'>-- parse a string as XML content, substitute all predefined XML entity refs and canonicalize tree</span>
+<a name="line-365"></a><span class='comment'>-- (substitute char refs, ...)</span>
+<a name="line-366"></a>
+<a name="line-367"></a><a name="xread"></a><span class='definition'>xread</span>			<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
+<a name="line-368"></a><span class='definition'>xread</span>
+<a name="line-369"></a>    <span class='keyglyph'>=</span> <span class='varid'>parseXmlContent</span>
+<a name="line-370"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-371"></a>      <span class='varid'>substXmlEntityRefs</span>
+<a name="line-372"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-373"></a>      <span class='varid'>canonicalizeContents</span>
+<a name="line-374"></a>
+<a name="line-375"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-376"></a>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow-XmlIOStateArrow.html b/doc/hdoc/src/Text-XML-HXT-Arrow-XmlIOStateArrow.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow-XmlIOStateArrow.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow-XmlIOStateArrow.html
@@ -67,846 +67,888 @@
 <a name="line-59"></a>      <span class='varid'>unsetParam</span><span class='layout'>,</span>
 <a name="line-60"></a>      <span class='varid'>getParam</span><span class='layout'>,</span>
 <a name="line-61"></a>      <span class='varid'>getAllParams</span><span class='layout'>,</span>
-<a name="line-62"></a>      <span class='varid'>setParamString</span><span class='layout'>,</span>
-<a name="line-63"></a>      <span class='varid'>getParamString</span><span class='layout'>,</span>
-<a name="line-64"></a>      <span class='varid'>setParamInt</span><span class='layout'>,</span>
-<a name="line-65"></a>      <span class='varid'>getParamInt</span><span class='layout'>,</span>
-<a name="line-66"></a>      
-<a name="line-67"></a>      <span class='comment'>-- * Error Message Handling</span>
-<a name="line-68"></a>      <span class='varid'>clearErrStatus</span><span class='layout'>,</span>
-<a name="line-69"></a>      <span class='varid'>setErrStatus</span><span class='layout'>,</span>
-<a name="line-70"></a>      <span class='varid'>getErrStatus</span><span class='layout'>,</span>
-<a name="line-71"></a>      <span class='varid'>setErrMsgStatus</span><span class='layout'>,</span>
-<a name="line-72"></a>      <span class='varid'>setErrorMsgHandler</span><span class='layout'>,</span>
-<a name="line-73"></a>
-<a name="line-74"></a>      <span class='varid'>errorMsgStderr</span><span class='layout'>,</span>
-<a name="line-75"></a>      <span class='varid'>errorMsgCollect</span><span class='layout'>,</span>
-<a name="line-76"></a>      <span class='varid'>errorMsgStderrAndCollect</span><span class='layout'>,</span>
-<a name="line-77"></a>      <span class='varid'>errorMsgIgnore</span><span class='layout'>,</span>
-<a name="line-78"></a>
-<a name="line-79"></a>      <span class='varid'>getErrorMessages</span><span class='layout'>,</span>
-<a name="line-80"></a>
-<a name="line-81"></a>      <span class='varid'>filterErrorMsg</span><span class='layout'>,</span>
-<a name="line-82"></a>      <span class='varid'>issueWarn</span><span class='layout'>,</span>
-<a name="line-83"></a>      <span class='varid'>issueErr</span><span class='layout'>,</span>
-<a name="line-84"></a>      <span class='varid'>issueFatal</span><span class='layout'>,</span>
-<a name="line-85"></a>      <span class='varid'>setDocumentStatus</span><span class='layout'>,</span>
-<a name="line-86"></a>      <span class='varid'>setDocumentStatusFromSystemState</span><span class='layout'>,</span>
-<a name="line-87"></a>      <span class='varid'>documentStatusOk</span><span class='layout'>,</span>
-<a name="line-88"></a>
-<a name="line-89"></a>      <span class='comment'>-- * Document Base</span>
-<a name="line-90"></a>      <span class='varid'>setBaseURI</span><span class='layout'>,</span>
-<a name="line-91"></a>      <span class='varid'>getBaseURI</span><span class='layout'>,</span>
-<a name="line-92"></a>      <span class='varid'>changeBaseURI</span><span class='layout'>,</span>
-<a name="line-93"></a>      <span class='varid'>setDefaultBaseURI</span><span class='layout'>,</span>
-<a name="line-94"></a>      <span class='varid'>getDefaultBaseURI</span><span class='layout'>,</span>
-<a name="line-95"></a>      <span class='varid'>runInLocalURIContext</span><span class='layout'>,</span>
-<a name="line-96"></a>
-<a name="line-97"></a>      <span class='comment'>-- * Tracing</span>
-<a name="line-98"></a>      <span class='varid'>setTraceLevel</span><span class='layout'>,</span>
-<a name="line-99"></a>      <span class='varid'>getTraceLevel</span><span class='layout'>,</span>
-<a name="line-100"></a>      <span class='varid'>withTraceLevel</span><span class='layout'>,</span>
-<a name="line-101"></a>      <span class='varid'>trace</span><span class='layout'>,</span>
-<a name="line-102"></a>      <span class='varid'>traceMsg</span><span class='layout'>,</span>
-<a name="line-103"></a>      <span class='varid'>traceString</span><span class='layout'>,</span>
-<a name="line-104"></a>      <span class='varid'>traceSource</span><span class='layout'>,</span>
-<a name="line-105"></a>      <span class='varid'>traceTree</span><span class='layout'>,</span>
-<a name="line-106"></a>      <span class='varid'>traceDoc</span><span class='layout'>,</span>
-<a name="line-107"></a>      <span class='varid'>traceState</span><span class='layout'>,</span>
-<a name="line-108"></a>
-<a name="line-109"></a>      <span class='comment'>-- * URI Manipulation</span>
-<a name="line-110"></a>      <span class='varid'>expandURIString</span><span class='layout'>,</span>
-<a name="line-111"></a>      <span class='varid'>expandURI</span><span class='layout'>,</span>
-<a name="line-112"></a>      <span class='varid'>mkAbsURI</span><span class='layout'>,</span>
-<a name="line-113"></a>
-<a name="line-114"></a>      <span class='varid'>getFragmentFromURI</span><span class='layout'>,</span>
-<a name="line-115"></a>      <span class='varid'>getPathFromURI</span><span class='layout'>,</span>
-<a name="line-116"></a>      <span class='varid'>getPortFromURI</span><span class='layout'>,</span>
-<a name="line-117"></a>      <span class='varid'>getQueryFromURI</span><span class='layout'>,</span>
-<a name="line-118"></a>      <span class='varid'>getRegNameFromURI</span><span class='layout'>,</span>
-<a name="line-119"></a>      <span class='varid'>getSchemeFromURI</span><span class='layout'>,</span>
-<a name="line-120"></a>      <span class='varid'>getUserInfoFromURI</span>
-<a name="line-121"></a>      <span class='layout'>)</span>
-<a name="line-122"></a><span class='keyword'>where</span>
-<a name="line-123"></a>
-<a name="line-124"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>				<span class='comment'>-- arrow classes</span>
-<a name="line-125"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>
-<a name="line-126"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>
-<a name="line-127"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>
-<a name="line-128"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIO</span>
-<a name="line-129"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOStateListArrow</span>
-<a name="line-130"></a>
-<a name="line-131"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Strategies</span><span class='varop'>.</span><span class='conid'>DeepSeq</span>
-<a name="line-132"></a>
-<a name="line-133"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
-<a name="line-134"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
-<a name="line-135"></a>
-<a name="line-136"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>
-<a name="line-137"></a>    <span class='layout'>(</span> <span class='varid'>addHeadlineToXmlDoc</span>
-<a name="line-138"></a>    <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>
-<a name="line-139"></a>    <span class='layout'>,</span> <span class='varid'>indentDoc</span>
-<a name="line-140"></a>    <span class='layout'>)</span>
-<a name="line-141"></a>
-<a name="line-142"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-143"></a>
-<a name="line-144"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-145"></a>    <span class='layout'>(</span> <span class='conid'>URI</span>
-<a name="line-146"></a>    <span class='layout'>,</span> <span class='varid'>escapeURIChar</span>
-<a name="line-147"></a>    <span class='layout'>,</span> <span class='varid'>isUnescapedInURI</span>
-<a name="line-148"></a>    <span class='layout'>,</span> <span class='varid'>nonStrictRelativeTo</span>
-<a name="line-149"></a>    <span class='layout'>,</span> <span class='varid'>parseURIReference</span>
-<a name="line-150"></a>    <span class='layout'>,</span> <span class='varid'>uriAuthority</span>
-<a name="line-151"></a>    <span class='layout'>,</span> <span class='varid'>uriFragment</span>
-<a name="line-152"></a>    <span class='layout'>,</span> <span class='varid'>uriPath</span>
-<a name="line-153"></a>    <span class='layout'>,</span> <span class='varid'>uriPort</span>
-<a name="line-154"></a>    <span class='layout'>,</span> <span class='varid'>uriQuery</span>
-<a name="line-155"></a>    <span class='layout'>,</span> <span class='varid'>uriRegName</span>
-<a name="line-156"></a>    <span class='layout'>,</span> <span class='varid'>uriScheme</span>
-<a name="line-157"></a>    <span class='layout'>,</span> <span class='varid'>uriUserInfo</span>
-<a name="line-158"></a>    <span class='layout'>)</span>
-<a name="line-159"></a>
-<a name="line-160"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
-<a name="line-161"></a>    <span class='layout'>(</span> <span class='varid'>hPutStrLn</span>
-<a name="line-162"></a>    <span class='layout'>,</span> <span class='varid'>hFlush</span>
-<a name="line-163"></a>    <span class='layout'>,</span> <span class='varid'>stderr</span>
-<a name="line-164"></a>    <span class='layout'>)</span>
-<a name="line-165"></a>
-<a name="line-166"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>
-<a name="line-167"></a>    <span class='layout'>(</span> <span class='varid'>getCurrentDirectory</span>
-<a name="line-168"></a>    <span class='layout'>)</span>
-<a name="line-169"></a>
-<a name="line-170"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-171"></a><span class='comment'>{- $datatypes -}</span>
-<a name="line-172"></a>
-<a name="line-173"></a>
-<a name="line-174"></a><span class='comment'>-- |</span>
-<a name="line-175"></a><span class='comment'>-- predefined system state data type with all components for the</span>
-<a name="line-176"></a><span class='comment'>-- system functions, like trace, error handling, ...</span>
-<a name="line-177"></a>
-<a name="line-178"></a><a name="XIOSysState"></a><span class='keyword'>data</span> <span class='conid'>XIOSysState</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOSys</span>  <span class='layout'>{</span> <span class='varid'>xio_trace</span>			<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>
-<a name="line-179"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>
-<a name="line-180"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorModule</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>
-<a name="line-181"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span>		<span class='keyglyph'>::</span>   <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='conid'>()</span>
-<a name="line-182"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Bool</span>
-<a name="line-183"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XmlTrees</span>
-<a name="line-184"></a>				  <span class='layout'>,</span> <span class='varid'>xio_baseURI</span>			<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>
-<a name="line-185"></a>				  <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>
-<a name="line-186"></a>				  <span class='layout'>,</span> <span class='varid'>xio_attrList</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>
-<a name="line-187"></a>				  <span class='layout'>}</span>
-<a name="line-188"></a>
-<a name="line-189"></a><span class='keyword'>instance</span> <span class='conid'>DeepSeq</span> <span class='conid'>XIOSysState</span> <span class='keyword'>where</span>
-<a name="line-190"></a>    <span class='varid'>deepSeq</span> <span class='layout'>(</span><span class='conid'>XIOSys</span> <span class='varid'>tr</span> <span class='varid'>es</span> <span class='varid'>em</span> <span class='varid'>emh</span> <span class='varid'>emc</span> <span class='varid'>eml</span> <span class='varid'>bu</span> <span class='varid'>du</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>y</span>
-<a name="line-191"></a>	<span class='keyglyph'>=</span> <span class='varid'>deepSeq</span> <span class='varid'>tr</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>es</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>em</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>emh</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>emc</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>eml</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>bu</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>du</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>al</span> <span class='varid'>y</span>
-<a name="line-192"></a>
-<a name="line-193"></a><span class='comment'>-- |</span>
-<a name="line-194"></a><span class='comment'>-- state datatype consists of a system state and a user state</span>
-<a name="line-195"></a><span class='comment'>-- the user state is not fixed</span>
-<a name="line-196"></a>
-<a name="line-197"></a><a name="XIOState"></a><span class='keyword'>data</span> <span class='conid'>XIOState</span> <span class='varid'>us</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XIOSysState</span>
-<a name="line-198"></a>				   <span class='layout'>,</span> <span class='varid'>xio_userState</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='varid'>us</span>
-<a name="line-199"></a>				   <span class='layout'>}</span>
-<a name="line-200"></a>
-<a name="line-201"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>DeepSeq</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>DeepSeq</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyword'>where</span>
-<a name="line-202"></a>    <span class='varid'>deepSeq</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>sys</span> <span class='varid'>usr</span><span class='layout'>)</span> <span class='varid'>y</span>	<span class='keyglyph'>=</span> <span class='varid'>deepSeq</span> <span class='varid'>sys</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>usr</span> <span class='varid'>y</span>
-<a name="line-203"></a>
-<a name="line-204"></a><span class='comment'>-- |</span>
-<a name="line-205"></a><span class='comment'>-- The arrow type for stateful arrows</span>
-<a name="line-206"></a>
-<a name="line-207"></a><a name="IOStateArrow"></a><span class='keyword'>type</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>	<span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span>
-<a name="line-208"></a>
-<a name="line-209"></a><span class='comment'>-- |</span>
-<a name="line-210"></a><span class='comment'>-- The arrow for stateful arrows with no user defined state</span>
-<a name="line-211"></a>
-<a name="line-212"></a><a name="IOSArrow"></a><span class='keyword'>type</span> <span class='conid'>IOSArrow</span> <span class='varid'>b</span> <span class='varid'>c</span>	<span class='keyglyph'>=</span> <span class='conid'>IOStateArrow</span> <span class='conid'>()</span> <span class='varid'>b</span> <span class='varid'>c</span>
-<a name="line-213"></a>
-<a name="line-214"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-215"></a>
-<a name="line-216"></a>
-<a name="line-217"></a><span class='comment'>-- | the default global state, used as initial state when running an 'IOSArrow' with 'runIOSLA' or</span>
-<a name="line-218"></a><span class='comment'>-- 'runX'</span>
-<a name="line-219"></a>
-<a name="line-220"></a><a name="initialState"></a><span class='definition'>initialState</span>	<span class='keyglyph'>::</span> <span class='varid'>us</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XIOState</span> <span class='varid'>us</span>
-<a name="line-221"></a><span class='definition'>initialState</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> 	<span class='keyglyph'>=</span> <span class='varid'>initialSysState</span>
-<a name="line-222"></a>			   <span class='layout'>,</span> <span class='varid'>xio_userState</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span>
-<a name="line-223"></a>			   <span class='layout'>}</span>
-<a name="line-224"></a>
-<a name="line-225"></a><a name="initialSysState"></a><span class='definition'>initialSysState</span>	<span class='keyglyph'>::</span> <span class='conid'>XIOSysState</span>
-<a name="line-226"></a><span class='definition'>initialSysState</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOSys</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span>		<span class='keyglyph'>=</span> <span class='num'>0</span>
-<a name="line-227"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span>	<span class='keyglyph'>=</span> <span class='varid'>c_ok</span>
-<a name="line-228"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorModule</span>	<span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-229"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span>	<span class='keyglyph'>=</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span>
-<a name="line-230"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span>	<span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-231"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span>	<span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-232"></a>			 <span class='layout'>,</span> <span class='varid'>xio_baseURI</span>		<span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-233"></a>			 <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span>	<span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-234"></a>			 <span class='layout'>,</span> <span class='varid'>xio_attrList</span>		<span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-235"></a>			 <span class='layout'>}</span>
-<a name="line-236"></a>
-<a name="line-237"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-238"></a>
-<a name="line-239"></a><span class='comment'>-- |</span>
-<a name="line-240"></a><span class='comment'>-- apply an 'IOSArrow' to an empty root node with 'initialState' () as initial state</span>
-<a name="line-241"></a><span class='comment'>--</span>
-<a name="line-242"></a><span class='comment'>-- the main entry point for running a state arrow with IO</span>
-<a name="line-243"></a><span class='comment'>--</span>
-<a name="line-244"></a><span class='comment'>-- when running @ runX f@ an empty XML root node is applied to @f@.</span>
-<a name="line-245"></a><span class='comment'>-- usually @f@ will start with a constant arrow (ignoring the input), e.g. a 'Text.XML.HXT.Arrow.ReadDocument.readDocument' arrow.</span>
-<a name="line-246"></a><span class='comment'>--</span>
-<a name="line-247"></a><span class='comment'>-- for usage see examples with 'Text.XML.HXT.Arrow.WriteDocument.writeDocument'</span>
-<a name="line-248"></a><span class='comment'>--</span>
-<a name="line-249"></a><span class='comment'>-- if input has to be feed into the arrow use 'Control.Arrow.IOStateListArrow.runIOSLA' like in @ runIOSLA f emptyX inputDoc @</span>
-<a name="line-250"></a>
-<a name="line-251"></a><a name="runX"></a><span class='definition'>runX</span>		<span class='keyglyph'>::</span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>
-<a name="line-252"></a><span class='definition'>runX</span>		<span class='keyglyph'>=</span> <span class='varid'>runXIOState</span> <span class='layout'>(</span><span class='varid'>initialState</span> <span class='conid'>()</span><span class='layout'>)</span>
-<a name="line-253"></a>
-<a name="line-254"></a><a name="runXIOState"></a><span class='definition'>runXIOState</span>	<span class='keyglyph'>::</span> <span class='conid'>XIOState</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>
-<a name="line-255"></a><span class='definition'>runXIOState</span> <span class='varid'>s0</span> <span class='varid'>f</span>
-<a name="line-256"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-257"></a>      <span class='layout'>(</span><span class='sel'>_finalState</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runIOSLA</span> <span class='layout'>(</span><span class='varid'>emptyRoot</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>s0</span> <span class='varid'>undefined</span>
-<a name="line-258"></a>      <span class='varid'>return</span> <span class='varid'>res</span>
-<a name="line-259"></a>    <span class='keyword'>where</span>
-<a name="line-260"></a>    <span class='varid'>emptyRoot</span>    <span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='conid'>[]</span>
-<a name="line-261"></a>
-<a name="line-262"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-263"></a>
-<a name="line-264"></a><span class='comment'>{- user state -}</span>
-<a name="line-265"></a>
-<a name="line-266"></a><span class='comment'>-- | read the user defined part of the state</span>
-<a name="line-267"></a>
-<a name="line-268"></a><a name="getUserState"></a><span class='definition'>getUserState</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>s</span>
-<a name="line-269"></a><span class='definition'>getUserState</span>
-<a name="line-270"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-271"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='keyglyph'>]</span><span class='layout'>)</span>
-<a name="line-272"></a>
-<a name="line-273"></a><span class='comment'>-- | change the user defined part of the state</span>
-<a name="line-274"></a>
-<a name="line-275"></a><a name="changeUserState"></a><span class='definition'>changeUserState</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-276"></a><span class='definition'>changeUserState</span> <span class='varid'>cf</span>
-<a name="line-277"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-278"></a>      <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>cf</span> <span class='varid'>v</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-279"></a>      <span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>
-<a name="line-280"></a>
-<a name="line-281"></a><span class='comment'>-- | set the user defined part of the state</span>
-<a name="line-282"></a>
-<a name="line-283"></a><a name="setUserState"></a><span class='definition'>setUserState</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>s</span>
-<a name="line-284"></a><span class='definition'>setUserState</span>
-<a name="line-285"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeUserState</span> <span class='varid'>const</span>
-<a name="line-286"></a>
-<a name="line-287"></a><span class='comment'>-- | extend user state</span>
-<a name="line-288"></a><span class='comment'>--</span>
-<a name="line-289"></a><span class='comment'>-- Run an arrow with an extended user state component, The old component</span>
-<a name="line-290"></a><span class='comment'>-- is stored together with a new one in a pair, the arrow is executed with this</span>
-<a name="line-291"></a><span class='comment'>-- extended state, and the augmented state component is removed form the state</span>
-<a name="line-292"></a><span class='comment'>-- when the arrow has finished its execution</span>
-<a name="line-293"></a>
-<a name="line-294"></a><a name="withExtendedUserState"></a><span class='definition'>withExtendedUserState</span>	<span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='layout'>(</span><span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>s0</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>
-<a name="line-295"></a><span class='definition'>withExtendedUserState</span> <span class='varid'>initS1</span> <span class='varid'>f</span>
-<a name="line-296"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s0</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-297"></a>      <span class='keyword'>do</span>
-<a name="line-298"></a>      <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>finalS</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span>          <span class='varid'>xio_sysState</span>  <span class='varid'>s0</span>
-<a name="line-299"></a>					      <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>initS1</span><span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='varid'>s0</span><span class='layout'>)</span>
-<a name="line-300"></a>					      <span class='layout'>}</span>
-<a name="line-301"></a>				   <span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-302"></a>      <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span>      <span class='varid'>xio_sysState</span>  <span class='varid'>finalS</span>
-<a name="line-303"></a>			<span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>finalS</span><span class='layout'>)</span>
-<a name="line-304"></a>			<span class='layout'>}</span>
-<a name="line-305"></a>	     <span class='layout'>,</span> <span class='varid'>res</span>
-<a name="line-306"></a>	     <span class='layout'>)</span>
-<a name="line-307"></a>
-<a name="line-308"></a><span class='comment'>-- | change the type of user state</span>
-<a name="line-309"></a><span class='comment'>--</span>
-<a name="line-310"></a><span class='comment'>-- This conversion is useful, when running a state arrow with another</span>
-<a name="line-311"></a><span class='comment'>-- structure of the user state, e.g. with () when executing some IO arrows</span>
-<a name="line-312"></a>
-<a name="line-313"></a><a name="withOtherUserState"></a><span class='definition'>withOtherUserState</span>	<span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s1</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>
-<a name="line-314"></a><span class='definition'>withOtherUserState</span> <span class='varid'>s1</span> <span class='varid'>f</span>
-<a name="line-315"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-316"></a>      <span class='keyword'>do</span>
-<a name="line-317"></a>      <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s</span>
-<a name="line-318"></a>					 <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>s1</span>
-<a name="line-319"></a>					 <span class='layout'>}</span>
-<a name="line-320"></a>			      <span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-321"></a>      <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span>  <span class='varid'>s'</span>
-<a name="line-322"></a>			<span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_userState</span> <span class='varid'>s</span>
-<a name="line-323"></a>			<span class='layout'>}</span>
-<a name="line-324"></a>	     <span class='layout'>,</span> <span class='varid'>res</span>
-<a name="line-325"></a>	     <span class='layout'>)</span>
-<a name="line-326"></a>
-<a name="line-327"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-328"></a>
-<a name="line-329"></a><span class='comment'>{- $system state params -}</span>
-<a name="line-330"></a>
-<a name="line-331"></a><a name="getSysParam"></a><span class='definition'>getSysParam</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XIOSysState</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>
-<a name="line-332"></a><span class='definition'>getSysParam</span> <span class='varid'>f</span>
-<a name="line-333"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='sel'>_x</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-334"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>f</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-335"></a>
-<a name="line-336"></a><a name="changeSysParam"></a><span class='definition'>changeSysParam</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XIOSysState</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XIOSysState</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-337"></a><span class='definition'>changeSysParam</span> <span class='varid'>cf</span>
-<a name="line-338"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-339"></a>	<span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>cf</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='varid'>s</span>
-<a name="line-340"></a>	<span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>
-<a name="line-341"></a>      <span class='layout'>)</span>
-<a name="line-342"></a>    <span class='keyword'>where</span>
-<a name="line-343"></a>    <span class='varid'>changeSysState</span> <span class='varid'>css</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>css</span> <span class='layout'>(</span><span class='varid'>xio_sysState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-344"></a>
-<a name="line-345"></a><span class='comment'>-- | store a single XML tree in global state under a given attribute name</span>
-<a name="line-346"></a>
-<a name="line-347"></a><a name="setParam"></a><span class='definition'>setParam</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-348"></a><span class='definition'>setParam</span> <span class='varid'>n</span>
-<a name="line-349"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>^&gt;&gt;</span> <span class='varid'>setParamList</span> <span class='varid'>n</span>
-<a name="line-350"></a>
-<a name="line-351"></a><span class='comment'>-- | store a list of XML trees in global system state under a given attribute name</span>
-<a name="line-352"></a>
-<a name="line-353"></a><a name="setParamList"></a><span class='definition'>setParamList</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTrees</span> <span class='conid'>XmlTree</span>
-<a name="line-354"></a><span class='definition'>setParamList</span> <span class='varid'>n</span>
-<a name="line-355"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>addE</span>
-<a name="line-356"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-357"></a>      <span class='varid'>arrL</span> <span class='varid'>id</span>
-<a name="line-358"></a>    <span class='keyword'>where</span>
-<a name="line-359"></a>    <span class='varid'>addE</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>addEntry</span> <span class='varid'>n</span> <span class='varid'>x</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-360"></a>
-<a name="line-361"></a><span class='comment'>-- | remove an entry in global state, arrow input remains unchanged</span>
-<a name="line-362"></a>
-<a name="line-363"></a><a name="unsetParam"></a><span class='definition'>unsetParam</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-364"></a><span class='definition'>unsetParam</span> <span class='varid'>n</span>
-<a name="line-365"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>delE</span>
-<a name="line-366"></a>    <span class='keyword'>where</span>
-<a name="line-367"></a>    <span class='varid'>delE</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>delEntry</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-368"></a>
-<a name="line-369"></a><span class='comment'>-- | read an attribute value from global state</span>
-<a name="line-370"></a>
-<a name="line-371"></a><a name="getParam"></a><span class='definition'>getParam</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-372"></a><span class='definition'>getParam</span> <span class='varid'>n</span>
-<a name="line-373"></a>    <span class='keyglyph'>=</span> <span class='varid'>getAllParams</span>
-<a name="line-374"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-375"></a>      <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-376"></a>
-<a name="line-377"></a><span class='comment'>-- | read all attributes from global state</span>
-<a name="line-378"></a>
-<a name="line-379"></a><a name="getAllParams"></a><span class='definition'>getAllParams</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>
-<a name="line-380"></a><span class='definition'>getAllParams</span>
-<a name="line-381"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_attrList</span>
-<a name="line-382"></a>
-<a name="line-383"></a><a name="setParamString"></a><span class='definition'>setParamString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-384"></a><span class='definition'>setParamString</span> <span class='varid'>n</span> <span class='varid'>v</span>
-<a name="line-385"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>txt</span> <span class='varid'>v</span>
-<a name="line-386"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-387"></a>		<span class='varid'>setParam</span> <span class='varid'>n</span>
-<a name="line-388"></a>	      <span class='layout'>)</span>
-<a name="line-389"></a>
-<a name="line-390"></a><span class='comment'>-- | read a string value from global state,</span>
-<a name="line-391"></a><span class='comment'>-- if parameter not set \"\" is returned</span>
-<a name="line-392"></a>
-<a name="line-393"></a><a name="getParamString"></a><span class='definition'>getParamString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
-<a name="line-394"></a><span class='definition'>getParamString</span> <span class='varid'>n</span>
-<a name="line-395"></a>    <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>getParam</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-396"></a>
-<a name="line-397"></a><span class='comment'>-- | store an int value in global state</span>
-<a name="line-398"></a>
-<a name="line-399"></a><a name="setParamInt"></a><span class='definition'>setParamInt</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-400"></a><span class='definition'>setParamInt</span> <span class='varid'>n</span> <span class='varid'>v</span>
-<a name="line-401"></a>    <span class='keyglyph'>=</span> <span class='varid'>setParamString</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>v</span><span class='layout'>)</span>
-<a name="line-402"></a>
-<a name="line-403"></a><span class='comment'>-- | read an int value from global state</span>
-<a name="line-404"></a><span class='comment'>-- </span>
-<a name="line-405"></a><span class='comment'>-- &gt; getParamInt 0 myIntAttr</span>
-<a name="line-406"></a>
-<a name="line-407"></a><a name="getParamInt"></a><span class='definition'>getParamInt</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>
-<a name="line-408"></a><span class='definition'>getParamInt</span> <span class='varid'>def</span> <span class='varid'>n</span>
-<a name="line-409"></a>    <span class='keyglyph'>=</span> <span class='varid'>getParamString</span> <span class='varid'>n</span>
-<a name="line-410"></a>      <span class='varop'>&gt;&gt;^</span>
-<a name="line-411"></a>      <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>x</span> <span class='keyword'>then</span> <span class='varid'>def</span> <span class='keyword'>else</span> <span class='varid'>read</span> <span class='varid'>x</span><span class='layout'>)</span>
-<a name="line-412"></a>
-<a name="line-413"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-414"></a>
-<a name="line-415"></a><span class='comment'>-- | reset global error variable</span>
-<a name="line-416"></a>
-<a name="line-417"></a><a name="changeErrorStatus"></a><span class='definition'>changeErrorStatus</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>
-<a name="line-418"></a><span class='definition'>changeErrorStatus</span> <span class='varid'>f</span>
-<a name="line-419"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>l</span> <span class='layout'>(</span><span class='varid'>xio_errorStatus</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span><span class='layout'>)</span>
-<a name="line-420"></a>
-<a name="line-421"></a><a name="clearErrStatus"></a><span class='definition'>clearErrStatus</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-422"></a><span class='definition'>clearErrStatus</span>
-<a name="line-423"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='num'>0</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>changeErrorStatus</span> <span class='varid'>min</span><span class='layout'>)</span>
-<a name="line-424"></a>
-<a name="line-425"></a><span class='comment'>-- | set global error variable</span>
-<a name="line-426"></a>
-<a name="line-427"></a><a name="setErrStatus"></a><span class='definition'>setErrStatus</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>
-<a name="line-428"></a><span class='definition'>setErrStatus</span>
-<a name="line-429"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeErrorStatus</span> <span class='varid'>max</span>
-<a name="line-430"></a>
-<a name="line-431"></a><span class='comment'>-- | read current global error status</span>
-<a name="line-432"></a>
-<a name="line-433"></a><a name="getErrStatus"></a><span class='definition'>getErrStatus</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>Int</span>
-<a name="line-434"></a><span class='definition'>getErrStatus</span>
-<a name="line-435"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_errorStatus</span>
-<a name="line-436"></a>
-<a name="line-437"></a><span class='comment'>-- | raise the global error status level to that of the input tree</span>
-<a name="line-438"></a>
-<a name="line-439"></a><a name="setErrMsgStatus"></a><span class='definition'>setErrMsgStatus</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-440"></a><span class='definition'>setErrMsgStatus</span>
-<a name="line-441"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span>
-<a name="line-442"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-443"></a>		<span class='varid'>setErrStatus</span>
-<a name="line-444"></a>	      <span class='layout'>)</span>
-<a name="line-445"></a>
-<a name="line-446"></a><span class='comment'>-- | set the error message handler and the flag for collecting the errors</span>
-<a name="line-447"></a>
-<a name="line-448"></a><a name="setErrorMsgHandler"></a><span class='definition'>setErrorMsgHandler</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='conid'>()</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-449"></a><span class='definition'>setErrorMsgHandler</span> <span class='varid'>c</span> <span class='varid'>f</span>
-<a name="line-450"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>
-<a name="line-451"></a>    <span class='keyword'>where</span>
-<a name="line-452"></a>    <span class='varid'>cf</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>=</span> <span class='varid'>f</span>
-<a name="line-453"></a>	       <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='layout'>}</span>
-<a name="line-454"></a>
-<a name="line-455"></a><span class='comment'>-- | error message handler for output to stderr</span>
-<a name="line-456"></a>		  
-<a name="line-457"></a><a name="sysErrorMsg"></a><span class='definition'>sysErrorMsg</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-458"></a><span class='definition'>sysErrorMsg</span>
-<a name="line-459"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>getErrorMsg</span>
-<a name="line-460"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-461"></a>		<span class='varid'>arr</span> <span class='varid'>formatErrorMsg</span>
-<a name="line-462"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-463"></a>		<span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>e</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-464"></a>		  <span class='keyword'>do</span>
-<a name="line-465"></a>		  <span class='layout'>(</span><span class='varid'>xio_errorMsgHandler</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>e</span>
-<a name="line-466"></a>		  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>undefined</span><span class='layout'>)</span>
-<a name="line-467"></a>		<span class='layout'>)</span>
-<a name="line-468"></a>	      <span class='layout'>)</span>
-<a name="line-469"></a>    <span class='keyword'>where</span>
-<a name="line-470"></a>    <span class='varid'>formatErrorMsg</span> <span class='layout'>(</span><span class='varid'>level</span><span class='layout'>,</span> <span class='varid'>msg</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>errClass</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>": "</span> <span class='varop'>++</span> <span class='varid'>msg</span>
-<a name="line-471"></a>    <span class='varid'>errClass</span> <span class='varid'>l</span>
-<a name="line-472"></a>	<span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>"fatal error"</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>l</span> <span class='varop'>$</span> <span class='varid'>msgList</span>
-<a name="line-473"></a>	  <span class='keyword'>where</span>
-<a name="line-474"></a>	  <span class='varid'>msgList</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>c_ok</span><span class='layout'>,</span>	<span class='str'>"no error"</span><span class='layout'>)</span>
-<a name="line-475"></a>			  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_warn</span><span class='layout'>,</span>	<span class='str'>"warning"</span><span class='layout'>)</span>
-<a name="line-476"></a>			  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_err</span><span class='layout'>,</span>	<span class='str'>"error"</span><span class='layout'>)</span>
-<a name="line-477"></a>			  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_fatal</span><span class='layout'>,</span>	<span class='str'>"fatal error"</span><span class='layout'>)</span>
-<a name="line-478"></a>			  <span class='keyglyph'>]</span>
-<a name="line-479"></a>
-<a name="line-480"></a>
-<a name="line-481"></a><span class='comment'>-- | the default error message handler: error output to stderr</span>
-<a name="line-482"></a>
-<a name="line-483"></a><a name="errorMsgStderr"></a><span class='definition'>errorMsgStderr</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-484"></a><span class='definition'>errorMsgStderr</span>		<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>
-<a name="line-485"></a>
-<a name="line-486"></a><span class='comment'>-- | error message handler for collecting errors</span>
-<a name="line-487"></a>
-<a name="line-488"></a><a name="errorMsgCollect"></a><span class='definition'>errorMsgCollect</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-489"></a><span class='definition'>errorMsgCollect</span>		<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>
-<a name="line-490"></a>
-<a name="line-491"></a><span class='comment'>-- | error message handler for output to stderr and collecting</span>
-<a name="line-492"></a>
-<a name="line-493"></a><a name="errorMsgStderrAndCollect"></a><span class='definition'>errorMsgStderrAndCollect</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-494"></a><span class='definition'>errorMsgStderrAndCollect</span>	<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>
-<a name="line-495"></a>
-<a name="line-496"></a><span class='comment'>-- | error message handler for ignoring errors</span>
-<a name="line-497"></a>
-<a name="line-498"></a><a name="errorMsgIgnore"></a><span class='definition'>errorMsgIgnore</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-499"></a><span class='definition'>errorMsgIgnore</span>		<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>
-<a name="line-500"></a>
-<a name="line-501"></a><span class='comment'>-- |</span>
-<a name="line-502"></a><span class='comment'>-- if error messages are collected by the error handler for</span>
-<a name="line-503"></a><span class='comment'>-- processing these messages by the calling application,</span>
-<a name="line-504"></a><span class='comment'>-- this arrow reads the stored messages and clears the error message store</span>
-<a name="line-505"></a>
-<a name="line-506"></a><a name="getErrorMessages"></a><span class='definition'>getErrorMessages</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
-<a name="line-507"></a><span class='definition'>getErrorMessages</span>
-<a name="line-508"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='layout'>(</span><span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>xio_errorMsgList</span><span class='layout'>)</span>		<span class='comment'>-- reverse the list of errors</span>
-<a name="line-509"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-510"></a>      <span class='varid'>clearErrorMsgList</span>					<span class='comment'>-- clear the error list in the system state</span>
-<a name="line-511"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-512"></a>      <span class='varid'>arrL</span> <span class='varid'>id</span>
-<a name="line-513"></a>
-<a name="line-514"></a><a name="clearErrorMsgList"></a><span class='definition'>clearErrorMsgList</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-515"></a><span class='definition'>clearErrorMsgList</span>
-<a name="line-516"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='layout'>}</span> <span class='layout'>)</span>
-<a name="line-517"></a>
-<a name="line-518"></a><a name="addToErrorMsgList"></a><span class='definition'>addToErrorMsgList</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-519"></a><span class='definition'>addToErrorMsgList</span>
-<a name="line-520"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>
-<a name="line-521"></a>    <span class='keyword'>where</span>
-<a name="line-522"></a>    <span class='varid'>cf</span> <span class='varid'>t</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>xio_errorMsgCollect</span> <span class='varid'>s</span>
-<a name="line-523"></a>	     <span class='keyword'>then</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>xio_errorMsgList</span> <span class='varid'>s</span> <span class='layout'>}</span>
-<a name="line-524"></a>	     <span class='keyword'>else</span> <span class='varid'>s</span>
-<a name="line-525"></a>
-<a name="line-526"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-527"></a>
-<a name="line-528"></a><span class='comment'>-- |</span>
-<a name="line-529"></a><span class='comment'>-- filter error messages from input trees and issue errors</span>
-<a name="line-530"></a>
-<a name="line-531"></a><a name="filterErrorMsg"></a><span class='definition'>filterErrorMsg</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-532"></a><span class='definition'>filterErrorMsg</span>
-<a name="line-533"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>setErrMsgStatus</span>
-<a name="line-534"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-535"></a>	<span class='varid'>sysErrorMsg</span>
-<a name="line-536"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-537"></a>	<span class='varid'>addToErrorMsgList</span>
-<a name="line-538"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-539"></a>	<span class='varid'>none</span>
-<a name="line-540"></a>      <span class='layout'>)</span>
-<a name="line-541"></a>      <span class='varop'>`when`</span>
-<a name="line-542"></a>      <span class='varid'>isError</span>
-<a name="line-543"></a>
-<a name="line-544"></a><span class='comment'>-- | generate a warnig message</span>
-<a name="line-545"></a>
-<a name="line-546"></a><a name="issueWarn"></a><span class='definition'>issueWarn</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-547"></a><span class='definition'>issueWarn</span> <span class='varid'>msg</span>		<span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>msg</span>  <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>
-<a name="line-548"></a>
-<a name="line-549"></a><a name="issueErr"></a><span class='comment'>-- | generate an error message</span>
-<a name="line-550"></a><span class='definition'>issueErr</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-551"></a><span class='definition'>issueErr</span> <span class='varid'>msg</span>		<span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='varid'>msg</span>   <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>
-<a name="line-552"></a>
-<a name="line-553"></a><span class='comment'>-- | generate a fatal error message, e.g. document not found</span>
-<a name="line-554"></a>
-<a name="line-555"></a><a name="issueFatal"></a><span class='definition'>issueFatal</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-556"></a><span class='definition'>issueFatal</span> <span class='varid'>msg</span>		<span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>fatal</span> <span class='varid'>msg</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>
-<a name="line-557"></a>
-<a name="line-558"></a><span class='comment'>-- |</span>
-<a name="line-559"></a><span class='comment'>-- add the error level and the module where the error occured</span>
-<a name="line-560"></a><span class='comment'>-- to the attributes of a document root node and remove the children when level is greater or equal to 'c_err'.</span>
-<a name="line-561"></a><span class='comment'>-- called by 'setDocumentStatusFromSystemState' when the system state indicates an error</span>
-<a name="line-562"></a>
-<a name="line-563"></a><a name="setDocumentStatus"></a><span class='definition'>setDocumentStatus</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-564"></a><span class='definition'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>
-<a name="line-565"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttrl</span> <span class='layout'>(</span> <span class='varid'>sattr</span> <span class='varid'>a_status</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>level</span><span class='layout'>)</span>
-<a name="line-566"></a>		   <span class='varop'>&lt;+&gt;</span>
-<a name="line-567"></a>		   <span class='varid'>sattr</span> <span class='varid'>a_module</span> <span class='varid'>msg</span>
-<a name="line-568"></a>		 <span class='layout'>)</span>
-<a name="line-569"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-570"></a>	<span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'>&gt;=</span> <span class='varid'>c_err</span>
-<a name="line-571"></a>	  <span class='keyword'>then</span> <span class='varid'>setChildren</span> <span class='conid'>[]</span>
-<a name="line-572"></a>	  <span class='keyword'>else</span> <span class='varid'>this</span>
-<a name="line-573"></a>	<span class='layout'>)</span>
-<a name="line-574"></a>      <span class='layout'>)</span>
-<a name="line-575"></a>      <span class='varop'>`when`</span>
-<a name="line-576"></a>      <span class='varid'>isRoot</span>
-<a name="line-577"></a>
-<a name="line-578"></a><span class='comment'>-- |</span>
-<a name="line-579"></a><span class='comment'>-- check whether the error level attribute in the system state</span>
-<a name="line-580"></a><span class='comment'>-- is set to error, in this case the children of the document root are</span>
-<a name="line-581"></a><span class='comment'>-- removed and the module name where the error occured and the error level are added as attributes with 'setDocumentStatus'</span>
-<a name="line-582"></a><span class='comment'>-- else nothing is changed</span>
-<a name="line-583"></a>
-<a name="line-584"></a><a name="setDocumentStatusFromSystemState"></a><span class='definition'>setDocumentStatusFromSystemState</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-585"></a><span class='definition'>setDocumentStatusFromSystemState</span> <span class='varid'>msg</span>
-<a name="line-586"></a>    <span class='keyglyph'>=</span> <span class='varid'>setStatus</span> <span class='varop'>$&lt;</span> <span class='varid'>getErrStatus</span>
-<a name="line-587"></a>    <span class='keyword'>where</span>
-<a name="line-588"></a>    <span class='varid'>setStatus</span> <span class='varid'>level</span>
-<a name="line-589"></a>	<span class='keyglyph'>|</span> <span class='varid'>level</span> <span class='varop'>&lt;=</span> <span class='varid'>c_warn</span>	<span class='keyglyph'>=</span> <span class='varid'>this</span>
-<a name="line-590"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='varid'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>
-<a name="line-591"></a>
-<a name="line-592"></a>
-<a name="line-593"></a><span class='comment'>-- |</span>
-<a name="line-594"></a><span class='comment'>-- check whether tree is a document root and the status attribute has a value less than 'c_err'</span>
-<a name="line-595"></a>
-<a name="line-596"></a><a name="documentStatusOk"></a><span class='definition'>documentStatusOk</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-597"></a><span class='definition'>documentStatusOk</span>
-<a name="line-598"></a>    <span class='keyglyph'>=</span> <span class='varid'>isRoot</span>
-<a name="line-599"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-600"></a>      <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='varid'>a_status</span>
-<a name="line-601"></a>	 <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-602"></a>	 <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>null</span> <span class='varid'>v</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>::</span><span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'>&lt;=</span> <span class='varid'>c_warn</span><span class='layout'>)</span>
-<a name="line-603"></a>	<span class='layout'>)</span>
-<a name="line-604"></a>	<span class='varop'>`guards`</span>
-<a name="line-605"></a>	<span class='varid'>this</span>
-<a name="line-606"></a>      <span class='layout'>)</span>
-<a name="line-607"></a>
-<a name="line-608"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-609"></a>
-<a name="line-610"></a><span class='comment'>-- | set the base URI of a document, used e.g. for reading includes, e.g. external entities,</span>
-<a name="line-611"></a><span class='comment'>-- the input must be an absolute URI</span>
-<a name="line-612"></a>
-<a name="line-613"></a><a name="setBaseURI"></a><span class='definition'>setBaseURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-614"></a><span class='definition'>setBaseURI</span>
-<a name="line-615"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>
-<a name="line-616"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-617"></a>      <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setBaseURI: new base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
-<a name="line-618"></a>
-<a name="line-619"></a><span class='comment'>-- | read the base URI from the globale state</span>
-<a name="line-620"></a>
-<a name="line-621"></a><a name="getBaseURI"></a><span class='definition'>getBaseURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
-<a name="line-622"></a><span class='definition'>getBaseURI</span>
-<a name="line-623"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_baseURI</span>
-<a name="line-624"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-625"></a>      <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getDefaultBaseURI</span>
-<a name="line-626"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-627"></a>	  <span class='varid'>setBaseURI</span>		
-<a name="line-628"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-629"></a>	  <span class='varid'>getBaseURI</span>
-<a name="line-630"></a>	<span class='layout'>)</span>
-<a name="line-631"></a>	<span class='varop'>`when`</span>
-<a name="line-632"></a>	<span class='varid'>isA</span> <span class='varid'>null</span>				<span class='comment'>-- set and get it, if not yet done</span>
-<a name="line-633"></a>      <span class='layout'>)</span>
-<a name="line-634"></a>
-<a name="line-635"></a><span class='comment'>-- | change the base URI with a possibly relative URI, can be used for</span>
-<a name="line-636"></a><span class='comment'>-- evaluating the xml:base attribute. Returns the new absolute base URI.</span>
-<a name="line-637"></a><span class='comment'>-- Fails, if input is not parsable with parseURIReference</span>
-<a name="line-638"></a><span class='comment'>--</span>
-<a name="line-639"></a><span class='comment'>-- see also: 'setBaseURI', 'mkAbsURI'</span>
-<a name="line-640"></a>
-<a name="line-641"></a><a name="changeBaseURI"></a><span class='definition'>changeBaseURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-642"></a><span class='definition'>changeBaseURI</span>
-<a name="line-643"></a>    <span class='keyglyph'>=</span> <span class='varid'>mkAbsURI</span>
-<a name="line-644"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-645"></a>      <span class='varid'>setBaseURI</span>
-<a name="line-646"></a>
-<a name="line-647"></a><span class='comment'>-- | set the default base URI, if parameter is null, the system base (@ file:\/\/\/\&lt;cwd\&gt;\/ @) is used,</span>
-<a name="line-648"></a><span class='comment'>-- else the parameter, must be called before any document is read</span>
-<a name="line-649"></a>
-<a name="line-650"></a><a name="setDefaultBaseURI"></a><span class='definition'>setDefaultBaseURI</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
-<a name="line-651"></a><span class='definition'>setDefaultBaseURI</span> <span class='varid'>base</span>
-<a name="line-652"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>base</span>
-<a name="line-653"></a>	<span class='keyword'>then</span> <span class='varid'>arrIO</span> <span class='varid'>getDir</span>
-<a name="line-654"></a>	<span class='keyword'>else</span> <span class='varid'>constA</span> <span class='varid'>base</span>
-<a name="line-655"></a>      <span class='layout'>)</span>
-<a name="line-656"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-657"></a>      <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>
-<a name="line-658"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-659"></a>      <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setDefaultBaseURI: new default base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
-<a name="line-660"></a>    <span class='keyword'>where</span>
-<a name="line-661"></a>    <span class='varid'>getDir</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-662"></a>	       <span class='varid'>cwd</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCurrentDirectory</span>
-<a name="line-663"></a>	       <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"file://"</span> <span class='varop'>++</span> <span class='varid'>normalize</span> <span class='varid'>cwd</span> <span class='varop'>++</span> <span class='str'>"/"</span><span class='layout'>)</span>
-<a name="line-664"></a>
-<a name="line-665"></a>    <span class='comment'>-- under Windows getCurrentDirectory returns something like: "c:\path\to\file"</span>
-<a name="line-666"></a>    <span class='comment'>-- backslaches are not allowed in URIs and paths must start with a /</span>
-<a name="line-667"></a>    <span class='comment'>-- so this is transformed into "/c:/path/to/file"</span>
-<a name="line-668"></a>
-<a name="line-669"></a>    <span class='varid'>normalize</span> <span class='varid'>wd'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-670"></a>	<span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>
-<a name="line-671"></a>	    <span class='keyglyph'>=</span> <span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>concatMap</span> <span class='varid'>win32ToUriChar</span> <span class='varid'>wd'</span>
-<a name="line-672"></a>    <span class='varid'>normalize</span> <span class='varid'>wd'</span>
-<a name="line-673"></a>	<span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>wd'</span>
-<a name="line-674"></a>				 
-<a name="line-675"></a>    <span class='varid'>win32ToUriChar</span> <span class='chr'>'\\'</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span>
-<a name="line-676"></a>    <span class='varid'>win32ToUriChar</span> <span class='varid'>c</span>    <span class='keyglyph'>=</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>
-<a name="line-677"></a>
-<a name="line-678"></a>    <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>  <span class='keyglyph'>=</span> <span class='varid'>escapeURIChar</span> <span class='varid'>isUnescapedInURI</span> <span class='varid'>c</span>   <span class='comment'>-- from Network.URI</span>
-<a name="line-679"></a>
-<a name="line-680"></a>
-<a name="line-681"></a><span class='comment'>-- | get the default base URI</span>
-<a name="line-682"></a>
-<a name="line-683"></a><a name="getDefaultBaseURI"></a><span class='definition'>getDefaultBaseURI</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
-<a name="line-684"></a><span class='definition'>getDefaultBaseURI</span>
-<a name="line-685"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_defaultBaseURI</span>		<span class='comment'>-- read default uri in system  state</span>
-<a name="line-686"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-687"></a>      <span class='layout'>(</span> <span class='varid'>setDefaultBaseURI</span> <span class='str'>""</span>			<span class='comment'>-- set the default uri in system state</span>
-<a name="line-688"></a>	<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-689"></a>	<span class='varid'>getDefaultBaseURI</span> <span class='layout'>)</span> <span class='varop'>`when`</span> <span class='varid'>isA</span> <span class='varid'>null</span>	<span class='comment'>-- when uri not yet set</span>
-<a name="line-690"></a>
-<a name="line-691"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-692"></a>
-<a name="line-693"></a><span class='comment'>-- | remember base uri, run an arrow and restore the base URI, used with external entity substitution</span>
-<a name="line-694"></a>
-<a name="line-695"></a><a name="runInLocalURIContext"></a><span class='definition'>runInLocalURIContext</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>
-<a name="line-696"></a><span class='definition'>runInLocalURIContext</span> <span class='varid'>f</span>
-<a name="line-697"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>this</span> <span class='layout'>)</span>
-<a name="line-698"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-699"></a>      <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>
-<a name="line-700"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-701"></a>      <span class='layout'>(</span> <span class='varid'>setBaseURI</span> <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>
-<a name="line-702"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-703"></a>      <span class='varid'>arrL</span> <span class='varid'>snd</span>
-<a name="line-704"></a>
-<a name="line-705"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-706"></a>
-<a name="line-707"></a><span class='comment'>-- | set the global trace level</span>
-<a name="line-708"></a>
-<a name="line-709"></a><a name="setTraceLevel"></a><span class='definition'>setTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-710"></a><span class='definition'>setTraceLevel</span> <span class='varid'>l</span>
-<a name="line-711"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>=</span> <span class='varid'>l</span> <span class='layout'>}</span> <span class='layout'>)</span>
-<a name="line-712"></a>
-<a name="line-713"></a><span class='comment'>-- | read the global trace level</span>
-<a name="line-714"></a>
-<a name="line-715"></a><a name="getTraceLevel"></a><span class='definition'>getTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>
-<a name="line-716"></a><span class='definition'>getTraceLevel</span>
-<a name="line-717"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_trace</span>
-<a name="line-718"></a>
-<a name="line-719"></a><span class='comment'>-- | run an arrow with a given trace level, the old trace level is restored after the arrow execution</span>
-<a name="line-720"></a>
-<a name="line-721"></a><a name="withTraceLevel"></a><span class='definition'>withTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>
-<a name="line-722"></a><span class='definition'>withTraceLevel</span> <span class='varid'>level</span> <span class='varid'>f</span>
-<a name="line-723"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span>       <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>this</span> <span class='layout'>)</span>
-<a name="line-724"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-725"></a>      <span class='layout'>(</span> <span class='varid'>setTraceLevel</span> <span class='varid'>level</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>
-<a name="line-726"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-727"></a>      <span class='layout'>(</span> <span class='varid'>restoreTraceLevel</span>   <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>
-<a name="line-728"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-729"></a>      <span class='varid'>arrL</span> <span class='varid'>snd</span>
-<a name="line-730"></a>    <span class='keyword'>where</span>
-<a name="line-731"></a>    <span class='varid'>restoreTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>
-<a name="line-732"></a>    <span class='varid'>restoreTraceLevel</span>
-<a name="line-733"></a>	<span class='keyglyph'>=</span> <span class='varid'>setTraceLevel</span> <span class='varop'>$&lt;</span> <span class='varid'>this</span>
-<a name="line-734"></a>
-<a name="line-735"></a><span class='comment'>-- | apply a trace arrow and issue message to stderr</span>
-<a name="line-736"></a>
-<a name="line-737"></a><a name="trace"></a><span class='definition'>trace</span>		<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-738"></a><span class='definition'>trace</span> <span class='varid'>level</span> <span class='varid'>trc</span>
-<a name="line-739"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>trc</span>
-<a name="line-740"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-741"></a>		<span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-742"></a>				<span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='varid'>s</span>
-<a name="line-743"></a>				<span class='varid'>hFlush</span> <span class='varid'>stderr</span>
-<a name="line-744"></a>			      <span class='layout'>)</span>
-<a name="line-745"></a>		      <span class='layout'>)</span>
-<a name="line-746"></a>	      <span class='layout'>)</span>
-<a name="line-747"></a>      <span class='varop'>`when`</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span>
-<a name="line-748"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-749"></a>	       <span class='varid'>isA</span> <span class='layout'>(</span><span class='varop'>&gt;=</span> <span class='varid'>level</span><span class='layout'>)</span>
-<a name="line-750"></a>	     <span class='layout'>)</span>
-<a name="line-751"></a>
-<a name="line-752"></a><a name="traceMsg"></a><span class='comment'>-- | issue a string message as trace </span>
-<a name="line-753"></a><span class='definition'>traceMsg</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-754"></a><span class='definition'>traceMsg</span> <span class='varid'>level</span> <span class='varid'>msg</span>
-<a name="line-755"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>trace</span> <span class='varid'>level</span> <span class='varop'>$</span>
-<a name="line-756"></a>		<span class='varid'>constA</span> <span class='layout'>(</span><span class='chr'>'-'</span> <span class='conop'>:</span> <span class='str'>"- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>") "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span>
-<a name="line-757"></a>	      <span class='layout'>)</span>
-<a name="line-758"></a>
-<a name="line-759"></a><a name="traceString"></a><span class='comment'>-- | issue the string input of an arrow</span>
-<a name="line-760"></a><span class='definition'>traceString</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-761"></a><span class='definition'>traceString</span> <span class='varid'>level</span> <span class='varid'>f</span>
-<a name="line-762"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>f</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>traceMsg</span> <span class='varid'>level</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-763"></a>
-<a name="line-764"></a><span class='comment'>-- | issue the source representation of a document if trace level &gt;= 3</span>
-<a name="line-765"></a><span class='comment'>--</span>
-<a name="line-766"></a><span class='comment'>-- for better readability the source is formated with indentDoc</span>
-<a name="line-767"></a>
-<a name="line-768"></a><a name="traceSource"></a><span class='definition'>traceSource</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-769"></a><span class='definition'>traceSource</span> 
-<a name="line-770"></a>    <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>3</span> <span class='varop'>$</span>
-<a name="line-771"></a>      <span class='varid'>xshow</span>
-<a name="line-772"></a>      <span class='layout'>(</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span> <span class='conop'>:-&gt;</span> <span class='layout'>(</span> <span class='varid'>indentDoc</span>
-<a name="line-773"></a>			       <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-774"></a>			       <span class='varid'>getChildren</span>
-<a name="line-775"></a>			     <span class='layout'>)</span>
-<a name="line-776"></a>		<span class='layout'>,</span> <span class='varid'>isElem</span> <span class='conop'>:-&gt;</span> <span class='layout'>(</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>this</span><span class='keyglyph'>]</span>
-<a name="line-777"></a>			       <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>indentDoc</span>
-<a name="line-778"></a>			       <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span>
-<a name="line-779"></a>			       <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>isElem</span>
-<a name="line-780"></a>			     <span class='layout'>)</span>
-<a name="line-781"></a>		<span class='layout'>,</span> <span class='varid'>this</span>   <span class='conop'>:-&gt;</span> <span class='varid'>this</span>
-<a name="line-782"></a>		<span class='keyglyph'>]</span>
-<a name="line-783"></a>      <span class='layout'>)</span>
-<a name="line-784"></a>
-<a name="line-785"></a><a name="traceTree"></a><span class='comment'>-- | issue the tree representation of a document if trace level &gt;= 4</span>
-<a name="line-786"></a><span class='definition'>traceTree</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-787"></a><span class='definition'>traceTree</span>
-<a name="line-788"></a>    <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>4</span> <span class='varop'>$</span>
-<a name="line-789"></a>      <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='varid'>treeRepOfXmlDoc</span>
-<a name="line-790"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-791"></a>	      <span class='varid'>addHeadlineToXmlDoc</span>
-<a name="line-792"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-793"></a>	      <span class='varid'>getChildren</span>
-<a name="line-794"></a>	    <span class='layout'>)</span>
-<a name="line-795"></a>
-<a name="line-796"></a><span class='comment'>-- | trace a main computation step</span>
-<a name="line-797"></a><span class='comment'>-- issue a message when trace level &gt;= 1, issue document source if level &gt;= 3, issue tree when level is &gt;= 4</span>
-<a name="line-798"></a>
-<a name="line-799"></a><a name="traceDoc"></a><span class='definition'>traceDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
-<a name="line-800"></a><span class='definition'>traceDoc</span> <span class='varid'>msg</span>
-<a name="line-801"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='varid'>msg</span>
-<a name="line-802"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-803"></a>      <span class='varid'>traceSource</span>
-<a name="line-804"></a>      <span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-805"></a>      <span class='varid'>traceTree</span>
-<a name="line-806"></a>
-<a name="line-807"></a><span class='comment'>-- | trace the global state</span>
-<a name="line-808"></a>
-<a name="line-809"></a><a name="traceState"></a><span class='definition'>traceState</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
-<a name="line-810"></a><span class='definition'>traceState</span>
-<a name="line-811"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAllParams</span> <span class='varop'>&gt;&gt;.</span> <span class='varid'>concat</span><span class='layout'>)</span>
-<a name="line-812"></a>			<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-813"></a>			<span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>formatParam</span><span class='layout'>)</span>
-<a name="line-814"></a>		      <span class='layout'>)</span>
-<a name="line-815"></a>		<span class='varop'>&gt;&gt;&gt;</span>
-<a name="line-816"></a>		<span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"global state:\n"</span> <span class='varop'>++</span><span class='layout'>)</span>
-<a name="line-817"></a>	      <span class='layout'>)</span>
-<a name="line-818"></a>      <span class='keyword'>where</span>
-<a name="line-819"></a>      <span class='comment'>-- formatParam	:: (String, XmlTrees) -&gt; IOStateArrow s b1 XmlTree</span>
-<a name="line-820"></a>      <span class='varid'>formatParam</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
-<a name="line-821"></a>	  <span class='keyglyph'>=</span> <span class='varid'>mkelem</span> <span class='str'>"param"</span> <span class='keyglyph'>[</span><span class='varid'>sattr</span> <span class='str'>"name"</span> <span class='varid'>n</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='varop'>&lt;+&gt;</span> <span class='varid'>txt</span> <span class='str'>"\n"</span>
-<a name="line-822"></a>
-<a name="line-823"></a><span class='comment'>-- ----------------------------------------------------------</span>
-<a name="line-824"></a>
-<a name="line-825"></a><span class='comment'>-- | compute the absolut URI for a given URI and a base URI</span>
-<a name="line-826"></a>
-<a name="line-827"></a><a name="expandURIString"></a><span class='definition'>expandURIString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>String</span>
-<a name="line-828"></a><span class='definition'>expandURIString</span> <span class='varid'>uri</span> <span class='varid'>base</span>
-<a name="line-829"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-830"></a>      <span class='varid'>base'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>base</span>
-<a name="line-831"></a>      <span class='varid'>uri'</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>
-<a name="line-832"></a>      <span class='varid'>abs'</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>nonStrictRelativeTo</span> <span class='varid'>uri'</span> <span class='varid'>base'</span>
-<a name="line-833"></a>      <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>show</span> <span class='varid'>abs'</span>
-<a name="line-834"></a>
-<a name="line-835"></a><span class='comment'>-- | arrow variant of 'expandURIString', fails if 'expandURIString' returns Nothing</span>
-<a name="line-836"></a>
-<a name="line-837"></a><a name="expandURI"></a><span class='definition'>expandURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='conid'>String</span>
-<a name="line-838"></a><span class='definition'>expandURI</span>
-<a name="line-839"></a>    <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>uncurry</span> <span class='varid'>expandURIString</span><span class='layout'>)</span>
-<a name="line-840"></a>
-<a name="line-841"></a><span class='comment'>-- | arrow for expanding an input URI into an absolute URI using global base URI, fails if input is not a legal URI</span>
-<a name="line-842"></a>
-<a name="line-843"></a><a name="mkAbsURI"></a><span class='definition'>mkAbsURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-844"></a><span class='definition'>mkAbsURI</span>
-<a name="line-845"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>getBaseURI</span> <span class='layout'>)</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>expandURI</span>
-<a name="line-846"></a>
-<a name="line-847"></a><span class='comment'>-- | arrow for selecting the scheme (protocol) of the URI, fails if input is not a legal URI.</span>
-<a name="line-848"></a><span class='comment'>--</span>
-<a name="line-849"></a><span class='comment'>-- See Network.URI for URI components</span>
-<a name="line-850"></a>
-<a name="line-851"></a><a name="getSchemeFromURI"></a><span class='definition'>getSchemeFromURI</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-852"></a><span class='definition'>getSchemeFromURI</span>	<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>scheme</span>
-<a name="line-853"></a>    <span class='keyword'>where</span>
-<a name="line-854"></a>    <span class='varid'>scheme</span> <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varop'>.</span> <span class='varid'>uriScheme</span>
-<a name="line-855"></a>
-<a name="line-856"></a><span class='comment'>-- | arrow for selecting the registered name (host) of the URI, fails if input is not a legal URI</span>
-<a name="line-857"></a>
-<a name="line-858"></a><a name="getRegNameFromURI"></a><span class='definition'>getRegNameFromURI</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-859"></a><span class='definition'>getRegNameFromURI</span>	<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>host</span>
-<a name="line-860"></a>    <span class='keyword'>where</span>
-<a name="line-861"></a>    <span class='varid'>host</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriRegName</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>
-<a name="line-862"></a>
-<a name="line-863"></a><span class='comment'>-- | arrow for selecting the port number of the URI without leading \':\', fails if input is not a legal URI</span>
-<a name="line-864"></a>
-<a name="line-865"></a><a name="getPortFromURI"></a><span class='definition'>getPortFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-866"></a><span class='definition'>getPortFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>port</span>
-<a name="line-867"></a>    <span class='keyword'>where</span>
-<a name="line-868"></a>    <span class='varid'>port</span> <span class='keyglyph'>=</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>':'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriPort</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>
-<a name="line-869"></a>
-<a name="line-870"></a><span class='comment'>-- | arrow for selecting the user info of the URI without trailing \'\@\', fails if input is not a legal URI</span>
-<a name="line-871"></a>
-<a name="line-872"></a><a name="getUserInfoFromURI"></a><span class='definition'>getUserInfoFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-873"></a><span class='definition'>getUserInfoFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>ui</span>
-<a name="line-874"></a>    <span class='keyword'>where</span>
-<a name="line-875"></a>    <span class='varid'>ui</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>'@'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriUserInfo</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>
-<a name="line-876"></a>
-<a name="line-877"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>
-<a name="line-878"></a>
-<a name="line-879"></a><a name="getPathFromURI"></a><span class='definition'>getPathFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-880"></a><span class='definition'>getPathFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriPath</span>
-<a name="line-881"></a>
-<a name="line-882"></a><span class='comment'>-- | arrow for computing the query component of an URI, fails if input is not a legal URI</span>
-<a name="line-883"></a>
-<a name="line-884"></a><a name="getQueryFromURI"></a><span class='definition'>getQueryFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-885"></a><span class='definition'>getQueryFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriQuery</span>
-<a name="line-886"></a>
-<a name="line-887"></a><span class='comment'>-- | arrow for computing the fragment component of an URI, fails if input is not a legal URI</span>
-<a name="line-888"></a>
-<a name="line-889"></a><a name="getFragmentFromURI"></a><span class='definition'>getFragmentFromURI</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-890"></a><span class='definition'>getFragmentFromURI</span>	<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriFragment</span>
-<a name="line-891"></a>
-<a name="line-892"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>
-<a name="line-893"></a>
-<a name="line-894"></a><a name="getPartFromURI"></a><span class='definition'>getPartFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='layout'>(</span><span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
-<a name="line-895"></a><span class='definition'>getPartFromURI</span> <span class='varid'>sel</span>
-<a name="line-896"></a>    <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>getPart</span><span class='layout'>)</span>
-<a name="line-897"></a>      <span class='keyword'>where</span>
-<a name="line-898"></a>      <span class='varid'>getPart</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-899"></a>		  <span class='varid'>uri</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>s</span>
-<a name="line-900"></a>		  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sel</span> <span class='varid'>uri</span><span class='layout'>)</span>
-<a name="line-901"></a>
-<a name="line-902"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-62"></a>      <span class='varid'>getAllParamsString</span><span class='layout'>,</span>
+<a name="line-63"></a>      <span class='varid'>setParamString</span><span class='layout'>,</span>
+<a name="line-64"></a>      <span class='varid'>getParamString</span><span class='layout'>,</span>
+<a name="line-65"></a>      <span class='varid'>setParamInt</span><span class='layout'>,</span>
+<a name="line-66"></a>      <span class='varid'>getParamInt</span><span class='layout'>,</span>
+<a name="line-67"></a>      
+<a name="line-68"></a>      <span class='comment'>-- * Error Message Handling</span>
+<a name="line-69"></a>      <span class='varid'>clearErrStatus</span><span class='layout'>,</span>
+<a name="line-70"></a>      <span class='varid'>setErrStatus</span><span class='layout'>,</span>
+<a name="line-71"></a>      <span class='varid'>getErrStatus</span><span class='layout'>,</span>
+<a name="line-72"></a>      <span class='varid'>setErrMsgStatus</span><span class='layout'>,</span>
+<a name="line-73"></a>      <span class='varid'>setErrorMsgHandler</span><span class='layout'>,</span>
+<a name="line-74"></a>
+<a name="line-75"></a>      <span class='varid'>errorMsgStderr</span><span class='layout'>,</span>
+<a name="line-76"></a>      <span class='varid'>errorMsgCollect</span><span class='layout'>,</span>
+<a name="line-77"></a>      <span class='varid'>errorMsgStderrAndCollect</span><span class='layout'>,</span>
+<a name="line-78"></a>      <span class='varid'>errorMsgIgnore</span><span class='layout'>,</span>
+<a name="line-79"></a>
+<a name="line-80"></a>      <span class='varid'>getErrorMessages</span><span class='layout'>,</span>
+<a name="line-81"></a>
+<a name="line-82"></a>      <span class='varid'>filterErrorMsg</span><span class='layout'>,</span>
+<a name="line-83"></a>      <span class='varid'>issueWarn</span><span class='layout'>,</span>
+<a name="line-84"></a>      <span class='varid'>issueErr</span><span class='layout'>,</span>
+<a name="line-85"></a>      <span class='varid'>issueFatal</span><span class='layout'>,</span>
+<a name="line-86"></a>      <span class='varid'>setDocumentStatus</span><span class='layout'>,</span>
+<a name="line-87"></a>      <span class='varid'>setDocumentStatusFromSystemState</span><span class='layout'>,</span>
+<a name="line-88"></a>      <span class='varid'>documentStatusOk</span><span class='layout'>,</span>
+<a name="line-89"></a>
+<a name="line-90"></a>      <span class='comment'>-- * Document Base</span>
+<a name="line-91"></a>      <span class='varid'>setBaseURI</span><span class='layout'>,</span>
+<a name="line-92"></a>      <span class='varid'>getBaseURI</span><span class='layout'>,</span>
+<a name="line-93"></a>      <span class='varid'>changeBaseURI</span><span class='layout'>,</span>
+<a name="line-94"></a>      <span class='varid'>setDefaultBaseURI</span><span class='layout'>,</span>
+<a name="line-95"></a>      <span class='varid'>getDefaultBaseURI</span><span class='layout'>,</span>
+<a name="line-96"></a>      <span class='varid'>runInLocalURIContext</span><span class='layout'>,</span>
+<a name="line-97"></a>
+<a name="line-98"></a>      <span class='comment'>-- * Tracing</span>
+<a name="line-99"></a>      <span class='varid'>setTraceLevel</span><span class='layout'>,</span>
+<a name="line-100"></a>      <span class='varid'>getTraceLevel</span><span class='layout'>,</span>
+<a name="line-101"></a>      <span class='varid'>withTraceLevel</span><span class='layout'>,</span>
+<a name="line-102"></a>      <span class='varid'>trace</span><span class='layout'>,</span>
+<a name="line-103"></a>      <span class='varid'>traceMsg</span><span class='layout'>,</span>
+<a name="line-104"></a>      <span class='varid'>traceString</span><span class='layout'>,</span>
+<a name="line-105"></a>      <span class='varid'>traceSource</span><span class='layout'>,</span>
+<a name="line-106"></a>      <span class='varid'>traceTree</span><span class='layout'>,</span>
+<a name="line-107"></a>      <span class='varid'>traceDoc</span><span class='layout'>,</span>
+<a name="line-108"></a>      <span class='varid'>traceState</span><span class='layout'>,</span>
+<a name="line-109"></a>
+<a name="line-110"></a>      <span class='comment'>-- * URI Manipulation</span>
+<a name="line-111"></a>      <span class='varid'>expandURIString</span><span class='layout'>,</span>
+<a name="line-112"></a>      <span class='varid'>expandURI</span><span class='layout'>,</span>
+<a name="line-113"></a>      <span class='varid'>mkAbsURI</span><span class='layout'>,</span>
+<a name="line-114"></a>
+<a name="line-115"></a>      <span class='varid'>getFragmentFromURI</span><span class='layout'>,</span>
+<a name="line-116"></a>      <span class='varid'>getPathFromURI</span><span class='layout'>,</span>
+<a name="line-117"></a>      <span class='varid'>getPortFromURI</span><span class='layout'>,</span>
+<a name="line-118"></a>      <span class='varid'>getQueryFromURI</span><span class='layout'>,</span>
+<a name="line-119"></a>      <span class='varid'>getRegNameFromURI</span><span class='layout'>,</span>
+<a name="line-120"></a>      <span class='varid'>getSchemeFromURI</span><span class='layout'>,</span>
+<a name="line-121"></a>      <span class='varid'>getUserInfoFromURI</span><span class='layout'>,</span>
+<a name="line-122"></a>
+<a name="line-123"></a>      <span class='comment'>-- * Mime Type Handling</span>
+<a name="line-124"></a>      <span class='varid'>setMimeTypeTable</span><span class='layout'>,</span>
+<a name="line-125"></a>      <span class='varid'>setMimeTypeTableFromFile</span>
+<a name="line-126"></a>      <span class='layout'>)</span>
+<a name="line-127"></a><span class='keyword'>where</span>
+<a name="line-128"></a>
+<a name="line-129"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>				<span class='comment'>-- arrow classes</span>
+<a name="line-130"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>
+<a name="line-131"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>
+<a name="line-132"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>
+<a name="line-133"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIO</span>
+<a name="line-134"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOStateListArrow</span>
+<a name="line-135"></a>
+<a name="line-136"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Strategies</span><span class='varop'>.</span><span class='conid'>DeepSeq</span>
+<a name="line-137"></a>
+<a name="line-138"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
+<a name="line-139"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
+<a name="line-140"></a>
+<a name="line-141"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>
+<a name="line-142"></a>    <span class='layout'>(</span> <span class='varid'>addHeadlineToXmlDoc</span>
+<a name="line-143"></a>    <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>
+<a name="line-144"></a>    <span class='layout'>,</span> <span class='varid'>indentDoc</span>
+<a name="line-145"></a>    <span class='layout'>)</span>
+<a name="line-146"></a>
+<a name="line-147"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
+<a name="line-148"></a>
+<a name="line-149"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
+<a name="line-150"></a>    <span class='layout'>(</span> <span class='conid'>URI</span>
+<a name="line-151"></a>    <span class='layout'>,</span> <span class='varid'>escapeURIChar</span>
+<a name="line-152"></a>    <span class='layout'>,</span> <span class='varid'>isUnescapedInURI</span>
+<a name="line-153"></a>    <span class='layout'>,</span> <span class='varid'>nonStrictRelativeTo</span>
+<a name="line-154"></a>    <span class='layout'>,</span> <span class='varid'>parseURIReference</span>
+<a name="line-155"></a>    <span class='layout'>,</span> <span class='varid'>uriAuthority</span>
+<a name="line-156"></a>    <span class='layout'>,</span> <span class='varid'>uriFragment</span>
+<a name="line-157"></a>    <span class='layout'>,</span> <span class='varid'>uriPath</span>
+<a name="line-158"></a>    <span class='layout'>,</span> <span class='varid'>uriPort</span>
+<a name="line-159"></a>    <span class='layout'>,</span> <span class='varid'>uriQuery</span>
+<a name="line-160"></a>    <span class='layout'>,</span> <span class='varid'>uriRegName</span>
+<a name="line-161"></a>    <span class='layout'>,</span> <span class='varid'>uriScheme</span>
+<a name="line-162"></a>    <span class='layout'>,</span> <span class='varid'>uriUserInfo</span>
+<a name="line-163"></a>    <span class='layout'>)</span>
+<a name="line-164"></a>
+<a name="line-165"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
+<a name="line-166"></a>    <span class='layout'>(</span> <span class='varid'>hPutStrLn</span>
+<a name="line-167"></a>    <span class='layout'>,</span> <span class='varid'>hFlush</span>
+<a name="line-168"></a>    <span class='layout'>,</span> <span class='varid'>stderr</span>
+<a name="line-169"></a>    <span class='layout'>)</span>
+<a name="line-170"></a>
+<a name="line-171"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>
+<a name="line-172"></a>    <span class='layout'>(</span> <span class='varid'>getCurrentDirectory</span>
+<a name="line-173"></a>    <span class='layout'>)</span>
+<a name="line-174"></a>
+<a name="line-175"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-176"></a><span class='comment'>{- $datatypes -}</span>
+<a name="line-177"></a>
+<a name="line-178"></a>
+<a name="line-179"></a><span class='comment'>-- |</span>
+<a name="line-180"></a><span class='comment'>-- predefined system state data type with all components for the</span>
+<a name="line-181"></a><span class='comment'>-- system functions, like trace, error handling, ...</span>
+<a name="line-182"></a>
+<a name="line-183"></a><a name="XIOSysState"></a><span class='keyword'>data</span> <span class='conid'>XIOSysState</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOSys</span>  <span class='layout'>{</span> <span class='varid'>xio_trace</span>			<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>
+<a name="line-184"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>
+<a name="line-185"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorModule</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>
+<a name="line-186"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span>		<span class='keyglyph'>::</span>   <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='conid'>()</span>
+<a name="line-187"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Bool</span>
+<a name="line-188"></a>				  <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XmlTrees</span>
+<a name="line-189"></a>				  <span class='layout'>,</span> <span class='varid'>xio_baseURI</span>			<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>
+<a name="line-190"></a>				  <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>
+<a name="line-191"></a>				  <span class='layout'>,</span> <span class='varid'>xio_attrList</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>
+<a name="line-192"></a>				  <span class='layout'>,</span> <span class='varid'>xio_mimeTypes</span>		<span class='keyglyph'>::</span>   <span class='conid'>MimeTypeTable</span>
+<a name="line-193"></a>				  <span class='layout'>}</span>
+<a name="line-194"></a>
+<a name="line-195"></a><span class='keyword'>instance</span> <span class='conid'>DeepSeq</span> <span class='conid'>XIOSysState</span> <span class='keyword'>where</span>
+<a name="line-196"></a>    <span class='varid'>deepSeq</span> <span class='layout'>(</span><span class='conid'>XIOSys</span> <span class='varid'>tr</span> <span class='varid'>es</span> <span class='varid'>em</span> <span class='sel'>_emh</span> <span class='varid'>emc</span> <span class='varid'>eml</span> <span class='varid'>bu</span> <span class='varid'>du</span> <span class='varid'>al</span> <span class='sel'>_mt</span><span class='layout'>)</span> <span class='varid'>y</span>
+<a name="line-197"></a>	<span class='keyglyph'>=</span> <span class='varid'>deepSeq</span> <span class='varid'>tr</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>es</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>em</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>emc</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>eml</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>bu</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>du</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>al</span> <span class='varid'>y</span>
+<a name="line-198"></a>
+<a name="line-199"></a><span class='comment'>-- |</span>
+<a name="line-200"></a><span class='comment'>-- state datatype consists of a system state and a user state</span>
+<a name="line-201"></a><span class='comment'>-- the user state is not fixed</span>
+<a name="line-202"></a>
+<a name="line-203"></a><a name="XIOState"></a><span class='keyword'>data</span> <span class='conid'>XIOState</span> <span class='varid'>us</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XIOSysState</span>
+<a name="line-204"></a>				   <span class='layout'>,</span> <span class='varid'>xio_userState</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='varid'>us</span>
+<a name="line-205"></a>				   <span class='layout'>}</span>
+<a name="line-206"></a>
+<a name="line-207"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>DeepSeq</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>DeepSeq</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyword'>where</span>
+<a name="line-208"></a>    <span class='varid'>deepSeq</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>sys</span> <span class='varid'>usr</span><span class='layout'>)</span> <span class='varid'>y</span>	<span class='keyglyph'>=</span> <span class='varid'>deepSeq</span> <span class='varid'>sys</span> <span class='varop'>$</span> <span class='varid'>deepSeq</span> <span class='varid'>usr</span> <span class='varid'>y</span>
+<a name="line-209"></a>
+<a name="line-210"></a><span class='comment'>-- |</span>
+<a name="line-211"></a><span class='comment'>-- The arrow type for stateful arrows</span>
+<a name="line-212"></a>
+<a name="line-213"></a><a name="IOStateArrow"></a><span class='keyword'>type</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>	<span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span>
+<a name="line-214"></a>
+<a name="line-215"></a><span class='comment'>-- |</span>
+<a name="line-216"></a><span class='comment'>-- The arrow for stateful arrows with no user defined state</span>
+<a name="line-217"></a>
+<a name="line-218"></a><a name="IOSArrow"></a><span class='keyword'>type</span> <span class='conid'>IOSArrow</span> <span class='varid'>b</span> <span class='varid'>c</span>	<span class='keyglyph'>=</span> <span class='conid'>IOStateArrow</span> <span class='conid'>()</span> <span class='varid'>b</span> <span class='varid'>c</span>
+<a name="line-219"></a>
+<a name="line-220"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-221"></a>
+<a name="line-222"></a>
+<a name="line-223"></a><span class='comment'>-- | the default global state, used as initial state when running an 'IOSArrow' with 'runIOSLA' or</span>
+<a name="line-224"></a><span class='comment'>-- 'runX'</span>
+<a name="line-225"></a>
+<a name="line-226"></a><a name="initialState"></a><span class='definition'>initialState</span>	<span class='keyglyph'>::</span> <span class='varid'>us</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XIOState</span> <span class='varid'>us</span>
+<a name="line-227"></a><span class='definition'>initialState</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> 	<span class='keyglyph'>=</span> <span class='varid'>initialSysState</span>
+<a name="line-228"></a>			   <span class='layout'>,</span> <span class='varid'>xio_userState</span>	<span class='keyglyph'>=</span> <span class='varid'>s</span>
+<a name="line-229"></a>			   <span class='layout'>}</span>
+<a name="line-230"></a>
+<a name="line-231"></a><a name="initialSysState"></a><span class='definition'>initialSysState</span>	<span class='keyglyph'>::</span> <span class='conid'>XIOSysState</span>
+<a name="line-232"></a><span class='definition'>initialSysState</span>	<span class='keyglyph'>=</span> <span class='conid'>XIOSys</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span>		<span class='keyglyph'>=</span> <span class='num'>0</span>
+<a name="line-233"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span>	<span class='keyglyph'>=</span> <span class='varid'>c_ok</span>
+<a name="line-234"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorModule</span>	<span class='keyglyph'>=</span> <span class='str'>""</span>
+<a name="line-235"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span>	<span class='keyglyph'>=</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span>
+<a name="line-236"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span>	<span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-237"></a>			 <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span>	<span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-238"></a>			 <span class='layout'>,</span> <span class='varid'>xio_baseURI</span>		<span class='keyglyph'>=</span> <span class='str'>""</span>
+<a name="line-239"></a>			 <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span>	<span class='keyglyph'>=</span> <span class='str'>""</span>
+<a name="line-240"></a>			 <span class='layout'>,</span> <span class='varid'>xio_attrList</span>		<span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-241"></a>			 <span class='layout'>,</span> <span class='varid'>xio_mimeTypes</span>	<span class='keyglyph'>=</span> <span class='varid'>defaultMimeTypeTable</span>
+<a name="line-242"></a>			 <span class='layout'>}</span>
+<a name="line-243"></a>
+<a name="line-244"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-245"></a>
+<a name="line-246"></a><span class='comment'>-- |</span>
+<a name="line-247"></a><span class='comment'>-- apply an 'IOSArrow' to an empty root node with 'initialState' () as initial state</span>
+<a name="line-248"></a><span class='comment'>--</span>
+<a name="line-249"></a><span class='comment'>-- the main entry point for running a state arrow with IO</span>
+<a name="line-250"></a><span class='comment'>--</span>
+<a name="line-251"></a><span class='comment'>-- when running @ runX f@ an empty XML root node is applied to @f@.</span>
+<a name="line-252"></a><span class='comment'>-- usually @f@ will start with a constant arrow (ignoring the input), e.g. a 'Text.XML.HXT.Arrow.ReadDocument.readDocument' arrow.</span>
+<a name="line-253"></a><span class='comment'>--</span>
+<a name="line-254"></a><span class='comment'>-- for usage see examples with 'Text.XML.HXT.Arrow.WriteDocument.writeDocument'</span>
+<a name="line-255"></a><span class='comment'>--</span>
+<a name="line-256"></a><span class='comment'>-- if input has to be feed into the arrow use 'Control.Arrow.IOStateListArrow.runIOSLA' like in @ runIOSLA f emptyX inputDoc @</span>
+<a name="line-257"></a>
+<a name="line-258"></a><a name="runX"></a><span class='definition'>runX</span>		<span class='keyglyph'>::</span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>
+<a name="line-259"></a><span class='definition'>runX</span>		<span class='keyglyph'>=</span> <span class='varid'>runXIOState</span> <span class='layout'>(</span><span class='varid'>initialState</span> <span class='conid'>()</span><span class='layout'>)</span>
+<a name="line-260"></a>
+<a name="line-261"></a><a name="runXIOState"></a><span class='definition'>runXIOState</span>	<span class='keyglyph'>::</span> <span class='conid'>XIOState</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>
+<a name="line-262"></a><span class='definition'>runXIOState</span> <span class='varid'>s0</span> <span class='varid'>f</span>
+<a name="line-263"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-264"></a>      <span class='layout'>(</span><span class='sel'>_finalState</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runIOSLA</span> <span class='layout'>(</span><span class='varid'>emptyRoot</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>s0</span> <span class='varid'>undefined</span>
+<a name="line-265"></a>      <span class='varid'>return</span> <span class='varid'>res</span>
+<a name="line-266"></a>    <span class='keyword'>where</span>
+<a name="line-267"></a>    <span class='varid'>emptyRoot</span>    <span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='conid'>[]</span>
+<a name="line-268"></a>
+<a name="line-269"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-270"></a>
+<a name="line-271"></a><span class='comment'>{- user state -}</span>
+<a name="line-272"></a>
+<a name="line-273"></a><span class='comment'>-- | read the user defined part of the state</span>
+<a name="line-274"></a>
+<a name="line-275"></a><a name="getUserState"></a><span class='definition'>getUserState</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>s</span>
+<a name="line-276"></a><span class='definition'>getUserState</span>
+<a name="line-277"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-278"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='keyglyph'>]</span><span class='layout'>)</span>
+<a name="line-279"></a>
+<a name="line-280"></a><span class='comment'>-- | change the user defined part of the state</span>
+<a name="line-281"></a>
+<a name="line-282"></a><a name="changeUserState"></a><span class='definition'>changeUserState</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-283"></a><span class='definition'>changeUserState</span> <span class='varid'>cf</span>
+<a name="line-284"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-285"></a>      <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>cf</span> <span class='varid'>v</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-286"></a>      <span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>
+<a name="line-287"></a>
+<a name="line-288"></a><span class='comment'>-- | set the user defined part of the state</span>
+<a name="line-289"></a>
+<a name="line-290"></a><a name="setUserState"></a><span class='definition'>setUserState</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>s</span>
+<a name="line-291"></a><span class='definition'>setUserState</span>
+<a name="line-292"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeUserState</span> <span class='varid'>const</span>
+<a name="line-293"></a>
+<a name="line-294"></a><span class='comment'>-- | extend user state</span>
+<a name="line-295"></a><span class='comment'>--</span>
+<a name="line-296"></a><span class='comment'>-- Run an arrow with an extended user state component, The old component</span>
+<a name="line-297"></a><span class='comment'>-- is stored together with a new one in a pair, the arrow is executed with this</span>
+<a name="line-298"></a><span class='comment'>-- extended state, and the augmented state component is removed form the state</span>
+<a name="line-299"></a><span class='comment'>-- when the arrow has finished its execution</span>
+<a name="line-300"></a>
+<a name="line-301"></a><a name="withExtendedUserState"></a><span class='definition'>withExtendedUserState</span>	<span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='layout'>(</span><span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>s0</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>
+<a name="line-302"></a><span class='definition'>withExtendedUserState</span> <span class='varid'>initS1</span> <span class='varid'>f</span>
+<a name="line-303"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s0</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-304"></a>      <span class='keyword'>do</span>
+<a name="line-305"></a>      <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>finalS</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span>          <span class='varid'>xio_sysState</span>  <span class='varid'>s0</span>
+<a name="line-306"></a>					      <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>initS1</span><span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='varid'>s0</span><span class='layout'>)</span>
+<a name="line-307"></a>					      <span class='layout'>}</span>
+<a name="line-308"></a>				   <span class='layout'>)</span> <span class='varid'>x</span>
+<a name="line-309"></a>      <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span>      <span class='varid'>xio_sysState</span>  <span class='varid'>finalS</span>
+<a name="line-310"></a>			<span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>finalS</span><span class='layout'>)</span>
+<a name="line-311"></a>			<span class='layout'>}</span>
+<a name="line-312"></a>	     <span class='layout'>,</span> <span class='varid'>res</span>
+<a name="line-313"></a>	     <span class='layout'>)</span>
+<a name="line-314"></a>
+<a name="line-315"></a><span class='comment'>-- | change the type of user state</span>
+<a name="line-316"></a><span class='comment'>--</span>
+<a name="line-317"></a><span class='comment'>-- This conversion is useful, when running a state arrow with another</span>
+<a name="line-318"></a><span class='comment'>-- structure of the user state, e.g. with () when executing some IO arrows</span>
+<a name="line-319"></a>
+<a name="line-320"></a><a name="withOtherUserState"></a><span class='definition'>withOtherUserState</span>	<span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s1</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>
+<a name="line-321"></a><span class='definition'>withOtherUserState</span> <span class='varid'>s1</span> <span class='varid'>f</span>
+<a name="line-322"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-323"></a>      <span class='keyword'>do</span>
+<a name="line-324"></a>      <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s</span>
+<a name="line-325"></a>					 <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>s1</span>
+<a name="line-326"></a>					 <span class='layout'>}</span>
+<a name="line-327"></a>			      <span class='layout'>)</span> <span class='varid'>x</span>
+<a name="line-328"></a>      <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span>  <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span>  <span class='varid'>s'</span>
+<a name="line-329"></a>			<span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_userState</span> <span class='varid'>s</span>
+<a name="line-330"></a>			<span class='layout'>}</span>
+<a name="line-331"></a>	     <span class='layout'>,</span> <span class='varid'>res</span>
+<a name="line-332"></a>	     <span class='layout'>)</span>
+<a name="line-333"></a>
+<a name="line-334"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-335"></a>
+<a name="line-336"></a><span class='comment'>{- $system state params -}</span>
+<a name="line-337"></a>
+<a name="line-338"></a><a name="getSysParam"></a><span class='definition'>getSysParam</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XIOSysState</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>
+<a name="line-339"></a><span class='definition'>getSysParam</span> <span class='varid'>f</span>
+<a name="line-340"></a>    <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='sel'>_x</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-341"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>f</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span>
+<a name="line-342"></a>
+<a name="line-343"></a><a name="changeSysParam"></a><span class='definition'>changeSysParam</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XIOSysState</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XIOSysState</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-344"></a><span class='definition'>changeSysParam</span> <span class='varid'>cf</span>
+<a name="line-345"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-346"></a>	<span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>cf</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='varid'>s</span>
+<a name="line-347"></a>	<span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>
+<a name="line-348"></a>      <span class='layout'>)</span>
+<a name="line-349"></a>    <span class='keyword'>where</span>
+<a name="line-350"></a>    <span class='varid'>changeSysState</span> <span class='varid'>css</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>css</span> <span class='layout'>(</span><span class='varid'>xio_sysState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-351"></a>
+<a name="line-352"></a><span class='comment'>-- | store a single XML tree in global state under a given attribute name</span>
+<a name="line-353"></a>
+<a name="line-354"></a><a name="setParam"></a><span class='definition'>setParam</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-355"></a><span class='definition'>setParam</span> <span class='varid'>n</span>
+<a name="line-356"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>^&gt;&gt;</span> <span class='varid'>setParamList</span> <span class='varid'>n</span>
+<a name="line-357"></a>
+<a name="line-358"></a><span class='comment'>-- | store a list of XML trees in global system state under a given attribute name</span>
+<a name="line-359"></a>
+<a name="line-360"></a><a name="setParamList"></a><span class='definition'>setParamList</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTrees</span> <span class='conid'>XmlTree</span>
+<a name="line-361"></a><span class='definition'>setParamList</span> <span class='varid'>n</span>
+<a name="line-362"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>addE</span>
+<a name="line-363"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-364"></a>      <span class='varid'>arrL</span> <span class='varid'>id</span>
+<a name="line-365"></a>    <span class='keyword'>where</span>
+<a name="line-366"></a>    <span class='varid'>addE</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>addEntry</span> <span class='varid'>n</span> <span class='varid'>x</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-367"></a>
+<a name="line-368"></a><span class='comment'>-- | remove an entry in global state, arrow input remains unchanged</span>
+<a name="line-369"></a>
+<a name="line-370"></a><a name="unsetParam"></a><span class='definition'>unsetParam</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-371"></a><span class='definition'>unsetParam</span> <span class='varid'>n</span>
+<a name="line-372"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>delE</span>
+<a name="line-373"></a>    <span class='keyword'>where</span>
+<a name="line-374"></a>    <span class='varid'>delE</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>delEntry</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
+<a name="line-375"></a>
+<a name="line-376"></a><span class='comment'>-- | read an attribute value from global state</span>
+<a name="line-377"></a>
+<a name="line-378"></a><a name="getParam"></a><span class='definition'>getParam</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-379"></a><span class='definition'>getParam</span> <span class='varid'>n</span>
+<a name="line-380"></a>    <span class='keyglyph'>=</span> <span class='varid'>getAllParams</span>
+<a name="line-381"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-382"></a>      <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>n</span><span class='layout'>)</span>
+<a name="line-383"></a>
+<a name="line-384"></a><span class='comment'>-- | read all attributes from global state</span>
+<a name="line-385"></a>
+<a name="line-386"></a><a name="getAllParams"></a><span class='definition'>getAllParams</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>
+<a name="line-387"></a><span class='definition'>getAllParams</span>
+<a name="line-388"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_attrList</span>
+<a name="line-389"></a>
+<a name="line-390"></a><span class='comment'>-- | read all attributes from global state</span>
+<a name="line-391"></a><span class='comment'>-- and convert the values to strings</span>
+<a name="line-392"></a>
+<a name="line-393"></a><a name="getAllParamsString"></a><span class='definition'>getAllParamsString</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span>
+<a name="line-394"></a><span class='definition'>getAllParamsString</span>
+<a name="line-395"></a>    <span class='keyglyph'>=</span> <span class='varid'>getAllParams</span>
+<a name="line-396"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-397"></a>      <span class='varid'>listA</span> <span class='layout'>(</span> <span class='varid'>unlistA</span>
+<a name="line-398"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-399"></a>	      <span class='varid'>second</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>unlistA</span><span class='layout'>)</span>
+<a name="line-400"></a>	    <span class='layout'>)</span>
+<a name="line-401"></a>
+<a name="line-402"></a><a name="setParamString"></a><span class='definition'>setParamString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-403"></a><span class='definition'>setParamString</span> <span class='varid'>n</span> <span class='varid'>v</span>
+<a name="line-404"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>txt</span> <span class='varid'>v</span>
+<a name="line-405"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-406"></a>		<span class='varid'>setParam</span> <span class='varid'>n</span>
+<a name="line-407"></a>	      <span class='layout'>)</span>
+<a name="line-408"></a>
+<a name="line-409"></a><span class='comment'>-- | read a string value from global state,</span>
+<a name="line-410"></a><span class='comment'>-- if parameter not set \"\" is returned</span>
+<a name="line-411"></a>
+<a name="line-412"></a><a name="getParamString"></a><span class='definition'>getParamString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
+<a name="line-413"></a><span class='definition'>getParamString</span> <span class='varid'>n</span>
+<a name="line-414"></a>    <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>getParam</span> <span class='varid'>n</span><span class='layout'>)</span>
+<a name="line-415"></a>
+<a name="line-416"></a><span class='comment'>-- | store an int value in global state</span>
+<a name="line-417"></a>
+<a name="line-418"></a><a name="setParamInt"></a><span class='definition'>setParamInt</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-419"></a><span class='definition'>setParamInt</span> <span class='varid'>n</span> <span class='varid'>v</span>
+<a name="line-420"></a>    <span class='keyglyph'>=</span> <span class='varid'>setParamString</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>v</span><span class='layout'>)</span>
+<a name="line-421"></a>
+<a name="line-422"></a><span class='comment'>-- | read an int value from global state</span>
+<a name="line-423"></a><span class='comment'>-- </span>
+<a name="line-424"></a><span class='comment'>-- &gt; getParamInt 0 myIntAttr</span>
+<a name="line-425"></a>
+<a name="line-426"></a><a name="getParamInt"></a><span class='definition'>getParamInt</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>
+<a name="line-427"></a><span class='definition'>getParamInt</span> <span class='varid'>def</span> <span class='varid'>n</span>
+<a name="line-428"></a>    <span class='keyglyph'>=</span> <span class='varid'>getParamString</span> <span class='varid'>n</span>
+<a name="line-429"></a>      <span class='varop'>&gt;&gt;^</span>
+<a name="line-430"></a>      <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>x</span> <span class='keyword'>then</span> <span class='varid'>def</span> <span class='keyword'>else</span> <span class='varid'>read</span> <span class='varid'>x</span><span class='layout'>)</span>
+<a name="line-431"></a>
+<a name="line-432"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-433"></a>
+<a name="line-434"></a><span class='comment'>-- | reset global error variable</span>
+<a name="line-435"></a>
+<a name="line-436"></a><a name="changeErrorStatus"></a><span class='definition'>changeErrorStatus</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>
+<a name="line-437"></a><span class='definition'>changeErrorStatus</span> <span class='varid'>f</span>
+<a name="line-438"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>l</span> <span class='layout'>(</span><span class='varid'>xio_errorStatus</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span><span class='layout'>)</span>
+<a name="line-439"></a>
+<a name="line-440"></a><a name="clearErrStatus"></a><span class='definition'>clearErrStatus</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-441"></a><span class='definition'>clearErrStatus</span>
+<a name="line-442"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='num'>0</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>changeErrorStatus</span> <span class='varid'>min</span><span class='layout'>)</span>
+<a name="line-443"></a>
+<a name="line-444"></a><span class='comment'>-- | set global error variable</span>
+<a name="line-445"></a>
+<a name="line-446"></a><a name="setErrStatus"></a><span class='definition'>setErrStatus</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>
+<a name="line-447"></a><span class='definition'>setErrStatus</span>
+<a name="line-448"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeErrorStatus</span> <span class='varid'>max</span>
+<a name="line-449"></a>
+<a name="line-450"></a><span class='comment'>-- | read current global error status</span>
+<a name="line-451"></a>
+<a name="line-452"></a><a name="getErrStatus"></a><span class='definition'>getErrStatus</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>Int</span>
+<a name="line-453"></a><span class='definition'>getErrStatus</span>
+<a name="line-454"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_errorStatus</span>
+<a name="line-455"></a>
+<a name="line-456"></a><span class='comment'>-- | raise the global error status level to that of the input tree</span>
+<a name="line-457"></a>
+<a name="line-458"></a><a name="setErrMsgStatus"></a><span class='definition'>setErrMsgStatus</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-459"></a><span class='definition'>setErrMsgStatus</span>
+<a name="line-460"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span>
+<a name="line-461"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-462"></a>		<span class='varid'>setErrStatus</span>
+<a name="line-463"></a>	      <span class='layout'>)</span>
+<a name="line-464"></a>
+<a name="line-465"></a><span class='comment'>-- | set the error message handler and the flag for collecting the errors</span>
+<a name="line-466"></a>
+<a name="line-467"></a><a name="setErrorMsgHandler"></a><span class='definition'>setErrorMsgHandler</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='conid'>()</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-468"></a><span class='definition'>setErrorMsgHandler</span> <span class='varid'>c</span> <span class='varid'>f</span>
+<a name="line-469"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>
+<a name="line-470"></a>    <span class='keyword'>where</span>
+<a name="line-471"></a>    <span class='varid'>cf</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>=</span> <span class='varid'>f</span>
+<a name="line-472"></a>	       <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='layout'>}</span>
+<a name="line-473"></a>
+<a name="line-474"></a><span class='comment'>-- | error message handler for output to stderr</span>
+<a name="line-475"></a>		  
+<a name="line-476"></a><a name="sysErrorMsg"></a><span class='definition'>sysErrorMsg</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-477"></a><span class='definition'>sysErrorMsg</span>
+<a name="line-478"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>getErrorMsg</span>
+<a name="line-479"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-480"></a>		<span class='varid'>arr</span> <span class='varid'>formatErrorMsg</span>
+<a name="line-481"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-482"></a>		<span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>e</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-483"></a>		  <span class='keyword'>do</span>
+<a name="line-484"></a>		  <span class='layout'>(</span><span class='varid'>xio_errorMsgHandler</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>e</span>
+<a name="line-485"></a>		  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>undefined</span><span class='layout'>)</span>
+<a name="line-486"></a>		<span class='layout'>)</span>
+<a name="line-487"></a>	      <span class='layout'>)</span>
+<a name="line-488"></a>    <span class='keyword'>where</span>
+<a name="line-489"></a>    <span class='varid'>formatErrorMsg</span> <span class='layout'>(</span><span class='varid'>level</span><span class='layout'>,</span> <span class='varid'>msg</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>errClass</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>": "</span> <span class='varop'>++</span> <span class='varid'>msg</span>
+<a name="line-490"></a>    <span class='varid'>errClass</span> <span class='varid'>l</span>
+<a name="line-491"></a>	<span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>"fatal error"</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>l</span> <span class='varop'>$</span> <span class='varid'>msgList</span>
+<a name="line-492"></a>	  <span class='keyword'>where</span>
+<a name="line-493"></a>	  <span class='varid'>msgList</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>c_ok</span><span class='layout'>,</span>	<span class='str'>"no error"</span><span class='layout'>)</span>
+<a name="line-494"></a>			  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_warn</span><span class='layout'>,</span>	<span class='str'>"warning"</span><span class='layout'>)</span>
+<a name="line-495"></a>			  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_err</span><span class='layout'>,</span>	<span class='str'>"error"</span><span class='layout'>)</span>
+<a name="line-496"></a>			  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_fatal</span><span class='layout'>,</span>	<span class='str'>"fatal error"</span><span class='layout'>)</span>
+<a name="line-497"></a>			  <span class='keyglyph'>]</span>
+<a name="line-498"></a>
+<a name="line-499"></a>
+<a name="line-500"></a><span class='comment'>-- | the default error message handler: error output to stderr</span>
+<a name="line-501"></a>
+<a name="line-502"></a><a name="errorMsgStderr"></a><span class='definition'>errorMsgStderr</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-503"></a><span class='definition'>errorMsgStderr</span>		<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>
+<a name="line-504"></a>
+<a name="line-505"></a><span class='comment'>-- | error message handler for collecting errors</span>
+<a name="line-506"></a>
+<a name="line-507"></a><a name="errorMsgCollect"></a><span class='definition'>errorMsgCollect</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-508"></a><span class='definition'>errorMsgCollect</span>		<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>
+<a name="line-509"></a>
+<a name="line-510"></a><span class='comment'>-- | error message handler for output to stderr and collecting</span>
+<a name="line-511"></a>
+<a name="line-512"></a><a name="errorMsgStderrAndCollect"></a><span class='definition'>errorMsgStderrAndCollect</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-513"></a><span class='definition'>errorMsgStderrAndCollect</span>	<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>
+<a name="line-514"></a>
+<a name="line-515"></a><span class='comment'>-- | error message handler for ignoring errors</span>
+<a name="line-516"></a>
+<a name="line-517"></a><a name="errorMsgIgnore"></a><span class='definition'>errorMsgIgnore</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-518"></a><span class='definition'>errorMsgIgnore</span>		<span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>
+<a name="line-519"></a>
+<a name="line-520"></a><span class='comment'>-- |</span>
+<a name="line-521"></a><span class='comment'>-- if error messages are collected by the error handler for</span>
+<a name="line-522"></a><span class='comment'>-- processing these messages by the calling application,</span>
+<a name="line-523"></a><span class='comment'>-- this arrow reads the stored messages and clears the error message store</span>
+<a name="line-524"></a>
+<a name="line-525"></a><a name="getErrorMessages"></a><span class='definition'>getErrorMessages</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>
+<a name="line-526"></a><span class='definition'>getErrorMessages</span>
+<a name="line-527"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='layout'>(</span><span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>xio_errorMsgList</span><span class='layout'>)</span>		<span class='comment'>-- reverse the list of errors</span>
+<a name="line-528"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-529"></a>      <span class='varid'>clearErrorMsgList</span>					<span class='comment'>-- clear the error list in the system state</span>
+<a name="line-530"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-531"></a>      <span class='varid'>arrL</span> <span class='varid'>id</span>
+<a name="line-532"></a>
+<a name="line-533"></a><a name="clearErrorMsgList"></a><span class='definition'>clearErrorMsgList</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-534"></a><span class='definition'>clearErrorMsgList</span>
+<a name="line-535"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='layout'>}</span> <span class='layout'>)</span>
+<a name="line-536"></a>
+<a name="line-537"></a><a name="addToErrorMsgList"></a><span class='definition'>addToErrorMsgList</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-538"></a><span class='definition'>addToErrorMsgList</span>
+<a name="line-539"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>
+<a name="line-540"></a>    <span class='keyword'>where</span>
+<a name="line-541"></a>    <span class='varid'>cf</span> <span class='varid'>t</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>xio_errorMsgCollect</span> <span class='varid'>s</span>
+<a name="line-542"></a>	     <span class='keyword'>then</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>xio_errorMsgList</span> <span class='varid'>s</span> <span class='layout'>}</span>
+<a name="line-543"></a>	     <span class='keyword'>else</span> <span class='varid'>s</span>
+<a name="line-544"></a>
+<a name="line-545"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-546"></a>
+<a name="line-547"></a><span class='comment'>-- |</span>
+<a name="line-548"></a><span class='comment'>-- filter error messages from input trees and issue errors</span>
+<a name="line-549"></a>
+<a name="line-550"></a><a name="filterErrorMsg"></a><span class='definition'>filterErrorMsg</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-551"></a><span class='definition'>filterErrorMsg</span>
+<a name="line-552"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>setErrMsgStatus</span>
+<a name="line-553"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-554"></a>	<span class='varid'>sysErrorMsg</span>
+<a name="line-555"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-556"></a>	<span class='varid'>addToErrorMsgList</span>
+<a name="line-557"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-558"></a>	<span class='varid'>none</span>
+<a name="line-559"></a>      <span class='layout'>)</span>
+<a name="line-560"></a>      <span class='varop'>`when`</span>
+<a name="line-561"></a>      <span class='varid'>isError</span>
+<a name="line-562"></a>
+<a name="line-563"></a><span class='comment'>-- | generate a warnig message</span>
+<a name="line-564"></a>
+<a name="line-565"></a><a name="issueWarn"></a><span class='definition'>issueWarn</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-566"></a><span class='definition'>issueWarn</span> <span class='varid'>msg</span>		<span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>msg</span>  <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>
+<a name="line-567"></a>
+<a name="line-568"></a><a name="issueErr"></a><span class='comment'>-- | generate an error message</span>
+<a name="line-569"></a><span class='definition'>issueErr</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-570"></a><span class='definition'>issueErr</span> <span class='varid'>msg</span>		<span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='varid'>msg</span>   <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>
+<a name="line-571"></a>
+<a name="line-572"></a><span class='comment'>-- | generate a fatal error message, e.g. document not found</span>
+<a name="line-573"></a>
+<a name="line-574"></a><a name="issueFatal"></a><span class='definition'>issueFatal</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-575"></a><span class='definition'>issueFatal</span> <span class='varid'>msg</span>		<span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>fatal</span> <span class='varid'>msg</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>
+<a name="line-576"></a>
+<a name="line-577"></a><span class='comment'>-- |</span>
+<a name="line-578"></a><span class='comment'>-- add the error level and the module where the error occured</span>
+<a name="line-579"></a><span class='comment'>-- to the attributes of a document root node and remove the children when level is greater or equal to 'c_err'.</span>
+<a name="line-580"></a><span class='comment'>-- called by 'setDocumentStatusFromSystemState' when the system state indicates an error</span>
+<a name="line-581"></a>
+<a name="line-582"></a><a name="setDocumentStatus"></a><span class='definition'>setDocumentStatus</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-583"></a><span class='definition'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>
+<a name="line-584"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttrl</span> <span class='layout'>(</span> <span class='varid'>sattr</span> <span class='varid'>a_status</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>level</span><span class='layout'>)</span>
+<a name="line-585"></a>		   <span class='varop'>&lt;+&gt;</span>
+<a name="line-586"></a>		   <span class='varid'>sattr</span> <span class='varid'>a_module</span> <span class='varid'>msg</span>
+<a name="line-587"></a>		 <span class='layout'>)</span>
+<a name="line-588"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-589"></a>	<span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'>&gt;=</span> <span class='varid'>c_err</span>
+<a name="line-590"></a>	  <span class='keyword'>then</span> <span class='varid'>setChildren</span> <span class='conid'>[]</span>
+<a name="line-591"></a>	  <span class='keyword'>else</span> <span class='varid'>this</span>
+<a name="line-592"></a>	<span class='layout'>)</span>
+<a name="line-593"></a>      <span class='layout'>)</span>
+<a name="line-594"></a>      <span class='varop'>`when`</span>
+<a name="line-595"></a>      <span class='varid'>isRoot</span>
+<a name="line-596"></a>
+<a name="line-597"></a><span class='comment'>-- |</span>
+<a name="line-598"></a><span class='comment'>-- check whether the error level attribute in the system state</span>
+<a name="line-599"></a><span class='comment'>-- is set to error, in this case the children of the document root are</span>
+<a name="line-600"></a><span class='comment'>-- removed and the module name where the error occured and the error level are added as attributes with 'setDocumentStatus'</span>
+<a name="line-601"></a><span class='comment'>-- else nothing is changed</span>
+<a name="line-602"></a>
+<a name="line-603"></a><a name="setDocumentStatusFromSystemState"></a><span class='definition'>setDocumentStatusFromSystemState</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-604"></a><span class='definition'>setDocumentStatusFromSystemState</span> <span class='varid'>msg</span>
+<a name="line-605"></a>    <span class='keyglyph'>=</span> <span class='varid'>setStatus</span> <span class='varop'>$&lt;</span> <span class='varid'>getErrStatus</span>
+<a name="line-606"></a>    <span class='keyword'>where</span>
+<a name="line-607"></a>    <span class='varid'>setStatus</span> <span class='varid'>level</span>
+<a name="line-608"></a>	<span class='keyglyph'>|</span> <span class='varid'>level</span> <span class='varop'>&lt;=</span> <span class='varid'>c_warn</span>	<span class='keyglyph'>=</span> <span class='varid'>this</span>
+<a name="line-609"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='varid'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>
+<a name="line-610"></a>
+<a name="line-611"></a>
+<a name="line-612"></a><span class='comment'>-- |</span>
+<a name="line-613"></a><span class='comment'>-- check whether tree is a document root and the status attribute has a value less than 'c_err'</span>
+<a name="line-614"></a>
+<a name="line-615"></a><a name="documentStatusOk"></a><span class='definition'>documentStatusOk</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-616"></a><span class='definition'>documentStatusOk</span>
+<a name="line-617"></a>    <span class='keyglyph'>=</span> <span class='varid'>isRoot</span>
+<a name="line-618"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-619"></a>      <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='varid'>a_status</span>
+<a name="line-620"></a>	 <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-621"></a>	 <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>null</span> <span class='varid'>v</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>::</span><span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'>&lt;=</span> <span class='varid'>c_warn</span><span class='layout'>)</span>
+<a name="line-622"></a>	<span class='layout'>)</span>
+<a name="line-623"></a>	<span class='varop'>`guards`</span>
+<a name="line-624"></a>	<span class='varid'>this</span>
+<a name="line-625"></a>      <span class='layout'>)</span>
+<a name="line-626"></a>
+<a name="line-627"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-628"></a>
+<a name="line-629"></a><span class='comment'>-- | set the base URI of a document, used e.g. for reading includes, e.g. external entities,</span>
+<a name="line-630"></a><span class='comment'>-- the input must be an absolute URI</span>
+<a name="line-631"></a>
+<a name="line-632"></a><a name="setBaseURI"></a><span class='definition'>setBaseURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-633"></a><span class='definition'>setBaseURI</span>
+<a name="line-634"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>
+<a name="line-635"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-636"></a>      <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setBaseURI: new base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
+<a name="line-637"></a>
+<a name="line-638"></a><span class='comment'>-- | read the base URI from the globale state</span>
+<a name="line-639"></a>
+<a name="line-640"></a><a name="getBaseURI"></a><span class='definition'>getBaseURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
+<a name="line-641"></a><span class='definition'>getBaseURI</span>
+<a name="line-642"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_baseURI</span>
+<a name="line-643"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-644"></a>      <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getDefaultBaseURI</span>
+<a name="line-645"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-646"></a>	  <span class='varid'>setBaseURI</span>		
+<a name="line-647"></a>	  <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-648"></a>	  <span class='varid'>getBaseURI</span>
+<a name="line-649"></a>	<span class='layout'>)</span>
+<a name="line-650"></a>	<span class='varop'>`when`</span>
+<a name="line-651"></a>	<span class='varid'>isA</span> <span class='varid'>null</span>				<span class='comment'>-- set and get it, if not yet done</span>
+<a name="line-652"></a>      <span class='layout'>)</span>
+<a name="line-653"></a>
+<a name="line-654"></a><span class='comment'>-- | change the base URI with a possibly relative URI, can be used for</span>
+<a name="line-655"></a><span class='comment'>-- evaluating the xml:base attribute. Returns the new absolute base URI.</span>
+<a name="line-656"></a><span class='comment'>-- Fails, if input is not parsable with parseURIReference</span>
+<a name="line-657"></a><span class='comment'>--</span>
+<a name="line-658"></a><span class='comment'>-- see also: 'setBaseURI', 'mkAbsURI'</span>
+<a name="line-659"></a>
+<a name="line-660"></a><a name="changeBaseURI"></a><span class='definition'>changeBaseURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-661"></a><span class='definition'>changeBaseURI</span>
+<a name="line-662"></a>    <span class='keyglyph'>=</span> <span class='varid'>mkAbsURI</span>
+<a name="line-663"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-664"></a>      <span class='varid'>setBaseURI</span>
+<a name="line-665"></a>
+<a name="line-666"></a><span class='comment'>-- | set the default base URI, if parameter is null, the system base (@ file:\/\/\/\&lt;cwd\&gt;\/ @) is used,</span>
+<a name="line-667"></a><span class='comment'>-- else the parameter, must be called before any document is read</span>
+<a name="line-668"></a>
+<a name="line-669"></a><a name="setDefaultBaseURI"></a><span class='definition'>setDefaultBaseURI</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
+<a name="line-670"></a><span class='definition'>setDefaultBaseURI</span> <span class='varid'>base</span>
+<a name="line-671"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>base</span>
+<a name="line-672"></a>	<span class='keyword'>then</span> <span class='varid'>arrIO</span> <span class='varid'>getDir</span>
+<a name="line-673"></a>	<span class='keyword'>else</span> <span class='varid'>constA</span> <span class='varid'>base</span>
+<a name="line-674"></a>      <span class='layout'>)</span>
+<a name="line-675"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-676"></a>      <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>
+<a name="line-677"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-678"></a>      <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setDefaultBaseURI: new default base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>
+<a name="line-679"></a>    <span class='keyword'>where</span>
+<a name="line-680"></a>    <span class='varid'>getDir</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-681"></a>	       <span class='varid'>cwd</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCurrentDirectory</span>
+<a name="line-682"></a>	       <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"file://"</span> <span class='varop'>++</span> <span class='varid'>normalize</span> <span class='varid'>cwd</span> <span class='varop'>++</span> <span class='str'>"/"</span><span class='layout'>)</span>
+<a name="line-683"></a>
+<a name="line-684"></a>    <span class='comment'>-- under Windows getCurrentDirectory returns something like: "c:\path\to\file"</span>
+<a name="line-685"></a>    <span class='comment'>-- backslaches are not allowed in URIs and paths must start with a /</span>
+<a name="line-686"></a>    <span class='comment'>-- so this is transformed into "/c:/path/to/file"</span>
+<a name="line-687"></a>
+<a name="line-688"></a>    <span class='varid'>normalize</span> <span class='varid'>wd'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='keyword'>_</span><span class='layout'>)</span>
+<a name="line-689"></a>	<span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>
+<a name="line-690"></a>	    <span class='keyglyph'>=</span> <span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>concatMap</span> <span class='varid'>win32ToUriChar</span> <span class='varid'>wd'</span>
+<a name="line-691"></a>    <span class='varid'>normalize</span> <span class='varid'>wd'</span>
+<a name="line-692"></a>	<span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>wd'</span>
+<a name="line-693"></a>				 
+<a name="line-694"></a>    <span class='varid'>win32ToUriChar</span> <span class='chr'>'\\'</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span>
+<a name="line-695"></a>    <span class='varid'>win32ToUriChar</span> <span class='varid'>c</span>    <span class='keyglyph'>=</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>
+<a name="line-696"></a>
+<a name="line-697"></a>    <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>  <span class='keyglyph'>=</span> <span class='varid'>escapeURIChar</span> <span class='varid'>isUnescapedInURI</span> <span class='varid'>c</span>   <span class='comment'>-- from Network.URI</span>
+<a name="line-698"></a>
+<a name="line-699"></a>
+<a name="line-700"></a><span class='comment'>-- | get the default base URI</span>
+<a name="line-701"></a>
+<a name="line-702"></a><a name="getDefaultBaseURI"></a><span class='definition'>getDefaultBaseURI</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>
+<a name="line-703"></a><span class='definition'>getDefaultBaseURI</span>
+<a name="line-704"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_defaultBaseURI</span>		<span class='comment'>-- read default uri in system  state</span>
+<a name="line-705"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-706"></a>      <span class='layout'>(</span> <span class='varid'>setDefaultBaseURI</span> <span class='str'>""</span>			<span class='comment'>-- set the default uri in system state</span>
+<a name="line-707"></a>	<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-708"></a>	<span class='varid'>getDefaultBaseURI</span> <span class='layout'>)</span> <span class='varop'>`when`</span> <span class='varid'>isA</span> <span class='varid'>null</span>	<span class='comment'>-- when uri not yet set</span>
+<a name="line-709"></a>
+<a name="line-710"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-711"></a>
+<a name="line-712"></a><span class='comment'>-- | remember base uri, run an arrow and restore the base URI, used with external entity substitution</span>
+<a name="line-713"></a>
+<a name="line-714"></a><a name="runInLocalURIContext"></a><span class='definition'>runInLocalURIContext</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>
+<a name="line-715"></a><span class='definition'>runInLocalURIContext</span> <span class='varid'>f</span>
+<a name="line-716"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>this</span> <span class='layout'>)</span>
+<a name="line-717"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-718"></a>      <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>
+<a name="line-719"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-720"></a>      <span class='layout'>(</span> <span class='varid'>setBaseURI</span> <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>
+<a name="line-721"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-722"></a>      <span class='varid'>arrL</span> <span class='varid'>snd</span>
+<a name="line-723"></a>
+<a name="line-724"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-725"></a>
+<a name="line-726"></a><span class='comment'>-- | set the global trace level</span>
+<a name="line-727"></a>
+<a name="line-728"></a><a name="setTraceLevel"></a><span class='definition'>setTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-729"></a><span class='definition'>setTraceLevel</span> <span class='varid'>l</span>
+<a name="line-730"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>=</span> <span class='varid'>l</span> <span class='layout'>}</span> <span class='layout'>)</span>
+<a name="line-731"></a>
+<a name="line-732"></a><span class='comment'>-- | read the global trace level</span>
+<a name="line-733"></a>
+<a name="line-734"></a><a name="getTraceLevel"></a><span class='definition'>getTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>
+<a name="line-735"></a><span class='definition'>getTraceLevel</span>
+<a name="line-736"></a>    <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_trace</span>
+<a name="line-737"></a>
+<a name="line-738"></a><span class='comment'>-- | run an arrow with a given trace level, the old trace level is restored after the arrow execution</span>
+<a name="line-739"></a>
+<a name="line-740"></a><a name="withTraceLevel"></a><span class='definition'>withTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>
+<a name="line-741"></a><span class='definition'>withTraceLevel</span> <span class='varid'>level</span> <span class='varid'>f</span>
+<a name="line-742"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span>       <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>this</span> <span class='layout'>)</span>
+<a name="line-743"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-744"></a>      <span class='layout'>(</span> <span class='varid'>setTraceLevel</span> <span class='varid'>level</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>
+<a name="line-745"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-746"></a>      <span class='layout'>(</span> <span class='varid'>restoreTraceLevel</span>   <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>
+<a name="line-747"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-748"></a>      <span class='varid'>arrL</span> <span class='varid'>snd</span>
+<a name="line-749"></a>    <span class='keyword'>where</span>
+<a name="line-750"></a>    <span class='varid'>restoreTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>
+<a name="line-751"></a>    <span class='varid'>restoreTraceLevel</span>
+<a name="line-752"></a>	<span class='keyglyph'>=</span> <span class='varid'>setTraceLevel</span> <span class='varop'>$&lt;</span> <span class='varid'>this</span>
+<a name="line-753"></a>
+<a name="line-754"></a><span class='comment'>-- | apply a trace arrow and issue message to stderr</span>
+<a name="line-755"></a>
+<a name="line-756"></a><a name="trace"></a><span class='definition'>trace</span>		<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-757"></a><span class='definition'>trace</span> <span class='varid'>level</span> <span class='varid'>trc</span>
+<a name="line-758"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>trc</span>
+<a name="line-759"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-760"></a>		<span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-761"></a>				<span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='varid'>s</span>
+<a name="line-762"></a>				<span class='varid'>hFlush</span> <span class='varid'>stderr</span>
+<a name="line-763"></a>			      <span class='layout'>)</span>
+<a name="line-764"></a>		      <span class='layout'>)</span>
+<a name="line-765"></a>	      <span class='layout'>)</span>
+<a name="line-766"></a>      <span class='varop'>`when`</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span>
+<a name="line-767"></a>	       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-768"></a>	       <span class='varid'>isA</span> <span class='layout'>(</span><span class='varop'>&gt;=</span> <span class='varid'>level</span><span class='layout'>)</span>
+<a name="line-769"></a>	     <span class='layout'>)</span>
+<a name="line-770"></a>
+<a name="line-771"></a><a name="traceMsg"></a><span class='comment'>-- | issue a string message as trace </span>
+<a name="line-772"></a><span class='definition'>traceMsg</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-773"></a><span class='definition'>traceMsg</span> <span class='varid'>level</span> <span class='varid'>msg</span>
+<a name="line-774"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>trace</span> <span class='varid'>level</span> <span class='varop'>$</span>
+<a name="line-775"></a>		<span class='varid'>constA</span> <span class='layout'>(</span><span class='chr'>'-'</span> <span class='conop'>:</span> <span class='str'>"- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>") "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span>
+<a name="line-776"></a>	      <span class='layout'>)</span>
+<a name="line-777"></a>
+<a name="line-778"></a><a name="traceString"></a><span class='comment'>-- | issue the string input of an arrow</span>
+<a name="line-779"></a><span class='definition'>traceString</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-780"></a><span class='definition'>traceString</span> <span class='varid'>level</span> <span class='varid'>f</span>
+<a name="line-781"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>f</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>traceMsg</span> <span class='varid'>level</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-782"></a>
+<a name="line-783"></a><span class='comment'>-- | issue the source representation of a document if trace level &gt;= 3</span>
+<a name="line-784"></a><span class='comment'>--</span>
+<a name="line-785"></a><span class='comment'>-- for better readability the source is formated with indentDoc</span>
+<a name="line-786"></a>
+<a name="line-787"></a><a name="traceSource"></a><span class='definition'>traceSource</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-788"></a><span class='definition'>traceSource</span> 
+<a name="line-789"></a>    <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>3</span> <span class='varop'>$</span>
+<a name="line-790"></a>      <span class='varid'>xshow</span>
+<a name="line-791"></a>      <span class='layout'>(</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span> <span class='conop'>:-&gt;</span> <span class='layout'>(</span> <span class='varid'>indentDoc</span>
+<a name="line-792"></a>			       <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-793"></a>			       <span class='varid'>getChildren</span>
+<a name="line-794"></a>			     <span class='layout'>)</span>
+<a name="line-795"></a>		<span class='layout'>,</span> <span class='varid'>isElem</span> <span class='conop'>:-&gt;</span> <span class='layout'>(</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>this</span><span class='keyglyph'>]</span>
+<a name="line-796"></a>			       <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>indentDoc</span>
+<a name="line-797"></a>			       <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>getChildren</span>
+<a name="line-798"></a>			       <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>isElem</span>
+<a name="line-799"></a>			     <span class='layout'>)</span>
+<a name="line-800"></a>		<span class='layout'>,</span> <span class='varid'>this</span>   <span class='conop'>:-&gt;</span> <span class='varid'>this</span>
+<a name="line-801"></a>		<span class='keyglyph'>]</span>
+<a name="line-802"></a>      <span class='layout'>)</span>
+<a name="line-803"></a>
+<a name="line-804"></a><a name="traceTree"></a><span class='comment'>-- | issue the tree representation of a document if trace level &gt;= 4</span>
+<a name="line-805"></a><span class='definition'>traceTree</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-806"></a><span class='definition'>traceTree</span>
+<a name="line-807"></a>    <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>4</span> <span class='varop'>$</span>
+<a name="line-808"></a>      <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='varid'>treeRepOfXmlDoc</span>
+<a name="line-809"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-810"></a>	      <span class='varid'>addHeadlineToXmlDoc</span>
+<a name="line-811"></a>	      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-812"></a>	      <span class='varid'>getChildren</span>
+<a name="line-813"></a>	    <span class='layout'>)</span>
+<a name="line-814"></a>
+<a name="line-815"></a><span class='comment'>-- | trace a main computation step</span>
+<a name="line-816"></a><span class='comment'>-- issue a message when trace level &gt;= 1, issue document source if level &gt;= 3, issue tree when level is &gt;= 4</span>
+<a name="line-817"></a>
+<a name="line-818"></a><a name="traceDoc"></a><span class='definition'>traceDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>
+<a name="line-819"></a><span class='definition'>traceDoc</span> <span class='varid'>msg</span>
+<a name="line-820"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='varid'>msg</span>
+<a name="line-821"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-822"></a>      <span class='varid'>traceSource</span>
+<a name="line-823"></a>      <span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-824"></a>      <span class='varid'>traceTree</span>
+<a name="line-825"></a>
+<a name="line-826"></a><span class='comment'>-- | trace the global state</span>
+<a name="line-827"></a>
+<a name="line-828"></a><a name="traceState"></a><span class='definition'>traceState</span>	<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-829"></a><span class='definition'>traceState</span>
+<a name="line-830"></a>    <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAllParams</span> <span class='varop'>&gt;&gt;.</span> <span class='varid'>concat</span><span class='layout'>)</span>
+<a name="line-831"></a>			<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-832"></a>			<span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>formatParam</span><span class='layout'>)</span>
+<a name="line-833"></a>		      <span class='layout'>)</span>
+<a name="line-834"></a>		<span class='varop'>&gt;&gt;&gt;</span>
+<a name="line-835"></a>		<span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"global state:\n"</span> <span class='varop'>++</span><span class='layout'>)</span>
+<a name="line-836"></a>	      <span class='layout'>)</span>
+<a name="line-837"></a>      <span class='keyword'>where</span>
+<a name="line-838"></a>      <span class='comment'>-- formatParam	:: (String, XmlTrees) -&gt; IOStateArrow s b1 XmlTree</span>
+<a name="line-839"></a>      <span class='varid'>formatParam</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
+<a name="line-840"></a>	  <span class='keyglyph'>=</span> <span class='varid'>mkelem</span> <span class='str'>"param"</span> <span class='keyglyph'>[</span><span class='varid'>sattr</span> <span class='str'>"name"</span> <span class='varid'>n</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='varop'>&lt;+&gt;</span> <span class='varid'>txt</span> <span class='str'>"\n"</span>
+<a name="line-841"></a>
+<a name="line-842"></a><span class='comment'>-- ----------------------------------------------------------</span>
+<a name="line-843"></a>
+<a name="line-844"></a><span class='comment'>-- | compute the absolut URI for a given URI and a base URI</span>
+<a name="line-845"></a>
+<a name="line-846"></a><a name="expandURIString"></a><span class='definition'>expandURIString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>String</span>
+<a name="line-847"></a><span class='definition'>expandURIString</span> <span class='varid'>uri</span> <span class='varid'>base</span>
+<a name="line-848"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-849"></a>      <span class='varid'>base'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>base</span>
+<a name="line-850"></a>      <span class='varid'>uri'</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>
+<a name="line-851"></a>      <span class='varid'>abs'</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>nonStrictRelativeTo</span> <span class='varid'>uri'</span> <span class='varid'>base'</span>
+<a name="line-852"></a>      <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>show</span> <span class='varid'>abs'</span>
+<a name="line-853"></a>
+<a name="line-854"></a><span class='comment'>-- | arrow variant of 'expandURIString', fails if 'expandURIString' returns Nothing</span>
+<a name="line-855"></a>
+<a name="line-856"></a><a name="expandURI"></a><span class='definition'>expandURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='conid'>String</span>
+<a name="line-857"></a><span class='definition'>expandURI</span>
+<a name="line-858"></a>    <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>uncurry</span> <span class='varid'>expandURIString</span><span class='layout'>)</span>
+<a name="line-859"></a>
+<a name="line-860"></a><span class='comment'>-- | arrow for expanding an input URI into an absolute URI using global base URI, fails if input is not a legal URI</span>
+<a name="line-861"></a>
+<a name="line-862"></a><a name="mkAbsURI"></a><span class='definition'>mkAbsURI</span>		<span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-863"></a><span class='definition'>mkAbsURI</span>
+<a name="line-864"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>&amp;&amp;&amp;</span> <span class='varid'>getBaseURI</span> <span class='layout'>)</span> <span class='varop'>&gt;&gt;&gt;</span> <span class='varid'>expandURI</span>
+<a name="line-865"></a>
+<a name="line-866"></a><span class='comment'>-- | arrow for selecting the scheme (protocol) of the URI, fails if input is not a legal URI.</span>
+<a name="line-867"></a><span class='comment'>--</span>
+<a name="line-868"></a><span class='comment'>-- See Network.URI for URI components</span>
+<a name="line-869"></a>
+<a name="line-870"></a><a name="getSchemeFromURI"></a><span class='definition'>getSchemeFromURI</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-871"></a><span class='definition'>getSchemeFromURI</span>	<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>scheme</span>
+<a name="line-872"></a>    <span class='keyword'>where</span>
+<a name="line-873"></a>    <span class='varid'>scheme</span> <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varop'>.</span> <span class='varid'>uriScheme</span>
+<a name="line-874"></a>
+<a name="line-875"></a><span class='comment'>-- | arrow for selecting the registered name (host) of the URI, fails if input is not a legal URI</span>
+<a name="line-876"></a>
+<a name="line-877"></a><a name="getRegNameFromURI"></a><span class='definition'>getRegNameFromURI</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-878"></a><span class='definition'>getRegNameFromURI</span>	<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>host</span>
+<a name="line-879"></a>    <span class='keyword'>where</span>
+<a name="line-880"></a>    <span class='varid'>host</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriRegName</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>
+<a name="line-881"></a>
+<a name="line-882"></a><span class='comment'>-- | arrow for selecting the port number of the URI without leading \':\', fails if input is not a legal URI</span>
+<a name="line-883"></a>
+<a name="line-884"></a><a name="getPortFromURI"></a><span class='definition'>getPortFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-885"></a><span class='definition'>getPortFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>port</span>
+<a name="line-886"></a>    <span class='keyword'>where</span>
+<a name="line-887"></a>    <span class='varid'>port</span> <span class='keyglyph'>=</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>':'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriPort</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>
+<a name="line-888"></a>
+<a name="line-889"></a><span class='comment'>-- | arrow for selecting the user info of the URI without trailing \'\@\', fails if input is not a legal URI</span>
+<a name="line-890"></a>
+<a name="line-891"></a><a name="getUserInfoFromURI"></a><span class='definition'>getUserInfoFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-892"></a><span class='definition'>getUserInfoFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>ui</span>
+<a name="line-893"></a>    <span class='keyword'>where</span>
+<a name="line-894"></a>    <span class='varid'>ui</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>'@'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriUserInfo</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>
+<a name="line-895"></a>
+<a name="line-896"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>
+<a name="line-897"></a>
+<a name="line-898"></a><a name="getPathFromURI"></a><span class='definition'>getPathFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-899"></a><span class='definition'>getPathFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriPath</span>
+<a name="line-900"></a>
+<a name="line-901"></a><span class='comment'>-- | arrow for computing the query component of an URI, fails if input is not a legal URI</span>
+<a name="line-902"></a>
+<a name="line-903"></a><a name="getQueryFromURI"></a><span class='definition'>getQueryFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-904"></a><span class='definition'>getQueryFromURI</span>		<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriQuery</span>
+<a name="line-905"></a>
+<a name="line-906"></a><span class='comment'>-- | arrow for computing the fragment component of an URI, fails if input is not a legal URI</span>
+<a name="line-907"></a>
+<a name="line-908"></a><a name="getFragmentFromURI"></a><span class='definition'>getFragmentFromURI</span>	<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-909"></a><span class='definition'>getFragmentFromURI</span>	<span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriFragment</span>
+<a name="line-910"></a>
+<a name="line-911"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>
+<a name="line-912"></a>
+<a name="line-913"></a><a name="getPartFromURI"></a><span class='definition'>getPartFromURI</span>		<span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=&gt;</span> <span class='layout'>(</span><span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-914"></a><span class='definition'>getPartFromURI</span> <span class='varid'>sel</span>
+<a name="line-915"></a>    <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>getPart</span><span class='layout'>)</span>
+<a name="line-916"></a>      <span class='keyword'>where</span>
+<a name="line-917"></a>      <span class='varid'>getPart</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-918"></a>		  <span class='varid'>uri</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>s</span>
+<a name="line-919"></a>		  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sel</span> <span class='varid'>uri</span><span class='layout'>)</span>
+<a name="line-920"></a>
+<a name="line-921"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-922"></a>
+<a name="line-923"></a><span class='comment'>-- | set the table mapping of file extensions to mime types in the system state</span>
+<a name="line-924"></a><span class='comment'>--</span>
+<a name="line-925"></a><span class='comment'>-- Default table is defined in 'Text.XML.HXT.DOM.MimeTypeDefaults'.</span>
+<a name="line-926"></a><span class='comment'>-- This table is used when reading loacl files, (file: protocol) to determine the mime type</span>
+<a name="line-927"></a>
+<a name="line-928"></a><a name="setMimeTypeTable"></a><span class='definition'>setMimeTypeTable</span>	<span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-929"></a><span class='definition'>setMimeTypeTable</span> <span class='varid'>mtt</span>
+<a name="line-930"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>xio_mimeTypes</span> <span class='keyglyph'>=</span> <span class='varid'>mtt</span><span class='layout'>}</span><span class='layout'>)</span>
+<a name="line-931"></a>
+<a name="line-932"></a><span class='comment'>-- | set the table mapping of file extensions to mime types by an external config file</span>
+<a name="line-933"></a><span class='comment'>--</span>
+<a name="line-934"></a><span class='comment'>-- The config file must follow the conventions of /etc/mime.types on a debian linux system,</span>
+<a name="line-935"></a><span class='comment'>-- that means all empty lines and all lines starting with a # are ignored. The other lines</span>
+<a name="line-936"></a><span class='comment'>-- must consist of a mime type followed by a possible empty list of extensions.</span>
+<a name="line-937"></a><span class='comment'>-- The list of extenstions and mime types overwrites the default list in the system state</span>
+<a name="line-938"></a><span class='comment'>-- of the IOStateArrow</span>
+<a name="line-939"></a>
+<a name="line-940"></a><a name="setMimeTypeTableFromFile"></a><span class='definition'>setMimeTypeTableFromFile</span>	<span class='keyglyph'>::</span> <span class='conid'>FilePath</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>
+<a name="line-941"></a><span class='definition'>setMimeTypeTableFromFile</span> <span class='varid'>file</span>
+<a name="line-942"></a>    <span class='keyglyph'>=</span> <span class='varid'>setMimeTypeTable</span> <span class='varop'>$&lt;</span> <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='varid'>readMimeTypeTable</span> <span class='varid'>file</span><span class='layout'>)</span>
+<a name="line-943"></a>
+<a name="line-944"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Arrow.html b/doc/hdoc/src/Text-XML-HXT-Arrow.html
--- a/doc/hdoc/src/Text-XML-HXT-Arrow.html
+++ b/doc/hdoc/src/Text-XML-HXT-Arrow.html
@@ -48,30 +48,34 @@
 <a name="line-40"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span>
 <a name="line-41"></a>
 <a name="line-42"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>XsltArrows</span>
-<a name="line-43"></a>    <span class='layout'>)</span>
-<a name="line-44"></a><span class='keyword'>where</span>
-<a name="line-45"></a>
-<a name="line-46"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>			<span class='comment'>-- arrow classes</span>
+<a name="line-43"></a>
+<a name="line-44"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Version</span>
+<a name="line-45"></a>    <span class='layout'>)</span>
+<a name="line-46"></a><span class='keyword'>where</span>
 <a name="line-47"></a>
-<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
-<a name="line-49"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentInput</span>
-<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</span>
-<a name="line-51"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>
-<a name="line-52"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>GeneralEntitySubstitution</span>
-<a name="line-53"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Namespace</span>
-<a name="line-54"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span>
-<a name="line-55"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ProcessDocument</span>
-<a name="line-56"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ReadDocument</span>
-<a name="line-57"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>WriteDocument</span>
-<a name="line-58"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
-<a name="line-59"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>
-<a name="line-60"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlRegex</span> <span class='conid'>()</span>		<span class='comment'>-- import this "by hand"</span>
-<a name="line-61"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XPath</span>
-<a name="line-62"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span>				<span class='comment'>-- just for adding the module to the lib</span>
-<a name="line-63"></a>       <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XPathSimple</span> <span class='keyword'>as</span> <span class='conid'>XPS</span> <span class='conid'>()</span>
-<a name="line-64"></a>
-<a name="line-65"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>XsltArrows</span>
+<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>			<span class='comment'>-- arrow classes</span>
+<a name="line-49"></a>
+<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
+<a name="line-51"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentInput</span>
+<a name="line-52"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</span>
+<a name="line-53"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>
+<a name="line-54"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>GeneralEntitySubstitution</span>
+<a name="line-55"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Namespace</span>
+<a name="line-56"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span>
+<a name="line-57"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ProcessDocument</span>
+<a name="line-58"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ReadDocument</span>
+<a name="line-59"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>WriteDocument</span>
+<a name="line-60"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>
+<a name="line-61"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>
+<a name="line-62"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlRegex</span> <span class='conid'>()</span>		<span class='comment'>-- import this "by hand"</span>
+<a name="line-63"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XPath</span>
+<a name="line-64"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span>				<span class='comment'>-- just for adding the module to the lib</span>
+<a name="line-65"></a>       <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XPathSimple</span> <span class='keyword'>as</span> <span class='conid'>XPS</span> <span class='conid'>()</span>
 <a name="line-66"></a>
-<a name="line-67"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-67"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>XsltArrows</span>
+<a name="line-68"></a>
+<a name="line-69"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Version</span>
+<a name="line-70"></a>
+<a name="line-71"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-Interface.html b/doc/hdoc/src/Text-XML-HXT-DOM-Interface.html
--- a/doc/hdoc/src/Text-XML-HXT-DOM-Interface.html
+++ b/doc/hdoc/src/Text-XML-HXT-DOM-Interface.html
@@ -31,16 +31,18 @@
 <a name="line-23"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>
 <a name="line-24"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>
 <a name="line-25"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>
-<a name="line-26"></a>    <span class='layout'>)</span>
-<a name="line-27"></a><span class='keyword'>where</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>		<span class='comment'>-- constants</span>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>		<span class='comment'>-- XML Tree types</span>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>
-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>		<span class='comment'>-- predefined options</span>
-<a name="line-34"></a>
-<a name="line-35"></a>
-<a name="line-36"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-26"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span>
+<a name="line-27"></a>    <span class='layout'>)</span>
+<a name="line-28"></a><span class='keyword'>where</span>
+<a name="line-29"></a>
+<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>		<span class='comment'>-- constants</span>
+<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>		<span class='comment'>-- XML Tree types</span>
+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>
+<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>
+<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>		<span class='comment'>-- predefined options</span>
+<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span>		<span class='comment'>-- mime types related stuff</span>
+<a name="line-36"></a>
+<a name="line-37"></a>
+<a name="line-38"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-MimeTypeDefaults.html b/doc/hdoc/src/Text-XML-HXT-DOM-MimeTypeDefaults.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/src/Text-XML-HXT-DOM-MimeTypeDefaults.html
@@ -0,0 +1,594 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Haskell Code by HsColour</title>
+<link type='text/css' rel='stylesheet' href='hscolour.css' />
+</head>
+<body>
+<pre><a name="line-1"></a><span class='comment'>-- | default mime type table</span>
+<a name="line-2"></a><span class='comment'>-- </span>
+<a name="line-3"></a><span class='comment'>-- this file is generated from file /etc/mime.types</span>
+<a name="line-4"></a>
+<a name="line-5"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypeDefaults</span>
+<a name="line-6"></a><span class='keyword'>where</span>
+<a name="line-7"></a>
+<a name="line-8"></a><span class='comment'>-- | the table with the mapping from file name extensions to mime types</span>
+<a name="line-9"></a>
+<a name="line-10"></a><a name="mimeTypeDefaults"></a><span class='definition'>mimeTypeDefaults</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-11"></a><span class='definition'>mimeTypeDefaults</span>
+<a name="line-12"></a>  <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='str'>"123"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.lotus-1-2-3"</span><span class='layout'>)</span>
+<a name="line-13"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"3ds"</span><span class='layout'>,</span>	<span class='str'>"image/x-3ds"</span><span class='layout'>)</span>
+<a name="line-14"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"3g2"</span><span class='layout'>,</span>	<span class='str'>"video/x-3gpp2"</span><span class='layout'>)</span>
+<a name="line-15"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"3gp"</span><span class='layout'>,</span>	<span class='str'>"video/3gpp"</span><span class='layout'>)</span>
+<a name="line-16"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"669"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mod"</span><span class='layout'>)</span>
+<a name="line-17"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"BAY"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-18"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"BLEND"</span><span class='layout'>,</span>	<span class='str'>"application/x-blender"</span><span class='layout'>)</span>
+<a name="line-19"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"BMQ"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-20"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"C"</span><span class='layout'>,</span>	<span class='str'>"text/x-c++src"</span><span class='layout'>)</span>
+<a name="line-21"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"CR2"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-22"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"CRW"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-23"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"CS1"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-24"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"CSSL"</span><span class='layout'>,</span>	<span class='str'>"text/css"</span><span class='layout'>)</span>
+<a name="line-25"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"DC2"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-26"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"DCR"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-27"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"FFF"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-28"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"K25"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-29"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"KDC"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-30"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"MOS"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-31"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"MRW"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-32"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"NEF"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-33"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"NSV"</span><span class='layout'>,</span>	<span class='str'>"video/x-nsv"</span><span class='layout'>)</span>
+<a name="line-34"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ORF"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-35"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"PAR2"</span><span class='layout'>,</span>	<span class='str'>"application/x-par2"</span><span class='layout'>)</span>
+<a name="line-36"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"PEF"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-37"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"RAF"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-38"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"RDC"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-39"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"SRF"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-40"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"TTC"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-ttf"</span><span class='layout'>)</span>
+<a name="line-41"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"X3F"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-42"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"XM"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mod"</span><span class='layout'>)</span>
+<a name="line-43"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"Z"</span><span class='layout'>,</span>	<span class='str'>"application/x-compress"</span><span class='layout'>)</span>
+<a name="line-44"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"a"</span><span class='layout'>,</span>	<span class='str'>"application/x-archive"</span><span class='layout'>)</span>
+<a name="line-45"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aac"</span><span class='layout'>,</span>	<span class='str'>"audio/x-aac"</span><span class='layout'>)</span>
+<a name="line-46"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"abw"</span><span class='layout'>,</span>	<span class='str'>"application/x-abiword"</span><span class='layout'>)</span>
+<a name="line-47"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"abw.CRASHED"</span><span class='layout'>,</span>	<span class='str'>"application/x-abiword"</span><span class='layout'>)</span>
+<a name="line-48"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"abw.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-abiword"</span><span class='layout'>)</span>
+<a name="line-49"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ac3"</span><span class='layout'>,</span>	<span class='str'>"audio/ac3"</span><span class='layout'>)</span>
+<a name="line-50"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"adb"</span><span class='layout'>,</span>	<span class='str'>"text/x-adasrc"</span><span class='layout'>)</span>
+<a name="line-51"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ads"</span><span class='layout'>,</span>	<span class='str'>"text/x-adasrc"</span><span class='layout'>)</span>
+<a name="line-52"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"afm"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-afm"</span><span class='layout'>)</span>
+<a name="line-53"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ag"</span><span class='layout'>,</span>	<span class='str'>"image/x-applix-graphics"</span><span class='layout'>)</span>
+<a name="line-54"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ai"</span><span class='layout'>,</span>	<span class='str'>"application/illustrator"</span><span class='layout'>)</span>
+<a name="line-55"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aif"</span><span class='layout'>,</span>	<span class='str'>"audio/x-aiff"</span><span class='layout'>)</span>
+<a name="line-56"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aif"</span><span class='layout'>,</span>	<span class='str'>"audio/x-aiff"</span><span class='layout'>)</span>
+<a name="line-57"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aifc"</span><span class='layout'>,</span>	<span class='str'>"audio/x-aiff"</span><span class='layout'>)</span>
+<a name="line-58"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aiff"</span><span class='layout'>,</span>	<span class='str'>"audio/x-aiff"</span><span class='layout'>)</span>
+<a name="line-59"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aiff"</span><span class='layout'>,</span>	<span class='str'>"audio/x-aiff"</span><span class='layout'>)</span>
+<a name="line-60"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"al"</span><span class='layout'>,</span>	<span class='str'>"application/x-perl"</span><span class='layout'>)</span>
+<a name="line-61"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"anim[1-9j]"</span><span class='layout'>,</span>	<span class='str'>"video/x-anim"</span><span class='layout'>)</span>
+<a name="line-62"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aop"</span><span class='layout'>,</span>	<span class='str'>"application/x-frontline"</span><span class='layout'>)</span>
+<a name="line-63"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"arj"</span><span class='layout'>,</span>	<span class='str'>"application/x-arj"</span><span class='layout'>)</span>
+<a name="line-64"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"as"</span><span class='layout'>,</span>	<span class='str'>"application/x-applix-spreadsheet"</span><span class='layout'>)</span>
+<a name="line-65"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"asax"</span><span class='layout'>,</span>	<span class='str'>"application/x-asax"</span><span class='layout'>)</span>
+<a name="line-66"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"asc"</span><span class='layout'>,</span>	<span class='str'>"text/plain"</span><span class='layout'>)</span>
+<a name="line-67"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ascx"</span><span class='layout'>,</span>	<span class='str'>"application/x-ascx"</span><span class='layout'>)</span>
+<a name="line-68"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"asf"</span><span class='layout'>,</span>	<span class='str'>"video/x-ms-asf"</span><span class='layout'>)</span>
+<a name="line-69"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ashx"</span><span class='layout'>,</span>	<span class='str'>"application/x-ashx"</span><span class='layout'>)</span>
+<a name="line-70"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"asix"</span><span class='layout'>,</span>	<span class='str'>"application/x-asix"</span><span class='layout'>)</span>
+<a name="line-71"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"asmx"</span><span class='layout'>,</span>	<span class='str'>"application/x-asmx"</span><span class='layout'>)</span>
+<a name="line-72"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"asp"</span><span class='layout'>,</span>	<span class='str'>"application/x-asp"</span><span class='layout'>)</span>
+<a name="line-73"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aspx"</span><span class='layout'>,</span>	<span class='str'>"application/x-aspx"</span><span class='layout'>)</span>
+<a name="line-74"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"asx"</span><span class='layout'>,</span>	<span class='str'>"video/x-ms-asf"</span><span class='layout'>)</span>
+<a name="line-75"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"au"</span><span class='layout'>,</span>	<span class='str'>"audio/basic"</span><span class='layout'>)</span>
+<a name="line-76"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"avi"</span><span class='layout'>,</span>	<span class='str'>"video/x-msvideo"</span><span class='layout'>)</span>
+<a name="line-77"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"aw"</span><span class='layout'>,</span>	<span class='str'>"application/x-applix-word"</span><span class='layout'>)</span>
+<a name="line-78"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"axd"</span><span class='layout'>,</span>	<span class='str'>"application/x-axd"</span><span class='layout'>)</span>
+<a name="line-79"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bak"</span><span class='layout'>,</span>	<span class='str'>"application/x-trash"</span><span class='layout'>)</span>
+<a name="line-80"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bay"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-81"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bcpio"</span><span class='layout'>,</span>	<span class='str'>"application/x-bcpio"</span><span class='layout'>)</span>
+<a name="line-82"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bdf"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-bdf"</span><span class='layout'>)</span>
+<a name="line-83"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bib"</span><span class='layout'>,</span>	<span class='str'>"text/x-bibtex"</span><span class='layout'>)</span>
+<a name="line-84"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bin"</span><span class='layout'>,</span>	<span class='str'>"application/octet-stream"</span><span class='layout'>)</span>
+<a name="line-85"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bin"</span><span class='layout'>,</span>	<span class='str'>"application/x-stuffit"</span><span class='layout'>)</span>
+<a name="line-86"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"blend"</span><span class='layout'>,</span>	<span class='str'>"application/x-blender"</span><span class='layout'>)</span>
+<a name="line-87"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"blender"</span><span class='layout'>,</span>	<span class='str'>"application/x-blender"</span><span class='layout'>)</span>
+<a name="line-88"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bmp"</span><span class='layout'>,</span>	<span class='str'>"image/bmp"</span><span class='layout'>)</span>
+<a name="line-89"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bmq"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-90"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"boo"</span><span class='layout'>,</span>	<span class='str'>"text/x-boo"</span><span class='layout'>)</span>
+<a name="line-91"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bz"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip"</span><span class='layout'>)</span>
+<a name="line-92"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bz"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip"</span><span class='layout'>)</span>
+<a name="line-93"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bz2"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip"</span><span class='layout'>)</span>
+<a name="line-94"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"bz2"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip"</span><span class='layout'>)</span>
+<a name="line-95"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"c"</span><span class='layout'>,</span>	<span class='str'>"text/x-csrc"</span><span class='layout'>)</span>
+<a name="line-96"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"c++"</span><span class='layout'>,</span>	<span class='str'>"text/x-c++src"</span><span class='layout'>)</span>
+<a name="line-97"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"caves"</span><span class='layout'>,</span>	<span class='str'>"application/x-gnome-stones"</span><span class='layout'>)</span>
+<a name="line-98"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cc"</span><span class='layout'>,</span>	<span class='str'>"text/x-c++src"</span><span class='layout'>)</span>
+<a name="line-99"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cdf"</span><span class='layout'>,</span>	<span class='str'>"application/x-netcdf"</span><span class='layout'>)</span>
+<a name="line-100"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cdr"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.corel-draw"</span><span class='layout'>)</span>
+<a name="line-101"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cer"</span><span class='layout'>,</span>	<span class='str'>"application/x-x509-ca-cert"</span><span class='layout'>)</span>
+<a name="line-102"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cert"</span><span class='layout'>,</span>	<span class='str'>"application/x-x509-ca-cert"</span><span class='layout'>)</span>
+<a name="line-103"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cgi"</span><span class='layout'>,</span>	<span class='str'>"application/x-cgi"</span><span class='layout'>)</span>
+<a name="line-104"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cgm"</span><span class='layout'>,</span>	<span class='str'>"image/cgm"</span><span class='layout'>)</span>
+<a name="line-105"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"chm"</span><span class='layout'>,</span>	<span class='str'>"application/x-chm"</span><span class='layout'>)</span>
+<a name="line-106"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"chrt"</span><span class='layout'>,</span>	<span class='str'>"application/x-kchart"</span><span class='layout'>)</span>
+<a name="line-107"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cht"</span><span class='layout'>,</span>	<span class='str'>"application/chemtool"</span><span class='layout'>)</span>
+<a name="line-108"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"class"</span><span class='layout'>,</span>	<span class='str'>"application/x-java"</span><span class='layout'>)</span>
+<a name="line-109"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cls"</span><span class='layout'>,</span>	<span class='str'>"text/x-tex"</span><span class='layout'>)</span>
+<a name="line-110"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cmbx"</span><span class='layout'>,</span>	<span class='str'>"application/x-cmbx"</span><span class='layout'>)</span>
+<a name="line-111"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"config"</span><span class='layout'>,</span>	<span class='str'>"application/x-config"</span><span class='layout'>)</span>
+<a name="line-112"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"connection"</span><span class='layout'>,</span>	<span class='str'>"application/x-gnome-db-connection"</span><span class='layout'>)</span>
+<a name="line-113"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cpio"</span><span class='layout'>,</span>	<span class='str'>"application/x-cpio"</span><span class='layout'>)</span>
+<a name="line-114"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cpio.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-cpio-compressed"</span><span class='layout'>)</span>
+<a name="line-115"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cpp"</span><span class='layout'>,</span>	<span class='str'>"text/x-c++src"</span><span class='layout'>)</span>
+<a name="line-116"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cr2"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-117"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"crt"</span><span class='layout'>,</span>	<span class='str'>"application/x-x509-ca-cert"</span><span class='layout'>)</span>
+<a name="line-118"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"crw"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-119"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cs"</span><span class='layout'>,</span>	<span class='str'>"text/x-csharp"</span><span class='layout'>)</span>
+<a name="line-120"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cs1"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-121"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"csh"</span><span class='layout'>,</span>	<span class='str'>"application/x-csh"</span><span class='layout'>)</span>
+<a name="line-122"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"css"</span><span class='layout'>,</span>	<span class='str'>"text/css"</span><span class='layout'>)</span>
+<a name="line-123"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"csv"</span><span class='layout'>,</span>	<span class='str'>"text/x-comma-separated-values"</span><span class='layout'>)</span>
+<a name="line-124"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cue"</span><span class='layout'>,</span>	<span class='str'>"application/x-cue"</span><span class='layout'>)</span>
+<a name="line-125"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cur"</span><span class='layout'>,</span>	<span class='str'>"image/x-win-bitmap"</span><span class='layout'>)</span>
+<a name="line-126"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"cxx"</span><span class='layout'>,</span>	<span class='str'>"text/x-c++src"</span><span class='layout'>)</span>
+<a name="line-127"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"d"</span><span class='layout'>,</span>	<span class='str'>"text/x-dsrc"</span><span class='layout'>)</span>
+<a name="line-128"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dat"</span><span class='layout'>,</span>	<span class='str'>"video/mpeg"</span><span class='layout'>)</span>
+<a name="line-129"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"database"</span><span class='layout'>,</span>	<span class='str'>"application/x-gnome-db-database"</span><span class='layout'>)</span>
+<a name="line-130"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dbf"</span><span class='layout'>,</span>	<span class='str'>"application/x-dbase"</span><span class='layout'>)</span>
+<a name="line-131"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dc"</span><span class='layout'>,</span>	<span class='str'>"application/x-dc-rom"</span><span class='layout'>)</span>
+<a name="line-132"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dc2"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-133"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dcl"</span><span class='layout'>,</span>	<span class='str'>"text/x-dcl"</span><span class='layout'>)</span>
+<a name="line-134"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dcm"</span><span class='layout'>,</span>	<span class='str'>"application/dicom"</span><span class='layout'>)</span>
+<a name="line-135"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dcr"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-136"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"deb"</span><span class='layout'>,</span>	<span class='str'>"application/x-deb"</span><span class='layout'>)</span>
+<a name="line-137"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"der"</span><span class='layout'>,</span>	<span class='str'>"application/x-x509-ca-cert"</span><span class='layout'>)</span>
+<a name="line-138"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"desktop"</span><span class='layout'>,</span>	<span class='str'>"application/x-desktop"</span><span class='layout'>)</span>
+<a name="line-139"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"devhelp"</span><span class='layout'>,</span>	<span class='str'>"application/x-devhelp"</span><span class='layout'>)</span>
+<a name="line-140"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dia"</span><span class='layout'>,</span>	<span class='str'>"application/x-dia-diagram"</span><span class='layout'>)</span>
+<a name="line-141"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dif"</span><span class='layout'>,</span>	<span class='str'>"video/dv"</span><span class='layout'>)</span>
+<a name="line-142"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"diff"</span><span class='layout'>,</span>	<span class='str'>"text/x-patch"</span><span class='layout'>)</span>
+<a name="line-143"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"disco"</span><span class='layout'>,</span>	<span class='str'>"application/x-disco"</span><span class='layout'>)</span>
+<a name="line-144"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"display"</span><span class='layout'>,</span>	<span class='str'>"application/x-gdesklets-display"</span><span class='layout'>)</span>
+<a name="line-145"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"djv"</span><span class='layout'>,</span>	<span class='str'>"image/vnd.djvu"</span><span class='layout'>)</span>
+<a name="line-146"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"djvu"</span><span class='layout'>,</span>	<span class='str'>"image/vnd.djvu"</span><span class='layout'>)</span>
+<a name="line-147"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"doc"</span><span class='layout'>,</span>	<span class='str'>"application/msword"</span><span class='layout'>)</span>
+<a name="line-148"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"docbook"</span><span class='layout'>,</span>	<span class='str'>"application/docbook+xml"</span><span class='layout'>)</span>
+<a name="line-149"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dsl"</span><span class='layout'>,</span>	<span class='str'>"text/x-dsl"</span><span class='layout'>)</span>
+<a name="line-150"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dtd"</span><span class='layout'>,</span>	<span class='str'>"text/x-dtd"</span><span class='layout'>)</span>
+<a name="line-151"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dv"</span><span class='layout'>,</span>	<span class='str'>"video/dv"</span><span class='layout'>)</span>
+<a name="line-152"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dvi"</span><span class='layout'>,</span>	<span class='str'>"application/x-dvi"</span><span class='layout'>)</span>
+<a name="line-153"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dwg"</span><span class='layout'>,</span>	<span class='str'>"image/vnd.dwg"</span><span class='layout'>)</span>
+<a name="line-154"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"dxf"</span><span class='layout'>,</span>	<span class='str'>"image/vnd.dxf"</span><span class='layout'>)</span>
+<a name="line-155"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ear"</span><span class='layout'>,</span>	<span class='str'>"application/x-java-archive"</span><span class='layout'>)</span>
+<a name="line-156"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"egon"</span><span class='layout'>,</span>	<span class='str'>"application/x-egon"</span><span class='layout'>)</span>
+<a name="line-157"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"el"</span><span class='layout'>,</span>	<span class='str'>"text/x-emacs-lisp"</span><span class='layout'>)</span>
+<a name="line-158"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"eps"</span><span class='layout'>,</span>	<span class='str'>"image/x-eps"</span><span class='layout'>)</span>
+<a name="line-159"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"epsf"</span><span class='layout'>,</span>	<span class='str'>"image/x-eps"</span><span class='layout'>)</span>
+<a name="line-160"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"epsi"</span><span class='layout'>,</span>	<span class='str'>"image/x-eps"</span><span class='layout'>)</span>
+<a name="line-161"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"etheme"</span><span class='layout'>,</span>	<span class='str'>"application/x-e-theme"</span><span class='layout'>)</span>
+<a name="line-162"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"etx"</span><span class='layout'>,</span>	<span class='str'>"text/x-setext"</span><span class='layout'>)</span>
+<a name="line-163"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"exe"</span><span class='layout'>,</span>	<span class='str'>"application/x-executable"</span><span class='layout'>)</span>
+<a name="line-164"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"exe"</span><span class='layout'>,</span>	<span class='str'>"application/x-ms-dos-executable"</span><span class='layout'>)</span>
+<a name="line-165"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ez"</span><span class='layout'>,</span>	<span class='str'>"application/andrew-inset"</span><span class='layout'>)</span>
+<a name="line-166"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"f"</span><span class='layout'>,</span>	<span class='str'>"text/x-fortran"</span><span class='layout'>)</span>
+<a name="line-167"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"fff"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-168"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"fig"</span><span class='layout'>,</span>	<span class='str'>"image/x-xfig"</span><span class='layout'>)</span>
+<a name="line-169"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"fits"</span><span class='layout'>,</span>	<span class='str'>"image/x-fits"</span><span class='layout'>)</span>
+<a name="line-170"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"flac"</span><span class='layout'>,</span>	<span class='str'>"audio/x-flac"</span><span class='layout'>)</span>
+<a name="line-171"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"flc"</span><span class='layout'>,</span>	<span class='str'>"video/x-flic"</span><span class='layout'>)</span>
+<a name="line-172"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"fli"</span><span class='layout'>,</span>	<span class='str'>"video/x-flic"</span><span class='layout'>)</span>
+<a name="line-173"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"flw"</span><span class='layout'>,</span>	<span class='str'>"application/x-kivio"</span><span class='layout'>)</span>
+<a name="line-174"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"fo"</span><span class='layout'>,</span>	<span class='str'>"text/x-xslfo"</span><span class='layout'>)</span>
+<a name="line-175"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"g3"</span><span class='layout'>,</span>	<span class='str'>"image/fax-g3"</span><span class='layout'>)</span>
+<a name="line-176"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gb"</span><span class='layout'>,</span>	<span class='str'>"application/x-gameboy-rom"</span><span class='layout'>)</span>
+<a name="line-177"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gcrd"</span><span class='layout'>,</span>	<span class='str'>"text/directory"</span><span class='layout'>)</span>
+<a name="line-178"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gen"</span><span class='layout'>,</span>	<span class='str'>"application/x-genesis-rom"</span><span class='layout'>)</span>
+<a name="line-179"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gf"</span><span class='layout'>,</span>	<span class='str'>"application/x-tex-gf"</span><span class='layout'>)</span>
+<a name="line-180"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gg"</span><span class='layout'>,</span>	<span class='str'>"application/x-sms-rom"</span><span class='layout'>)</span>
+<a name="line-181"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gif"</span><span class='layout'>,</span>	<span class='str'>"image/gif"</span><span class='layout'>)</span>
+<a name="line-182"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"glabels"</span><span class='layout'>,</span>	<span class='str'>"application/x-glabels"</span><span class='layout'>)</span>
+<a name="line-183"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"glade"</span><span class='layout'>,</span>	<span class='str'>"application/x-glade"</span><span class='layout'>)</span>
+<a name="line-184"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gmo"</span><span class='layout'>,</span>	<span class='str'>"application/x-gettext-translation"</span><span class='layout'>)</span>
+<a name="line-185"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gnc"</span><span class='layout'>,</span>	<span class='str'>"application/x-gnucash"</span><span class='layout'>)</span>
+<a name="line-186"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gnucash"</span><span class='layout'>,</span>	<span class='str'>"application/x-gnucash"</span><span class='layout'>)</span>
+<a name="line-187"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gnumeric"</span><span class='layout'>,</span>	<span class='str'>"application/x-gnumeric"</span><span class='layout'>)</span>
+<a name="line-188"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gpg"</span><span class='layout'>,</span>	<span class='str'>"application/pgp-encrypted"</span><span class='layout'>)</span>
+<a name="line-189"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gra"</span><span class='layout'>,</span>	<span class='str'>"application/x-graphite"</span><span class='layout'>)</span>
+<a name="line-190"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gsf"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-type1"</span><span class='layout'>)</span>
+<a name="line-191"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gtar"</span><span class='layout'>,</span>	<span class='str'>"application/x-gtar"</span><span class='layout'>)</span>
+<a name="line-192"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-gzip"</span><span class='layout'>)</span>
+<a name="line-193"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"h"</span><span class='layout'>,</span>	<span class='str'>"text/x-chdr"</span><span class='layout'>)</span>
+<a name="line-194"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"h++"</span><span class='layout'>,</span>	<span class='str'>"text/x-chdr"</span><span class='layout'>)</span>
+<a name="line-195"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"hdf"</span><span class='layout'>,</span>	<span class='str'>"application/x-hdf"</span><span class='layout'>)</span>
+<a name="line-196"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"hh"</span><span class='layout'>,</span>	<span class='str'>"text/x-c++hdr"</span><span class='layout'>)</span>
+<a name="line-197"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"hp"</span><span class='layout'>,</span>	<span class='str'>"text/x-chdr"</span><span class='layout'>)</span>
+<a name="line-198"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"hpgl"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.hp-hpgl"</span><span class='layout'>)</span>
+<a name="line-199"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"hs"</span><span class='layout'>,</span>	<span class='str'>"text/x-haskell"</span><span class='layout'>)</span>
+<a name="line-200"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"htm"</span><span class='layout'>,</span>	<span class='str'>"text/html"</span><span class='layout'>)</span>
+<a name="line-201"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"html"</span><span class='layout'>,</span>	<span class='str'>"text/html"</span><span class='layout'>)</span>
+<a name="line-202"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ica"</span><span class='layout'>,</span>	<span class='str'>"application/x-ica"</span><span class='layout'>)</span>
+<a name="line-203"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"icb"</span><span class='layout'>,</span>	<span class='str'>"image/x-icb"</span><span class='layout'>)</span>
+<a name="line-204"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ico"</span><span class='layout'>,</span>	<span class='str'>"image/x-ico"</span><span class='layout'>)</span>
+<a name="line-205"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ics"</span><span class='layout'>,</span>	<span class='str'>"text/calendar"</span><span class='layout'>)</span>
+<a name="line-206"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"idl"</span><span class='layout'>,</span>	<span class='str'>"text/x-idl"</span><span class='layout'>)</span>
+<a name="line-207"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ief"</span><span class='layout'>,</span>	<span class='str'>"image/ief"</span><span class='layout'>)</span>
+<a name="line-208"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"iff"</span><span class='layout'>,</span>	<span class='str'>"image/x-iff"</span><span class='layout'>)</span>
+<a name="line-209"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"il"</span><span class='layout'>,</span>	<span class='str'>"text/x-msil"</span><span class='layout'>)</span>
+<a name="line-210"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ilbm"</span><span class='layout'>,</span>	<span class='str'>"image/x-ilbm"</span><span class='layout'>)</span>
+<a name="line-211"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"iso"</span><span class='layout'>,</span>	<span class='str'>"application/x-cd-image"</span><span class='layout'>)</span>
+<a name="line-212"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"it"</span><span class='layout'>,</span>	<span class='str'>"audio/x-it"</span><span class='layout'>)</span>
+<a name="line-213"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jam"</span><span class='layout'>,</span>	<span class='str'>"application/x-jamin"</span><span class='layout'>)</span>
+<a name="line-214"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jar"</span><span class='layout'>,</span>	<span class='str'>"application/x-jar"</span><span class='layout'>)</span>
+<a name="line-215"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jar"</span><span class='layout'>,</span>	<span class='str'>"application/x-java-archive"</span><span class='layout'>)</span>
+<a name="line-216"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"java"</span><span class='layout'>,</span>	<span class='str'>"text/x-java"</span><span class='layout'>)</span>
+<a name="line-217"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jng"</span><span class='layout'>,</span>	<span class='str'>"image/x-jng"</span><span class='layout'>)</span>
+<a name="line-218"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jnlp"</span><span class='layout'>,</span>	<span class='str'>"application/x-java-jnlp-file"</span><span class='layout'>)</span>
+<a name="line-219"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jp2"</span><span class='layout'>,</span>	<span class='str'>"image/jpeg2000"</span><span class='layout'>)</span>
+<a name="line-220"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jpe"</span><span class='layout'>,</span>	<span class='str'>"image/jpeg"</span><span class='layout'>)</span>
+<a name="line-221"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jpeg"</span><span class='layout'>,</span>	<span class='str'>"image/jpeg"</span><span class='layout'>)</span>
+<a name="line-222"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jpg"</span><span class='layout'>,</span>	<span class='str'>"image/jpeg"</span><span class='layout'>)</span>
+<a name="line-223"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jpr"</span><span class='layout'>,</span>	<span class='str'>"application/x-jbuilder-project"</span><span class='layout'>)</span>
+<a name="line-224"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"jpx"</span><span class='layout'>,</span>	<span class='str'>"application/x-jbuilder-project"</span><span class='layout'>)</span>
+<a name="line-225"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"js"</span><span class='layout'>,</span>	<span class='str'>"application/x-javascript"</span><span class='layout'>)</span>
+<a name="line-226"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"js"</span><span class='layout'>,</span>	<span class='str'>"text/x-js"</span><span class='layout'>)</span>
+<a name="line-227"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"k"</span><span class='layout'>,</span>	<span class='str'>"application/x-tex-pk"</span><span class='layout'>)</span>
+<a name="line-228"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"k25"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-229"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"karbon"</span><span class='layout'>,</span>	<span class='str'>"application/x-karbon"</span><span class='layout'>)</span>
+<a name="line-230"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kdc"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-231"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kdelnk"</span><span class='layout'>,</span>	<span class='str'>"application/x-desktop"</span><span class='layout'>)</span>
+<a name="line-232"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kfo"</span><span class='layout'>,</span>	<span class='str'>"application/x-kformula"</span><span class='layout'>)</span>
+<a name="line-233"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kil"</span><span class='layout'>,</span>	<span class='str'>"application/x-killustrator"</span><span class='layout'>)</span>
+<a name="line-234"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kino"</span><span class='layout'>,</span>	<span class='str'>"application/x-smil"</span><span class='layout'>)</span>
+<a name="line-235"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kon"</span><span class='layout'>,</span>	<span class='str'>"application/x-kontour"</span><span class='layout'>)</span>
+<a name="line-236"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kpm"</span><span class='layout'>,</span>	<span class='str'>"application/x-kpovmodeler"</span><span class='layout'>)</span>
+<a name="line-237"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kpr"</span><span class='layout'>,</span>	<span class='str'>"application/x-kpresenter"</span><span class='layout'>)</span>
+<a name="line-238"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kpt"</span><span class='layout'>,</span>	<span class='str'>"application/x-kpresenter"</span><span class='layout'>)</span>
+<a name="line-239"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kra"</span><span class='layout'>,</span>	<span class='str'>"application/x-krita"</span><span class='layout'>)</span>
+<a name="line-240"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ksp"</span><span class='layout'>,</span>	<span class='str'>"application/x-kspread"</span><span class='layout'>)</span>
+<a name="line-241"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kud"</span><span class='layout'>,</span>	<span class='str'>"application/x-kugar"</span><span class='layout'>)</span>
+<a name="line-242"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kwd"</span><span class='layout'>,</span>	<span class='str'>"application/x-kword"</span><span class='layout'>)</span>
+<a name="line-243"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"kwt"</span><span class='layout'>,</span>	<span class='str'>"application/x-kword"</span><span class='layout'>)</span>
+<a name="line-244"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"la"</span><span class='layout'>,</span>	<span class='str'>"application/x-shared-library-la"</span><span class='layout'>)</span>
+<a name="line-245"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lha"</span><span class='layout'>,</span>	<span class='str'>"application/x-lha"</span><span class='layout'>)</span>
+<a name="line-246"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lhs"</span><span class='layout'>,</span>	<span class='str'>"text/x-literate-haskell"</span><span class='layout'>)</span>
+<a name="line-247"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lhz"</span><span class='layout'>,</span>	<span class='str'>"application/x-lhz"</span><span class='layout'>)</span>
+<a name="line-248"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"log"</span><span class='layout'>,</span>	<span class='str'>"text/x-log"</span><span class='layout'>)</span>
+<a name="line-249"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ltx"</span><span class='layout'>,</span>	<span class='str'>"text/x-tex"</span><span class='layout'>)</span>
+<a name="line-250"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lwo"</span><span class='layout'>,</span>	<span class='str'>"image/x-lwo"</span><span class='layout'>)</span>
+<a name="line-251"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lwob"</span><span class='layout'>,</span>	<span class='str'>"image/x-lwo"</span><span class='layout'>)</span>
+<a name="line-252"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lws"</span><span class='layout'>,</span>	<span class='str'>"image/x-lws"</span><span class='layout'>)</span>
+<a name="line-253"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lyx"</span><span class='layout'>,</span>	<span class='str'>"application/x-lyx"</span><span class='layout'>)</span>
+<a name="line-254"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lzh"</span><span class='layout'>,</span>	<span class='str'>"application/x-lha"</span><span class='layout'>)</span>
+<a name="line-255"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lzh"</span><span class='layout'>,</span>	<span class='str'>"application/x-lha"</span><span class='layout'>)</span>
+<a name="line-256"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"lzo"</span><span class='layout'>,</span>	<span class='str'>"application/x-lzop"</span><span class='layout'>)</span>
+<a name="line-257"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"m"</span><span class='layout'>,</span>	<span class='str'>"text/x-objcsrc"</span><span class='layout'>)</span>
+<a name="line-258"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"m15"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mod"</span><span class='layout'>)</span>
+<a name="line-259"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"m3u"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mpegurl"</span><span class='layout'>)</span>
+<a name="line-260"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"m4a"</span><span class='layout'>,</span>	<span class='str'>"audio/x-m4a"</span><span class='layout'>)</span>
+<a name="line-261"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"man"</span><span class='layout'>,</span>	<span class='str'>"application/x-troff-man"</span><span class='layout'>)</span>
+<a name="line-262"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"master"</span><span class='layout'>,</span>	<span class='str'>"application/x-master-page"</span><span class='layout'>)</span>
+<a name="line-263"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"md"</span><span class='layout'>,</span>	<span class='str'>"application/x-genesis-rom"</span><span class='layout'>)</span>
+<a name="line-264"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mdp"</span><span class='layout'>,</span>	<span class='str'>"application/x-mdp"</span><span class='layout'>)</span>
+<a name="line-265"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mds"</span><span class='layout'>,</span>	<span class='str'>"application/x-mds"</span><span class='layout'>)</span>
+<a name="line-266"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mdsx"</span><span class='layout'>,</span>	<span class='str'>"application/x-mdsx"</span><span class='layout'>)</span>
+<a name="line-267"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"me"</span><span class='layout'>,</span>	<span class='str'>"text/x-troff-me"</span><span class='layout'>)</span>
+<a name="line-268"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mergeant"</span><span class='layout'>,</span>	<span class='str'>"application/x-mergeant"</span><span class='layout'>)</span>
+<a name="line-269"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mgp"</span><span class='layout'>,</span>	<span class='str'>"application/x-magicpoint"</span><span class='layout'>)</span>
+<a name="line-270"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mid"</span><span class='layout'>,</span>	<span class='str'>"audio/midi"</span><span class='layout'>)</span>
+<a name="line-271"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"midi"</span><span class='layout'>,</span>	<span class='str'>"audio/midi"</span><span class='layout'>)</span>
+<a name="line-272"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mif"</span><span class='layout'>,</span>	<span class='str'>"application/x-mif"</span><span class='layout'>)</span>
+<a name="line-273"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mkv"</span><span class='layout'>,</span>	<span class='str'>"application/x-matroska"</span><span class='layout'>)</span>
+<a name="line-274"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mm"</span><span class='layout'>,</span>	<span class='str'>"text/x-troff-mm"</span><span class='layout'>)</span>
+<a name="line-275"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mml"</span><span class='layout'>,</span>	<span class='str'>"text/mathml"</span><span class='layout'>)</span>
+<a name="line-276"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mng"</span><span class='layout'>,</span>	<span class='str'>"video/x-mng"</span><span class='layout'>)</span>
+<a name="line-277"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"moc"</span><span class='layout'>,</span>	<span class='str'>"text/x-moc"</span><span class='layout'>)</span>
+<a name="line-278"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mod"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mod"</span><span class='layout'>)</span>
+<a name="line-279"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"moov"</span><span class='layout'>,</span>	<span class='str'>"video/quicktime"</span><span class='layout'>)</span>
+<a name="line-280"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mos"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-281"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mov"</span><span class='layout'>,</span>	<span class='str'>"video/quicktime"</span><span class='layout'>)</span>
+<a name="line-282"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"movie"</span><span class='layout'>,</span>	<span class='str'>"video/x-sgi-movie"</span><span class='layout'>)</span>
+<a name="line-283"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mp2"</span><span class='layout'>,</span>	<span class='str'>"video/mpeg"</span><span class='layout'>)</span>
+<a name="line-284"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mp3"</span><span class='layout'>,</span>	<span class='str'>"audio/mpeg"</span><span class='layout'>)</span>
+<a name="line-285"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mpe"</span><span class='layout'>,</span>	<span class='str'>"video/mpeg"</span><span class='layout'>)</span>
+<a name="line-286"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mpeg"</span><span class='layout'>,</span>	<span class='str'>"video/mpeg"</span><span class='layout'>)</span>
+<a name="line-287"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mpg"</span><span class='layout'>,</span>	<span class='str'>"video/mpeg"</span><span class='layout'>)</span>
+<a name="line-288"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mps"</span><span class='layout'>,</span>	<span class='str'>"application/x-mps"</span><span class='layout'>)</span>
+<a name="line-289"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mrproject"</span><span class='layout'>,</span>	<span class='str'>"application/x-planner"</span><span class='layout'>)</span>
+<a name="line-290"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mrw"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-291"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ms"</span><span class='layout'>,</span>	<span class='str'>"text/x-troff-ms"</span><span class='layout'>)</span>
+<a name="line-292"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"msod"</span><span class='layout'>,</span>	<span class='str'>"image/x-msod"</span><span class='layout'>)</span>
+<a name="line-293"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"msx"</span><span class='layout'>,</span>	<span class='str'>"application/x-msx-rom"</span><span class='layout'>)</span>
+<a name="line-294"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"mtm"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mod"</span><span class='layout'>)</span>
+<a name="line-295"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"n"</span><span class='layout'>,</span>	<span class='str'>"text/x-nemerle"</span><span class='layout'>)</span>
+<a name="line-296"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"n64"</span><span class='layout'>,</span>	<span class='str'>"application/x-n64-rom"</span><span class='layout'>)</span>
+<a name="line-297"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"nb"</span><span class='layout'>,</span>	<span class='str'>"application/mathematica"</span><span class='layout'>)</span>
+<a name="line-298"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"nc"</span><span class='layout'>,</span>	<span class='str'>"application/x-netcdf"</span><span class='layout'>)</span>
+<a name="line-299"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"nef"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-300"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"nes"</span><span class='layout'>,</span>	<span class='str'>"application/x-nes-rom"</span><span class='layout'>)</span>
+<a name="line-301"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"nsv"</span><span class='layout'>,</span>	<span class='str'>"video/x-nsv"</span><span class='layout'>)</span>
+<a name="line-302"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"o"</span><span class='layout'>,</span>	<span class='str'>"application/x-object"</span><span class='layout'>)</span>
+<a name="line-303"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"obj"</span><span class='layout'>,</span>	<span class='str'>"application/x-tgif"</span><span class='layout'>)</span>
+<a name="line-304"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"oda"</span><span class='layout'>,</span>	<span class='str'>"application/oda"</span><span class='layout'>)</span>
+<a name="line-305"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odb"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.database"</span><span class='layout'>)</span>
+<a name="line-306"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odc"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.chart"</span><span class='layout'>)</span>
+<a name="line-307"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odf"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.formula"</span><span class='layout'>)</span>
+<a name="line-308"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odg"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.graphics"</span><span class='layout'>)</span>
+<a name="line-309"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odi"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.image"</span><span class='layout'>)</span>
+<a name="line-310"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odm"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.text-master"</span><span class='layout'>)</span>
+<a name="line-311"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odp"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.presentation"</span><span class='layout'>)</span>
+<a name="line-312"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ods"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.spreadsheet"</span><span class='layout'>)</span>
+<a name="line-313"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"odt"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.text"</span><span class='layout'>)</span>
+<a name="line-314"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ogg"</span><span class='layout'>,</span>	<span class='str'>"application/ogg"</span><span class='layout'>)</span>
+<a name="line-315"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"old"</span><span class='layout'>,</span>	<span class='str'>"application/x-trash"</span><span class='layout'>)</span>
+<a name="line-316"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"oleo"</span><span class='layout'>,</span>	<span class='str'>"application/x-oleo"</span><span class='layout'>)</span>
+<a name="line-317"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"orf"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-318"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"otg"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.graphics-template"</span><span class='layout'>)</span>
+<a name="line-319"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"oth"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.text-web"</span><span class='layout'>)</span>
+<a name="line-320"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"otp"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.presentation-template"</span><span class='layout'>)</span>
+<a name="line-321"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ots"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.spreadsheet-template"</span><span class='layout'>)</span>
+<a name="line-322"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ott"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.oasis.opendocument.text-template"</span><span class='layout'>)</span>
+<a name="line-323"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"p"</span><span class='layout'>,</span>	<span class='str'>"text/x-pascal"</span><span class='layout'>)</span>
+<a name="line-324"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"p12"</span><span class='layout'>,</span>	<span class='str'>"application/x-pkcs12"</span><span class='layout'>)</span>
+<a name="line-325"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"p7s"</span><span class='layout'>,</span>	<span class='str'>"application/pkcs7-signature"</span><span class='layout'>)</span>
+<a name="line-326"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"par2"</span><span class='layout'>,</span>	<span class='str'>"application/x-par2"</span><span class='layout'>)</span>
+<a name="line-327"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pas"</span><span class='layout'>,</span>	<span class='str'>"text/x-pascal"</span><span class='layout'>)</span>
+<a name="line-328"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"patch"</span><span class='layout'>,</span>	<span class='str'>"text/x-patch"</span><span class='layout'>)</span>
+<a name="line-329"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pbm"</span><span class='layout'>,</span>	<span class='str'>"image/x-portable-bitmap"</span><span class='layout'>)</span>
+<a name="line-330"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pcd"</span><span class='layout'>,</span>	<span class='str'>"image/x-photo-cd"</span><span class='layout'>)</span>
+<a name="line-331"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pcf"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-pcf"</span><span class='layout'>)</span>
+<a name="line-332"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pcf.Z"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-type1"</span><span class='layout'>)</span>
+<a name="line-333"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pcf.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-pcf"</span><span class='layout'>)</span>
+<a name="line-334"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pcl"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.hp-pcl"</span><span class='layout'>)</span>
+<a name="line-335"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pdb"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.palm"</span><span class='layout'>)</span>
+<a name="line-336"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pdb"</span><span class='layout'>,</span>	<span class='str'>"application/x-palm-database"</span><span class='layout'>)</span>
+<a name="line-337"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pdf"</span><span class='layout'>,</span>	<span class='str'>"application/pdf"</span><span class='layout'>)</span>
+<a name="line-338"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pef"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-339"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pem"</span><span class='layout'>,</span>	<span class='str'>"application/x-x509-ca-cert"</span><span class='layout'>)</span>
+<a name="line-340"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"perl"</span><span class='layout'>,</span>	<span class='str'>"application/x-perl"</span><span class='layout'>)</span>
+<a name="line-341"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pfa"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-type1"</span><span class='layout'>)</span>
+<a name="line-342"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pfb"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-type1"</span><span class='layout'>)</span>
+<a name="line-343"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pfx"</span><span class='layout'>,</span>	<span class='str'>"application/x-pkcs12"</span><span class='layout'>)</span>
+<a name="line-344"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pgm"</span><span class='layout'>,</span>	<span class='str'>"image/x-portable-graymap"</span><span class='layout'>)</span>
+<a name="line-345"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pgn"</span><span class='layout'>,</span>	<span class='str'>"application/x-chess-pgn"</span><span class='layout'>)</span>
+<a name="line-346"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pgp"</span><span class='layout'>,</span>	<span class='str'>"application/pgp"</span><span class='layout'>)</span>
+<a name="line-347"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pgp"</span><span class='layout'>,</span>	<span class='str'>"application/pgp-encrypted"</span><span class='layout'>)</span>
+<a name="line-348"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"php"</span><span class='layout'>,</span>	<span class='str'>"application/x-php"</span><span class='layout'>)</span>
+<a name="line-349"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"php3"</span><span class='layout'>,</span>	<span class='str'>"application/x-php"</span><span class='layout'>)</span>
+<a name="line-350"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"php4"</span><span class='layout'>,</span>	<span class='str'>"application/x-php"</span><span class='layout'>)</span>
+<a name="line-351"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pict"</span><span class='layout'>,</span>	<span class='str'>"image/x-pict"</span><span class='layout'>)</span>
+<a name="line-352"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pict1"</span><span class='layout'>,</span>	<span class='str'>"image/x-pict"</span><span class='layout'>)</span>
+<a name="line-353"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pict2"</span><span class='layout'>,</span>	<span class='str'>"image/x-pict"</span><span class='layout'>)</span>
+<a name="line-354"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pkr"</span><span class='layout'>,</span>	<span class='str'>"application/pgp-keys"</span><span class='layout'>)</span>
+<a name="line-355"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pl"</span><span class='layout'>,</span>	<span class='str'>"application/x-perl"</span><span class='layout'>)</span>
+<a name="line-356"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"planner"</span><span class='layout'>,</span>	<span class='str'>"application/x-planner"</span><span class='layout'>)</span>
+<a name="line-357"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pln"</span><span class='layout'>,</span>	<span class='str'>"application/x-planperfect"</span><span class='layout'>)</span>
+<a name="line-358"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pls"</span><span class='layout'>,</span>	<span class='str'>"audio/x-scpls"</span><span class='layout'>)</span>
+<a name="line-359"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pls"</span><span class='layout'>,</span>	<span class='str'>"audio/x-scpls"</span><span class='layout'>)</span>
+<a name="line-360"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pm"</span><span class='layout'>,</span>	<span class='str'>"application/x-perl"</span><span class='layout'>)</span>
+<a name="line-361"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"png"</span><span class='layout'>,</span>	<span class='str'>"image/png"</span><span class='layout'>)</span>
+<a name="line-362"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pnm"</span><span class='layout'>,</span>	<span class='str'>"image/x-portable-anymap"</span><span class='layout'>)</span>
+<a name="line-363"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"po"</span><span class='layout'>,</span>	<span class='str'>"text/x-gettext-translation"</span><span class='layout'>)</span>
+<a name="line-364"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pot"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-powerpoint"</span><span class='layout'>)</span>
+<a name="line-365"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pot"</span><span class='layout'>,</span>	<span class='str'>"text/x-gettext-translation-template"</span><span class='layout'>)</span>
+<a name="line-366"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ppm"</span><span class='layout'>,</span>	<span class='str'>"image/x-portable-pixmap"</span><span class='layout'>)</span>
+<a name="line-367"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pps"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-powerpoint"</span><span class='layout'>)</span>
+<a name="line-368"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ppt"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-powerpoint"</span><span class='layout'>)</span>
+<a name="line-369"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ppz"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-powerpoint"</span><span class='layout'>)</span>
+<a name="line-370"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"prc"</span><span class='layout'>,</span>	<span class='str'>"application/x-palm-database"</span><span class='layout'>)</span>
+<a name="line-371"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"prj"</span><span class='layout'>,</span>	<span class='str'>"application/x-anjuta-project"</span><span class='layout'>)</span>
+<a name="line-372"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"prjx"</span><span class='layout'>,</span>	<span class='str'>"application/x-prjx"</span><span class='layout'>)</span>
+<a name="line-373"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ps"</span><span class='layout'>,</span>	<span class='str'>"application/postscript"</span><span class='layout'>)</span>
+<a name="line-374"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ps.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-gzpostscript"</span><span class='layout'>)</span>
+<a name="line-375"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"psd"</span><span class='layout'>,</span>	<span class='str'>"image/x-psd"</span><span class='layout'>)</span>
+<a name="line-376"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"psf"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-linux-psf"</span><span class='layout'>)</span>
+<a name="line-377"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"psid"</span><span class='layout'>,</span>	<span class='str'>"audio/prs.sid"</span><span class='layout'>)</span>
+<a name="line-378"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pto"</span><span class='layout'>,</span>	<span class='str'>"application/x-ptoptimizer-script"</span><span class='layout'>)</span>
+<a name="line-379"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pw"</span><span class='layout'>,</span>	<span class='str'>"application/x-pw"</span><span class='layout'>)</span>
+<a name="line-380"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"py"</span><span class='layout'>,</span>	<span class='str'>"text/x-python"</span><span class='layout'>)</span>
+<a name="line-381"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pyc"</span><span class='layout'>,</span>	<span class='str'>"application/x-python-bytecode"</span><span class='layout'>)</span>
+<a name="line-382"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"pyo"</span><span class='layout'>,</span>	<span class='str'>"application/x-python-bytecode"</span><span class='layout'>)</span>
+<a name="line-383"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"qif"</span><span class='layout'>,</span>	<span class='str'>"application/x-qw"</span><span class='layout'>)</span>
+<a name="line-384"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"qt"</span><span class='layout'>,</span>	<span class='str'>"video/quicktime"</span><span class='layout'>)</span>
+<a name="line-385"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"qtvr"</span><span class='layout'>,</span>	<span class='str'>"video/quicktime"</span><span class='layout'>)</span>
+<a name="line-386"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ra"</span><span class='layout'>,</span>	<span class='str'>"audio/vnd.rn-realaudio"</span><span class='layout'>)</span>
+<a name="line-387"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ra"</span><span class='layout'>,</span>	<span class='str'>"audio/x-pn-realaudio"</span><span class='layout'>)</span>
+<a name="line-388"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"raf"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-389"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ram"</span><span class='layout'>,</span>	<span class='str'>"audio/x-pn-realaudio"</span><span class='layout'>)</span>
+<a name="line-390"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ram"</span><span class='layout'>,</span>	<span class='str'>"audio/x-pn-realaudio"</span><span class='layout'>)</span>
+<a name="line-391"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rar"</span><span class='layout'>,</span>	<span class='str'>"application/x-rar"</span><span class='layout'>)</span>
+<a name="line-392"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rar"</span><span class='layout'>,</span>	<span class='str'>"application/x-rar-compressed"</span><span class='layout'>)</span>
+<a name="line-393"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ras"</span><span class='layout'>,</span>	<span class='str'>"image/x-cmu-raster"</span><span class='layout'>)</span>
+<a name="line-394"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rdc"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-395"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rdf"</span><span class='layout'>,</span>	<span class='str'>"text/rdf"</span><span class='layout'>)</span>
+<a name="line-396"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rdp"</span><span class='layout'>,</span>	<span class='str'>"application/x-rdp"</span><span class='layout'>)</span>
+<a name="line-397"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rej"</span><span class='layout'>,</span>	<span class='str'>"application/x-reject"</span><span class='layout'>)</span>
+<a name="line-398"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rem"</span><span class='layout'>,</span>	<span class='str'>"application/x-remoting"</span><span class='layout'>)</span>
+<a name="line-399"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"resources"</span><span class='layout'>,</span>	<span class='str'>"application/x-resources"</span><span class='layout'>)</span>
+<a name="line-400"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"resx"</span><span class='layout'>,</span>	<span class='str'>"application/x-resourcesx"</span><span class='layout'>)</span>
+<a name="line-401"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rgb"</span><span class='layout'>,</span>	<span class='str'>"image/x-rgb"</span><span class='layout'>)</span>
+<a name="line-402"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rle"</span><span class='layout'>,</span>	<span class='str'>"image/rle"</span><span class='layout'>)</span>
+<a name="line-403"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rm"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.rn-realmedia"</span><span class='layout'>)</span>
+<a name="line-404"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rm"</span><span class='layout'>,</span>	<span class='str'>"audio/x-pn-realaudio"</span><span class='layout'>)</span>
+<a name="line-405"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rmm"</span><span class='layout'>,</span>	<span class='str'>"audio/x-pn-realaudio"</span><span class='layout'>)</span>
+<a name="line-406"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rms"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.rn-realmedia-secure"</span><span class='layout'>)</span>
+<a name="line-407"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rmvb"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.rn-realmedia-vbr"</span><span class='layout'>)</span>
+<a name="line-408"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rng"</span><span class='layout'>,</span>	<span class='str'>"text/x-rng"</span><span class='layout'>)</span>
+<a name="line-409"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"roff"</span><span class='layout'>,</span>	<span class='str'>"application/x-troff"</span><span class='layout'>)</span>
+<a name="line-410"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rpm"</span><span class='layout'>,</span>	<span class='str'>"application/x-rpm"</span><span class='layout'>)</span>
+<a name="line-411"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rss"</span><span class='layout'>,</span>	<span class='str'>"text/rss"</span><span class='layout'>)</span>
+<a name="line-412"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rt"</span><span class='layout'>,</span>	<span class='str'>"text/vnd.rn-realtext"</span><span class='layout'>)</span>
+<a name="line-413"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rtf"</span><span class='layout'>,</span>	<span class='str'>"application/rtf"</span><span class='layout'>)</span>
+<a name="line-414"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rtx"</span><span class='layout'>,</span>	<span class='str'>"text/richtext"</span><span class='layout'>)</span>
+<a name="line-415"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"rv"</span><span class='layout'>,</span>	<span class='str'>"video/vnd.rn-realvideo"</span><span class='layout'>)</span>
+<a name="line-416"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"s3m"</span><span class='layout'>,</span>	<span class='str'>"audio/x-s3m"</span><span class='layout'>)</span>
+<a name="line-417"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sam"</span><span class='layout'>,</span>	<span class='str'>"application/x-amipro"</span><span class='layout'>)</span>
+<a name="line-418"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sc"</span><span class='layout'>,</span>	<span class='str'>"application/x-sc"</span><span class='layout'>)</span>
+<a name="line-419"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"scd"</span><span class='layout'>,</span>	<span class='str'>"application/x-scribus"</span><span class='layout'>)</span>
+<a name="line-420"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"scd.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-scribus"</span><span class='layout'>)</span>
+<a name="line-421"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"scm"</span><span class='layout'>,</span>	<span class='str'>"text/x-scheme"</span><span class='layout'>)</span>
+<a name="line-422"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sda"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.draw"</span><span class='layout'>)</span>
+<a name="line-423"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sdc"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.calc"</span><span class='layout'>)</span>
+<a name="line-424"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sdd"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.impress"</span><span class='layout'>)</span>
+<a name="line-425"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sdp"</span><span class='layout'>,</span>	<span class='str'>"application/sdp"</span><span class='layout'>)</span>
+<a name="line-426"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sdp"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.impress"</span><span class='layout'>)</span>
+<a name="line-427"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sds"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.chart"</span><span class='layout'>)</span>
+<a name="line-428"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sdw"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.writer"</span><span class='layout'>)</span>
+<a name="line-429"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sgi"</span><span class='layout'>,</span>	<span class='str'>"image/x-sgi"</span><span class='layout'>)</span>
+<a name="line-430"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sgl"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.writer"</span><span class='layout'>)</span>
+<a name="line-431"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sgm"</span><span class='layout'>,</span>	<span class='str'>"text/sgml"</span><span class='layout'>)</span>
+<a name="line-432"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sgml"</span><span class='layout'>,</span>	<span class='str'>"text/sgml"</span><span class='layout'>)</span>
+<a name="line-433"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sh"</span><span class='layout'>,</span>	<span class='str'>"application/x-shellscript"</span><span class='layout'>)</span>
+<a name="line-434"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"shar"</span><span class='layout'>,</span>	<span class='str'>"application/x-shar"</span><span class='layout'>)</span>
+<a name="line-435"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"siag"</span><span class='layout'>,</span>	<span class='str'>"application/x-siag"</span><span class='layout'>)</span>
+<a name="line-436"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sid"</span><span class='layout'>,</span>	<span class='str'>"audio/prs.sid"</span><span class='layout'>)</span>
+<a name="line-437"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sig"</span><span class='layout'>,</span>	<span class='str'>"application/pgp-signature"</span><span class='layout'>)</span>
+<a name="line-438"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sik"</span><span class='layout'>,</span>	<span class='str'>"application/x-trash"</span><span class='layout'>)</span>
+<a name="line-439"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sit"</span><span class='layout'>,</span>	<span class='str'>"application/stuffit"</span><span class='layout'>)</span>
+<a name="line-440"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sit"</span><span class='layout'>,</span>	<span class='str'>"application/x-stuffit"</span><span class='layout'>)</span>
+<a name="line-441"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"skr"</span><span class='layout'>,</span>	<span class='str'>"application/pgp-keys"</span><span class='layout'>)</span>
+<a name="line-442"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sla"</span><span class='layout'>,</span>	<span class='str'>"application/x-scribus"</span><span class='layout'>)</span>
+<a name="line-443"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sla.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-scribus"</span><span class='layout'>)</span>
+<a name="line-444"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"slk"</span><span class='layout'>,</span>	<span class='str'>"text/spreadsheet"</span><span class='layout'>)</span>
+<a name="line-445"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"smd"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.mail"</span><span class='layout'>)</span>
+<a name="line-446"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"smf"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.math"</span><span class='layout'>)</span>
+<a name="line-447"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"smi"</span><span class='layout'>,</span>	<span class='str'>"application/smil"</span><span class='layout'>)</span>
+<a name="line-448"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"smi"</span><span class='layout'>,</span>	<span class='str'>"application/x-smil"</span><span class='layout'>)</span>
+<a name="line-449"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"smil"</span><span class='layout'>,</span>	<span class='str'>"application/smil"</span><span class='layout'>)</span>
+<a name="line-450"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"smil"</span><span class='layout'>,</span>	<span class='str'>"application/x-smil"</span><span class='layout'>)</span>
+<a name="line-451"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sml"</span><span class='layout'>,</span>	<span class='str'>"application/smil"</span><span class='layout'>)</span>
+<a name="line-452"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sms"</span><span class='layout'>,</span>	<span class='str'>"application/x-sms-rom"</span><span class='layout'>)</span>
+<a name="line-453"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"snd"</span><span class='layout'>,</span>	<span class='str'>"audio/basic"</span><span class='layout'>)</span>
+<a name="line-454"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"so"</span><span class='layout'>,</span>	<span class='str'>"application/x-sharedlib"</span><span class='layout'>)</span>
+<a name="line-455"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"soap"</span><span class='layout'>,</span>	<span class='str'>"application/x-soap-remoting"</span><span class='layout'>)</span>
+<a name="line-456"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"spd"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-speedo"</span><span class='layout'>)</span>
+<a name="line-457"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sql"</span><span class='layout'>,</span>	<span class='str'>"text/x-sql"</span><span class='layout'>)</span>
+<a name="line-458"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"src"</span><span class='layout'>,</span>	<span class='str'>"application/x-wais-source"</span><span class='layout'>)</span>
+<a name="line-459"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"srf"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-460"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ssm"</span><span class='layout'>,</span>	<span class='str'>"application/x-streamingmedia"</span><span class='layout'>)</span>
+<a name="line-461"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"stc"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.calc.template"</span><span class='layout'>)</span>
+<a name="line-462"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"std"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.draw.template"</span><span class='layout'>)</span>
+<a name="line-463"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sti"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.impress.template"</span><span class='layout'>)</span>
+<a name="line-464"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"stm"</span><span class='layout'>,</span>	<span class='str'>"audio/x-stm"</span><span class='layout'>)</span>
+<a name="line-465"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"stw"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.writer.template"</span><span class='layout'>)</span>
+<a name="line-466"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sty"</span><span class='layout'>,</span>	<span class='str'>"text/x-tex"</span><span class='layout'>)</span>
+<a name="line-467"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sun"</span><span class='layout'>,</span>	<span class='str'>"image/x-sun-raster"</span><span class='layout'>)</span>
+<a name="line-468"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sv4cpio"</span><span class='layout'>,</span>	<span class='str'>"application/x-sv4cpio"</span><span class='layout'>)</span>
+<a name="line-469"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sv4crc"</span><span class='layout'>,</span>	<span class='str'>"application/x-sv4crc"</span><span class='layout'>)</span>
+<a name="line-470"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"svg"</span><span class='layout'>,</span>	<span class='str'>"image/svg+xml"</span><span class='layout'>)</span>
+<a name="line-471"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"swf"</span><span class='layout'>,</span>	<span class='str'>"application/x-shockwave-flash"</span><span class='layout'>)</span>
+<a name="line-472"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sxc"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.calc"</span><span class='layout'>)</span>
+<a name="line-473"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sxd"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.draw"</span><span class='layout'>)</span>
+<a name="line-474"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sxg"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.writer.global"</span><span class='layout'>)</span>
+<a name="line-475"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sxi"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.impress"</span><span class='layout'>)</span>
+<a name="line-476"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sxm"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.math"</span><span class='layout'>)</span>
+<a name="line-477"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sxw"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.sun.xml.writer"</span><span class='layout'>)</span>
+<a name="line-478"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"sylk"</span><span class='layout'>,</span>	<span class='str'>"text/spreadsheet"</span><span class='layout'>)</span>
+<a name="line-479"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"t"</span><span class='layout'>,</span>	<span class='str'>"application/x-troff"</span><span class='layout'>)</span>
+<a name="line-480"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar"</span><span class='layout'>,</span>	<span class='str'>"application/x-tar"</span><span class='layout'>)</span>
+<a name="line-481"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.Z"</span><span class='layout'>,</span>	<span class='str'>"application/x-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-482"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.Z"</span><span class='layout'>,</span>	<span class='str'>"application/x-tarz"</span><span class='layout'>)</span>
+<a name="line-483"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.bz"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-484"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.bz"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-485"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.bz2"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-486"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.bz2"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-487"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-488"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.gz"</span><span class='layout'>,</span>	<span class='str'>"application/x-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-489"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.lzo"</span><span class='layout'>,</span>	<span class='str'>"application/x-lzop-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-490"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tar.lzo"</span><span class='layout'>,</span>	<span class='str'>"application/x-tzo"</span><span class='layout'>)</span>
+<a name="line-491"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"taz"</span><span class='layout'>,</span>	<span class='str'>"application/x-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-492"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tbz"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-493"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tbz2"</span><span class='layout'>,</span>	<span class='str'>"application/x-bzip-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-494"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tcl"</span><span class='layout'>,</span>	<span class='str'>"text/x-tcl"</span><span class='layout'>)</span>
+<a name="line-495"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tex"</span><span class='layout'>,</span>	<span class='str'>"text/x-tex"</span><span class='layout'>)</span>
+<a name="line-496"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"texi"</span><span class='layout'>,</span>	<span class='str'>"text/x-texinfo"</span><span class='layout'>)</span>
+<a name="line-497"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"texinfo"</span><span class='layout'>,</span>	<span class='str'>"text/x-texinfo"</span><span class='layout'>)</span>
+<a name="line-498"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tga"</span><span class='layout'>,</span>	<span class='str'>"image/x-tga"</span><span class='layout'>)</span>
+<a name="line-499"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tgz"</span><span class='layout'>,</span>	<span class='str'>"application/x-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-500"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tgz"</span><span class='layout'>,</span>	<span class='str'>"application/x-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-501"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"theme"</span><span class='layout'>,</span>	<span class='str'>"application/x-theme"</span><span class='layout'>)</span>
+<a name="line-502"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tif"</span><span class='layout'>,</span>	<span class='str'>"image/tiff"</span><span class='layout'>)</span>
+<a name="line-503"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tiff"</span><span class='layout'>,</span>	<span class='str'>"image/tiff"</span><span class='layout'>)</span>
+<a name="line-504"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tk"</span><span class='layout'>,</span>	<span class='str'>"text/x-tcl"</span><span class='layout'>)</span>
+<a name="line-505"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tm"</span><span class='layout'>,</span>	<span class='str'>"text/x-texmacs"</span><span class='layout'>)</span>
+<a name="line-506"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"toc"</span><span class='layout'>,</span>	<span class='str'>"application/x-toc"</span><span class='layout'>)</span>
+<a name="line-507"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"torrent"</span><span class='layout'>,</span>	<span class='str'>"application/x-bittorrent"</span><span class='layout'>)</span>
+<a name="line-508"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tr"</span><span class='layout'>,</span>	<span class='str'>"application/x-troff"</span><span class='layout'>)</span>
+<a name="line-509"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ts"</span><span class='layout'>,</span>	<span class='str'>"application/x-linguist"</span><span class='layout'>)</span>
+<a name="line-510"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ts"</span><span class='layout'>,</span>	<span class='str'>"text/x-texmacs"</span><span class='layout'>)</span>
+<a name="line-511"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tsv"</span><span class='layout'>,</span>	<span class='str'>"text/tab-separated-values"</span><span class='layout'>)</span>
+<a name="line-512"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ttc"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-ttf"</span><span class='layout'>)</span>
+<a name="line-513"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ttf"</span><span class='layout'>,</span>	<span class='str'>"application/x-font-ttf"</span><span class='layout'>)</span>
+<a name="line-514"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"txt"</span><span class='layout'>,</span>	<span class='str'>"text/plain"</span><span class='layout'>)</span>
+<a name="line-515"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tzo"</span><span class='layout'>,</span>	<span class='str'>"application/x-lzop-compressed-tar"</span><span class='layout'>)</span>
+<a name="line-516"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"tzo"</span><span class='layout'>,</span>	<span class='str'>"application/x-tzo"</span><span class='layout'>)</span>
+<a name="line-517"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ui"</span><span class='layout'>,</span>	<span class='str'>"application/x-designer"</span><span class='layout'>)</span>
+<a name="line-518"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"uil"</span><span class='layout'>,</span>	<span class='str'>"text/x-uil"</span><span class='layout'>)</span>
+<a name="line-519"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ult"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mod"</span><span class='layout'>)</span>
+<a name="line-520"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"uni"</span><span class='layout'>,</span>	<span class='str'>"audio/x-mod"</span><span class='layout'>)</span>
+<a name="line-521"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"uri"</span><span class='layout'>,</span>	<span class='str'>"text/x-uri"</span><span class='layout'>)</span>
+<a name="line-522"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"url"</span><span class='layout'>,</span>	<span class='str'>"text/x-uri"</span><span class='layout'>)</span>
+<a name="line-523"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"ustar"</span><span class='layout'>,</span>	<span class='str'>"application/x-ustar"</span><span class='layout'>)</span>
+<a name="line-524"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"vb"</span><span class='layout'>,</span>	<span class='str'>"text/x-vb"</span><span class='layout'>)</span>
+<a name="line-525"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"vcf"</span><span class='layout'>,</span>	<span class='str'>"text/directory"</span><span class='layout'>)</span>
+<a name="line-526"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"vcs"</span><span class='layout'>,</span>	<span class='str'>"text/calendar"</span><span class='layout'>)</span>
+<a name="line-527"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"vct"</span><span class='layout'>,</span>	<span class='str'>"text/directory"</span><span class='layout'>)</span>
+<a name="line-528"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"vob"</span><span class='layout'>,</span>	<span class='str'>"video/mpeg"</span><span class='layout'>)</span>
+<a name="line-529"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"voc"</span><span class='layout'>,</span>	<span class='str'>"audio/x-voc"</span><span class='layout'>)</span>
+<a name="line-530"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"vor"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.stardivision.writer"</span><span class='layout'>)</span>
+<a name="line-531"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"war"</span><span class='layout'>,</span>	<span class='str'>"application/x-java-archive"</span><span class='layout'>)</span>
+<a name="line-532"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wav"</span><span class='layout'>,</span>	<span class='str'>"audio/x-wav"</span><span class='layout'>)</span>
+<a name="line-533"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wb1"</span><span class='layout'>,</span>	<span class='str'>"application/x-quattro-pro"</span><span class='layout'>)</span>
+<a name="line-534"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wb1"</span><span class='layout'>,</span>	<span class='str'>"application/x-quattropro"</span><span class='layout'>)</span>
+<a name="line-535"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wb2"</span><span class='layout'>,</span>	<span class='str'>"application/x-quattro-pro"</span><span class='layout'>)</span>
+<a name="line-536"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wb2"</span><span class='layout'>,</span>	<span class='str'>"application/x-quattropro"</span><span class='layout'>)</span>
+<a name="line-537"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wb3"</span><span class='layout'>,</span>	<span class='str'>"application/x-quattro-pro"</span><span class='layout'>)</span>
+<a name="line-538"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wb3"</span><span class='layout'>,</span>	<span class='str'>"application/x-quattropro"</span><span class='layout'>)</span>
+<a name="line-539"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wk1"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.lotus-1-2-3"</span><span class='layout'>)</span>
+<a name="line-540"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wk3"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.lotus-1-2-3"</span><span class='layout'>)</span>
+<a name="line-541"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wk4"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.lotus-1-2-3"</span><span class='layout'>)</span>
+<a name="line-542"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wks"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.lotus-1-2-3"</span><span class='layout'>)</span>
+<a name="line-543"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wmf"</span><span class='layout'>,</span>	<span class='str'>"image/x-wmf"</span><span class='layout'>)</span>
+<a name="line-544"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wml"</span><span class='layout'>,</span>	<span class='str'>"text/vnd.wap.wml"</span><span class='layout'>)</span>
+<a name="line-545"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wmv"</span><span class='layout'>,</span>	<span class='str'>"video/x-ms-wmv"</span><span class='layout'>)</span>
+<a name="line-546"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wpd"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.wordperfect"</span><span class='layout'>)</span>
+<a name="line-547"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wpg"</span><span class='layout'>,</span>	<span class='str'>"application/x-wpg"</span><span class='layout'>)</span>
+<a name="line-548"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wri"</span><span class='layout'>,</span>	<span class='str'>"application/x-mswrite"</span><span class='layout'>)</span>
+<a name="line-549"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wrl"</span><span class='layout'>,</span>	<span class='str'>"model/vrml"</span><span class='layout'>)</span>
+<a name="line-550"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"wsdl"</span><span class='layout'>,</span>	<span class='str'>"application/x-wsdl"</span><span class='layout'>)</span>
+<a name="line-551"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"x3f"</span><span class='layout'>,</span>	<span class='str'>"image/x-dcraw"</span><span class='layout'>)</span>
+<a name="line-552"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xac"</span><span class='layout'>,</span>	<span class='str'>"application/x-gnucash"</span><span class='layout'>)</span>
+<a name="line-553"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xbel"</span><span class='layout'>,</span>	<span class='str'>"application/x-xbel"</span><span class='layout'>)</span>
+<a name="line-554"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xbm"</span><span class='layout'>,</span>	<span class='str'>"image/x-xbitmap"</span><span class='layout'>)</span>
+<a name="line-555"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xcf"</span><span class='layout'>,</span>	<span class='str'>"image/x-xcf"</span><span class='layout'>)</span>
+<a name="line-556"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xcf.bz2"</span><span class='layout'>,</span>	<span class='str'>"image/x-compressed-xcf"</span><span class='layout'>)</span>
+<a name="line-557"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xcf.gz"</span><span class='layout'>,</span>	<span class='str'>"image/x-compressed-xcf"</span><span class='layout'>)</span>
+<a name="line-558"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xds"</span><span class='layout'>,</span>	<span class='str'>"text/x-xds"</span><span class='layout'>)</span>
+<a name="line-559"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xhtml"</span><span class='layout'>,</span>	<span class='str'>"application/xhtml+xml"</span><span class='layout'>)</span>
+<a name="line-560"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xi"</span><span class='layout'>,</span>	<span class='str'>"audio/x-xi"</span><span class='layout'>)</span>
+<a name="line-561"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xla"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-562"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xlc"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-563"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xld"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-564"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xll"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-565"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xlm"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-566"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xls"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-567"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xlt"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-568"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xlw"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.ms-excel"</span><span class='layout'>)</span>
+<a name="line-569"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xm"</span><span class='layout'>,</span>	<span class='str'>"audio/x-xm"</span><span class='layout'>)</span>
+<a name="line-570"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xmi"</span><span class='layout'>,</span>	<span class='str'>"text/x-xmi"</span><span class='layout'>)</span>
+<a name="line-571"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xml"</span><span class='layout'>,</span>	<span class='str'>"text/xml"</span><span class='layout'>)</span>
+<a name="line-572"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xpl"</span><span class='layout'>,</span>	<span class='str'>"audio/x-scpls"</span><span class='layout'>)</span>
+<a name="line-573"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xpm"</span><span class='layout'>,</span>	<span class='str'>"image/x-xpixmap"</span><span class='layout'>)</span>
+<a name="line-574"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xsl"</span><span class='layout'>,</span>	<span class='str'>"text/x-xsl"</span><span class='layout'>)</span>
+<a name="line-575"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xsl"</span><span class='layout'>,</span>	<span class='str'>"text/x-xslt"</span><span class='layout'>)</span>
+<a name="line-576"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xslfo"</span><span class='layout'>,</span>	<span class='str'>"text/x-xslfo"</span><span class='layout'>)</span>
+<a name="line-577"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xslt"</span><span class='layout'>,</span>	<span class='str'>"text/x-xslt"</span><span class='layout'>)</span>
+<a name="line-578"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xul"</span><span class='layout'>,</span>	<span class='str'>"application/vnd.mozilla.xul+xml"</span><span class='layout'>)</span>
+<a name="line-579"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"xwd"</span><span class='layout'>,</span>	<span class='str'>"image/x-xwindowdump"</span><span class='layout'>)</span>
+<a name="line-580"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"zabw"</span><span class='layout'>,</span>	<span class='str'>"application/x-abiword"</span><span class='layout'>)</span>
+<a name="line-581"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"zip"</span><span class='layout'>,</span>	<span class='str'>"application/zip"</span><span class='layout'>)</span>
+<a name="line-582"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"zoo"</span><span class='layout'>,</span>	<span class='str'>"application/x-zoo"</span><span class='layout'>)</span>
+<a name="line-583"></a>   <span class='keyglyph'>]</span>
+<a name="line-584"></a>
+</pre></body>
+</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-MimeTypes.html b/doc/hdoc/src/Text-XML-HXT-DOM-MimeTypes.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/src/Text-XML-HXT-DOM-MimeTypes.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Haskell Code by HsColour</title>
+<link type='text/css' rel='stylesheet' href='hscolour.css' />
+</head>
+<body>
+<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-2"></a>
+<a name="line-3"></a><span class='comment'>{- |
+<a name="line-4"></a>   Module     : Text.XML.HXT.DOM.MimeTypes
+<a name="line-5"></a>   Copyright  : Copyright (C) 2008 Uwe Schmidt
+<a name="line-6"></a>   License    : MIT
+<a name="line-7"></a>
+<a name="line-8"></a>   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
+<a name="line-9"></a>   Stability  : experimental
+<a name="line-10"></a>   Portability: portable
+<a name="line-11"></a>
+<a name="line-12"></a>   mime type related data and functions
+<a name="line-13"></a>
+<a name="line-14"></a>-}</span>
+<a name="line-15"></a>
+<a name="line-16"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-17"></a>
+<a name="line-18"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span>
+<a name="line-19"></a><span class='keyword'>where</span>
+<a name="line-20"></a>
+<a name="line-21"></a><span class='keyword'>import</span>           <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span> <span class='layout'>(</span><span class='varid'>mplus</span><span class='layout'>)</span>
+<a name="line-22"></a>
+<a name="line-23"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>
+<a name="line-24"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>
+<a name="line-25"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>
+<a name="line-26"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
+<a name="line-27"></a>
+<a name="line-28"></a><span class='keyword'>import</span>           <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
+<a name="line-29"></a>
+<a name="line-30"></a><span class='keyword'>import</span>           <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypeDefaults</span>
+<a name="line-31"></a>
+<a name="line-32"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-33"></a>
+<a name="line-34"></a><a name="MimeTypeTable"></a><span class='keyword'>type</span> <span class='conid'>MimeTypeTable</span>	<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>String</span>
+<a name="line-35"></a>
+<a name="line-36"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-37"></a>
+<a name="line-38"></a><span class='comment'>-- mime types</span>
+<a name="line-39"></a><span class='comment'>--</span>
+<a name="line-40"></a><span class='comment'>-- see RFC \"http:\/\/www.rfc-editor.org\/rfc\/rfc3023.txt\"</span>
+<a name="line-41"></a>
+<a name="line-42"></a><a name="application_xhtml"></a><span class='definition'>application_xhtml</span><span class='layout'>,</span>
+<a name="line-43"></a> <span class='varid'>application_xml</span><span class='layout'>,</span>
+<a name="line-44"></a> <span class='varid'>application_xml_external_parsed_entity</span><span class='layout'>,</span>
+<a name="line-45"></a> <span class='varid'>application_xml_dtd</span><span class='layout'>,</span>
+<a name="line-46"></a> <span class='varid'>text_html</span><span class='layout'>,</span>
+<a name="line-47"></a> <span class='varid'>text_xml</span><span class='layout'>,</span>
+<a name="line-48"></a> <span class='varid'>text_xml_external_parsed_entity</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-49"></a>
+<a name="line-50"></a><span class='definition'>application_xhtml</span>			<span class='keyglyph'>=</span> <span class='str'>"application/xhtml+xml"</span>
+<a name="line-51"></a><a name="application_xml"></a><span class='definition'>application_xml</span>				<span class='keyglyph'>=</span> <span class='str'>"application/xml"</span>
+<a name="line-52"></a><a name="application_xml_external_parsed_entity"></a><span class='definition'>application_xml_external_parsed_entity</span>	<span class='keyglyph'>=</span> <span class='str'>"application/xml-external-parsed-entity"</span>
+<a name="line-53"></a><a name="application_xml_dtd"></a><span class='definition'>application_xml_dtd</span>			<span class='keyglyph'>=</span> <span class='str'>"application/xml-dtd"</span>
+<a name="line-54"></a>
+<a name="line-55"></a><a name="text_html"></a><span class='definition'>text_html</span>				<span class='keyglyph'>=</span> <span class='str'>"text/html"</span>
+<a name="line-56"></a><a name="text_xml"></a><span class='definition'>text_xml</span>				<span class='keyglyph'>=</span> <span class='str'>"text/xml"</span>
+<a name="line-57"></a><a name="text_xml_external_parsed_entity"></a><span class='definition'>text_xml_external_parsed_entity</span>		<span class='keyglyph'>=</span> <span class='str'>"text/xml-external-parsed-entity"</span>
+<a name="line-58"></a>
+<a name="line-59"></a><a name="isHtmlMimeType"></a><span class='definition'>isHtmlMimeType</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
+<a name="line-60"></a><span class='definition'>isHtmlMimeType</span> <span class='varid'>t</span>
+<a name="line-61"></a>    <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>text_html</span>
+<a name="line-62"></a>
+<a name="line-63"></a><a name="isXmlMimeType"></a><span class='definition'>isXmlMimeType</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
+<a name="line-64"></a><span class='definition'>isXmlMimeType</span> <span class='varid'>t</span>
+<a name="line-65"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>t</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span> <span class='varid'>application_xhtml</span>
+<a name="line-66"></a>		 <span class='layout'>,</span> <span class='varid'>application_xml</span>
+<a name="line-67"></a>		 <span class='layout'>,</span> <span class='varid'>application_xml_external_parsed_entity</span>
+<a name="line-68"></a>		 <span class='layout'>,</span> <span class='varid'>application_xml_dtd</span>
+<a name="line-69"></a>		 <span class='layout'>,</span> <span class='varid'>text_xml</span>
+<a name="line-70"></a>		 <span class='layout'>,</span> <span class='varid'>text_xml_external_parsed_entity</span>
+<a name="line-71"></a>		 <span class='keyglyph'>]</span>
+<a name="line-72"></a>	<span class='varop'>||</span>
+<a name="line-73"></a>	<span class='str'>"+xml"</span> <span class='varop'>`isSuffixOf`</span> <span class='varid'>t</span>		<span class='comment'>-- application/mathml+xml</span>
+<a name="line-74"></a>      <span class='layout'>)</span>					<span class='comment'>-- or image/svg+xml</span>
+<a name="line-75"></a>
+<a name="line-76"></a><a name="defaultMimeTypeTable"></a><span class='definition'>defaultMimeTypeTable</span>	<span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span>
+<a name="line-77"></a><span class='definition'>defaultMimeTypeTable</span>
+<a name="line-78"></a>    <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varid'>mimeTypeDefaults</span>
+<a name="line-79"></a>
+<a name="line-80"></a><a name="extensionToMimeType"></a><span class='definition'>extensionToMimeType</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
+<a name="line-81"></a><span class='definition'>extensionToMimeType</span> <span class='varid'>e</span>
+<a name="line-82"></a>    <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookupMime</span> 
+<a name="line-83"></a>    <span class='keyword'>where</span>
+<a name="line-84"></a>    <span class='varid'>lookupMime</span> <span class='varid'>t</span>
+<a name="line-85"></a>	<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>e</span> <span class='varid'>t</span>			<span class='comment'>-- try exact match</span>
+<a name="line-86"></a>	  <span class='varop'>`mplus`</span>
+<a name="line-87"></a>	  <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>t</span>	<span class='comment'>-- else try lowercase match</span>
+<a name="line-88"></a>          <span class='varop'>`mplus`</span>
+<a name="line-89"></a>	  <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>t</span>	<span class='comment'>-- else try uppercase match</span>
+<a name="line-90"></a>
+<a name="line-91"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-92"></a>
+<a name="line-93"></a><a name="readMimeTypeTable"></a><span class='definition'>readMimeTypeTable</span>	<span class='keyglyph'>::</span> <span class='conid'>FilePath</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='conid'>MimeTypeTable</span>
+<a name="line-94"></a><span class='definition'>readMimeTypeTable</span> <span class='varid'>inp</span>
+<a name="line-95"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-96"></a>      <span class='varid'>h</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>openFile</span> <span class='varid'>inp</span> <span class='conid'>ReadMode</span>
+<a name="line-97"></a>      <span class='varid'>c</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>hGetContents</span> <span class='varid'>h</span>
+<a name="line-98"></a>      <span class='varid'>return</span> <span class='varop'>.</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varop'>.</span> <span class='varid'>parseMimeTypeTable</span> <span class='varop'>$</span> <span class='varid'>c</span>
+<a name="line-99"></a>
+<a name="line-100"></a><a name="parseMimeTypeTable"></a><span class='definition'>parseMimeTypeTable</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-101"></a><span class='definition'>parseMimeTypeTable</span>
+<a name="line-102"></a>    <span class='keyglyph'>=</span> <span class='varid'>concat</span>
+<a name="line-103"></a>      <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>buildPairs</span>
+<a name="line-104"></a>      <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>words</span>
+<a name="line-105"></a>      <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"#"</span> <span class='varop'>`isPrefixOf`</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-106"></a>      <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varid'>isSpace</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-107"></a>      <span class='varop'>.</span> <span class='varid'>lines</span>
+<a name="line-108"></a>    <span class='keyword'>where</span>
+<a name="line-109"></a>    <span class='varid'>buildPairs</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-110"></a>    <span class='varid'>buildPairs</span>	<span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-111"></a>    <span class='varid'>buildPairs</span>	<span class='layout'>(</span><span class='varid'>mt</span><span class='conop'>:</span><span class='varid'>exts</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>mt</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>exts</span>
+<a name="line-112"></a>
+<a name="line-113"></a><span class='comment'>-- ------------------------------------------------------------</span>
+</pre></body>
+</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-Namespace.html b/doc/hdoc/src/Text-XML-HXT-DOM-Namespace.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-DOM-Namespace.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- main namespace filter for propagation, checking, tracing and error handling</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- $Id: Namespace.hs,v 1.3 2005/01/06 10:48:07 hxml Exp $</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>
-<a name="line-7"></a>    <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>
-<a name="line-8"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>
-<a name="line-9"></a>    <span class='layout'>)</span>
-<a name="line-10"></a><span class='keyword'>where</span>
-<a name="line-11"></a>
-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>
-<a name="line-15"></a>
-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-17"></a>    <span class='layout'>(</span> <span class='varid'>traceTree</span>
-<a name="line-18"></a>    <span class='layout'>,</span> <span class='varid'>traceSource</span>
-<a name="line-19"></a>    <span class='layout'>,</span> <span class='varid'>traceMsg</span>
-<a name="line-20"></a>    <span class='layout'>)</span>
-<a name="line-21"></a>
-<a name="line-22"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-<a name="line-23"></a>
-<a name="line-24"></a><span class='comment'>-- |</span>
-<a name="line-25"></a><span class='comment'>-- propagate all namespace declarations, check namespace constraints and issue errors.</span>
-<a name="line-26"></a><span class='comment'>-- If no error was found, result is the unchanged input tree, else the root node \"\/\" with an empty document is returned.</span>
-<a name="line-27"></a><span class='comment'>--</span>
-<a name="line-28"></a><span class='comment'>-- see also : 'propagateNamespaces', 'validateNamespaces'</span>
-<a name="line-29"></a>
-<a name="line-30"></a><a name="propagateAndValidateNamespaces"></a><span class='definition'>propagateAndValidateNamespaces</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-31"></a><span class='definition'>propagateAndValidateNamespaces</span>
-<a name="line-32"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='str'>"propagating namespaces"</span>
-<a name="line-33"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-34"></a>      <span class='varid'>liftMf</span> <span class='varid'>propagateNamespaces</span>
-<a name="line-35"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-36"></a>      <span class='varid'>traceTree</span>
-<a name="line-37"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-38"></a>      <span class='varid'>traceSource</span>
-<a name="line-39"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-40"></a>      <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='str'>"validating namespaces"</span>
-<a name="line-41"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-42"></a>      <span class='varid'>validate</span>
-<a name="line-43"></a>    <span class='keyword'>where</span>
-<a name="line-44"></a>    <span class='varid'>validate</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-45"></a>    <span class='varid'>validate</span> <span class='varid'>t</span>
-<a name="line-46"></a>	<span class='keyglyph'>=</span> <span class='keyword'>let</span>
-<a name="line-47"></a>	  <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>validateNamespaces</span> <span class='varid'>t</span>
-<a name="line-48"></a>	  <span class='keyword'>in</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>errs</span>
-<a name="line-49"></a>	     <span class='keyword'>then</span> <span class='varid'>thisM</span> <span class='varid'>t</span>
-<a name="line-50"></a>	     <span class='keyword'>else</span> <span class='keyword'>do</span>
-<a name="line-51"></a>		  <span class='varid'>liftF</span> <span class='varid'>this</span> <span class='varop'>$$&lt;</span> <span class='varid'>errs</span>
-<a name="line-52"></a>		  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_err</span> <span class='str'>"namespace propagation"</span> <span class='varid'>t</span><span class='layout'>)</span>
-<a name="line-53"></a>	  
-<a name="line-54"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-NamespaceFilter.html b/doc/hdoc/src/Text-XML-HXT-DOM-NamespaceFilter.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-DOM-NamespaceFilter.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- Namespace filter</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- $Id: NamespaceFilter.hs,v 1.4 2006/11/12 14:53:00 hxml Exp $</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>-- Namespaces are processed with two main filter, 'propagateNamespaces'</span>
-<a name="line-7"></a><span class='comment'>-- and 'validateNamespaces'.</span>
-<a name="line-8"></a><span class='comment'>--</span>
-<a name="line-9"></a><span class='comment'>-- 'propagateNamespaces' takes a XML tree and</span>
-<a name="line-10"></a><span class='comment'>-- attaches extra namespace info at every tag name and attribute name.</span>
-<a name="line-11"></a><span class='comment'>-- So after processing a tree with 'propagateNamespaces', the access functions</span>
-<a name="line-12"></a><span class='comment'>-- "namespaceOf" and "universalNameOf" deliver the associated namespace (or \"\")</span>
-<a name="line-13"></a><span class='comment'>-- for tag names and attribute names.</span>
-<a name="line-14"></a><span class='comment'>--</span>
-<a name="line-15"></a><span class='comment'>-- 'validateNamespaces' checks whether names are wellformed related to the XML namespace definition.</span>
-<a name="line-16"></a><span class='comment'>-- whether a legal namespace is declared for all prefixes, and whether attribute names are unique</span>
-<a name="line-17"></a><span class='comment'>-- related to universal names.</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>
-<a name="line-20"></a>    <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>
-<a name="line-21"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>
-<a name="line-22"></a>    <span class='layout'>)</span>
-<a name="line-23"></a><span class='keyword'>where</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>
-<a name="line-30"></a>    <span class='layout'>(</span> <span class='varid'>doubles</span> <span class='layout'>)</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-<a name="line-33"></a><span class='comment'>--</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='comment'>-- |</span>
-<a name="line-36"></a><span class='comment'>-- Type for the namespace association list, used when propagating namespaces by</span>
-<a name="line-37"></a><span class='comment'>-- modifying the 'QName' values in a tree</span>
-<a name="line-38"></a>
-<a name="line-39"></a><a name="NamespaceTable"></a><span class='keyword'>type</span> <span class='conid'>NamespaceTable</span> <span class='keyglyph'>=</span> <span class='conid'>NsEnv</span>
-<a name="line-40"></a>
-<a name="line-41"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class='comment'>-- |</span>
-<a name="line-44"></a><span class='comment'>-- propagate all namespace declarations \"xmlns:ns=...\" to all</span>
-<a name="line-45"></a><span class='comment'>-- tag and attribute nodes of a document.</span>
-<a name="line-46"></a><span class='comment'>--</span>
-<a name="line-47"></a><span class='comment'>-- This filter does not check for illegal use of namespaces.</span>
-<a name="line-48"></a><span class='comment'>-- The real work is done by 'propagateNamespaceEnv'.</span>
-<a name="line-49"></a><span class='comment'>--</span>
-<a name="line-50"></a><span class='comment'>-- The filter may be applied repeatedly if neccessary.</span>
-<a name="line-51"></a>
-<a name="line-52"></a><a name="propagateNamespaces"></a><span class='definition'>propagateNamespaces</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-53"></a><span class='definition'>propagateNamespaces</span>	<span class='keyglyph'>=</span> <span class='varid'>propagateNamespaceEnv</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_xml</span><span class='layout'>,</span> <span class='varid'>xmlNamespace</span><span class='layout'>)</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span> <span class='keyglyph'>]</span>
-<a name="line-54"></a>
-<a name="line-55"></a><span class='comment'>-- |</span>
-<a name="line-56"></a><span class='comment'>-- attaches the namespace info given by the namespace table</span>
-<a name="line-57"></a><span class='comment'>-- to a tag node and its attributes and children.</span>
-<a name="line-58"></a>
-<a name="line-59"></a><a name="propagateNamespaceEnv"></a><span class='definition'>propagateNamespaceEnv</span>	<span class='keyglyph'>::</span> <span class='conid'>NamespaceTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-60"></a><span class='definition'>propagateNamespaceEnv</span> <span class='varid'>env</span> <span class='varid'>n</span>
-<a name="line-61"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>processAttr</span> <span class='layout'>(</span><span class='varid'>attachNamespaceUrisToAttr</span> <span class='varid'>newEnv</span><span class='layout'>)</span>
-<a name="line-62"></a>	  <span class='varop'>.&gt;</span>
-<a name="line-63"></a>	  <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>propagateNamespaceEnv</span> <span class='varid'>newEnv</span><span class='layout'>)</span>
-<a name="line-64"></a>	  <span class='varop'>.&gt;</span>
-<a name="line-65"></a>	  <span class='varid'>modifyQName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>newEnv</span><span class='layout'>)</span>
-<a name="line-66"></a>	<span class='layout'>)</span>
-<a name="line-67"></a>	<span class='varop'>`when`</span>
-<a name="line-68"></a>	<span class='varid'>isXTag</span>
-<a name="line-69"></a>      <span class='layout'>)</span>
-<a name="line-70"></a>      <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-71"></a>    <span class='keyword'>where</span>
-<a name="line-72"></a>    <span class='varid'>nsAttrs</span>	<span class='keyglyph'>=</span> <span class='varid'>getAttrl</span>				<span class='comment'>-- scan all attributes</span>
-<a name="line-73"></a>		  <span class='varop'>.&gt;</span>
-<a name="line-74"></a>		  <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span>
-<a name="line-75"></a>			     <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>		<span class='comment'>-- check for prefix or whole name is "xmlns"</span>
-<a name="line-76"></a>				 <span class='varop'>&amp;&amp;</span>
-<a name="line-77"></a>				 <span class='varid'>lp</span> <span class='varop'>/=</span> <span class='str'>":"</span>		<span class='comment'>-- check for none empty local part, "xmlns:" is not a legal name</span>
-<a name="line-78"></a>				<span class='layout'>)</span>
-<a name="line-79"></a>			     <span class='layout'>)</span>
-<a name="line-80"></a>			     <span class='varop'>.</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span>		<span class='comment'>-- break the name into a pair ("prefix", ":localPart")</span>
-<a name="line-81"></a>			     <span class='varop'>.</span> <span class='varid'>qualifiedName</span>		<span class='comment'>-- select attribute name</span>
-<a name="line-82"></a>			   <span class='layout'>)</span>
-<a name="line-83"></a>		  <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-84"></a>    <span class='varid'>nsDecl</span>	<span class='keyglyph'>=</span> <span class='varid'>zip</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span>			<span class='comment'>-- drop the ":", empty local part represents default name space</span>
-<a name="line-85"></a>			    <span class='varop'>.</span> <span class='varid'>snd</span>			<span class='comment'>-- take the local part with leading ":"</span>
-<a name="line-86"></a>			    <span class='varop'>.</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span>		<span class='comment'>-- break it like above</span>
-<a name="line-87"></a>			    <span class='varop'>.</span> <span class='varid'>nameOf</span>			<span class='comment'>-- select attribute name</span>
-<a name="line-88"></a>			   <span class='layout'>)</span> <span class='varid'>nsAttrs</span><span class='layout'>)</span>
-<a name="line-89"></a>		      <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>xshow</span>
-<a name="line-90"></a>			    <span class='varop'>.</span>
-<a name="line-91"></a>			    <span class='varid'>getChildren</span>
-<a name="line-92"></a>			   <span class='layout'>)</span> <span class='varid'>nsAttrs</span><span class='layout'>)</span>
-<a name="line-93"></a>    <span class='varid'>newEnv</span>	<span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='varid'>nsDecl</span> <span class='varid'>env</span>
-<a name="line-94"></a>
-<a name="line-95"></a>    <span class='varid'>attachNamespaceUrisToAttr</span>	<span class='keyglyph'>::</span> <span class='conid'>NamespaceTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-96"></a>    <span class='varid'>attachNamespaceUrisToAttr</span> <span class='varid'>attrEnv</span>
-<a name="line-97"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span>
-<a name="line-98"></a>			<span class='keyglyph'>-&gt;</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>drop</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varid'>lp</span>	<span class='comment'>-- prefix and local part must not be empty</span>
-<a name="line-99"></a>			     <span class='varop'>&amp;&amp;</span>
-<a name="line-100"></a>			     <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span> <span class='varid'>px</span>
-<a name="line-101"></a>			   <span class='layout'>)</span>
-<a name="line-102"></a>		       <span class='layout'>)</span>
-<a name="line-103"></a>		       <span class='varop'>.</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span>			<span class='comment'>-- break the name into a pair ("prefix", ":localPart")</span>
-<a name="line-104"></a>		       <span class='varop'>.</span> <span class='varid'>qualifiedName</span>			<span class='comment'>-- select attribute name</span>
-<a name="line-105"></a>		     <span class='layout'>)</span>
-<a name="line-106"></a>	    <span class='varop'>`guards`</span>
-<a name="line-107"></a>	    <span class='varid'>modifyQName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>attrEnv</span><span class='layout'>)</span>
-<a name="line-108"></a>	  <span class='layout'>)</span>
-<a name="line-109"></a>          <span class='varop'>`orElse`</span>
-<a name="line-110"></a>	  <span class='layout'>(</span> <span class='varid'>modifyQName</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>xmlnsQN</span><span class='layout'>)</span>			<span class='comment'>-- "xmlns" ist the only attr name without prefix but with an associated namespace URI</span>
-<a name="line-111"></a>	    <span class='varop'>`when`</span>
-<a name="line-112"></a>	    <span class='varid'>isAttr</span> <span class='varid'>a_xmlns</span>
-<a name="line-113"></a>	  <span class='layout'>)</span>
-<a name="line-114"></a>
-<a name="line-115"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-<a name="line-116"></a>
-<a name="line-117"></a><span class='comment'>-- |</span>
-<a name="line-118"></a><span class='comment'>-- validate the namespace constraints in a whole tree.</span>
-<a name="line-119"></a><span class='comment'>-- result is the list of errors concerning namespaces.</span>
-<a name="line-120"></a><span class='comment'>-- Work is done by applying 'validate1Namespaces' to all nodes.</span>
-<a name="line-121"></a><span class='comment'>-- Predicates 'isWellformedQName', 'isWellformedQualifiedName', 'isDeclaredNamespace'</span>
-<a name="line-122"></a><span class='comment'>-- and 'isWellformedNSDecl' are applied to the appropriate tags and attributes.</span>
-<a name="line-123"></a>
-<a name="line-124"></a><a name="validateNamespaces"></a><span class='definition'>validateNamespaces</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-125"></a><span class='definition'>validateNamespaces</span>
-<a name="line-126"></a>    <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span>
-<a name="line-127"></a>               <span class='conop'>:-&gt;</span> <span class='varid'>getChildren</span> <span class='varop'>.&gt;</span> <span class='varid'>validateNamespaces</span>		<span class='comment'>-- root is correct by definition</span>
-<a name="line-128"></a>	     <span class='layout'>,</span> <span class='varid'>this</span>
-<a name="line-129"></a>	       <span class='conop'>:-&gt;</span> <span class='varid'>multi</span> <span class='varid'>validate1Namespaces</span>
-<a name="line-130"></a>	     <span class='keyglyph'>]</span>
-<a name="line-131"></a>
-<a name="line-132"></a><span class='comment'>-- |</span>
-<a name="line-133"></a><span class='comment'>-- a single node for namespace constrains.</span>
-<a name="line-134"></a>
-<a name="line-135"></a><a name="validate1Namespaces"></a><span class='definition'>validate1Namespaces</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-136"></a><span class='definition'>validate1Namespaces</span>
-<a name="line-137"></a>    <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isXTag</span>
-<a name="line-138"></a>	       <span class='conop'>:-&gt;</span>
-<a name="line-139"></a>	       <span class='varid'>cat</span> <span class='keyglyph'>[</span> <span class='varid'>isOfTag</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQName</span> <span class='layout'>)</span>
-<a name="line-140"></a>		     <span class='varop'>`guards`</span>
-<a name="line-141"></a>		     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"tag name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-142"></a>
-<a name="line-143"></a>		   <span class='layout'>,</span> <span class='varid'>isOfTag</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isDeclaredNamespace</span> <span class='layout'>)</span>
-<a name="line-144"></a>		     <span class='varop'>`guards`</span>
-<a name="line-145"></a>		     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"namespace for prefix in tag name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-146"></a>
-<a name="line-147"></a>                   <span class='layout'>,</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span> <span class='keyword'>let</span>
-<a name="line-148"></a>		               <span class='varid'>dbls</span> <span class='keyglyph'>=</span> <span class='varid'>doubles</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>universalNameOf</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span><span class='layout'>)</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-149"></a>		               <span class='keyword'>in</span>
-<a name="line-150"></a>		               <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>dbls</span>
-<a name="line-151"></a>		               <span class='keyword'>then</span> <span class='varid'>none</span>
-<a name="line-152"></a>                               <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span> <span class='str'>"multiple occurences of universal names for attributes of tag "</span>
-<a name="line-153"></a>					  <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-154"></a>					  <span class='varop'>++</span> <span class='str'>" : "</span> <span class='varop'>++</span> <span class='varid'>foldr1</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>show</span> <span class='varid'>dbls</span><span class='layout'>)</span>
-<a name="line-155"></a>					<span class='layout'>)</span>
-<a name="line-156"></a>			     <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-157"></a>		     <span class='layout'>)</span>
-<a name="line-158"></a>
-<a name="line-159"></a>		   <span class='layout'>,</span> <span class='varid'>getAttrl</span> <span class='varop'>.&gt;</span> <span class='varid'>validate1Namespaces</span>
-<a name="line-160"></a>		   <span class='keyglyph'>]</span>
-<a name="line-161"></a>
-<a name="line-162"></a>	     <span class='layout'>,</span> <span class='varid'>isXAttr</span>
-<a name="line-163"></a>	       <span class='conop'>:-&gt;</span>
-<a name="line-164"></a>	       <span class='varid'>cat</span> <span class='keyglyph'>[</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQName</span> <span class='layout'>)</span>
-<a name="line-165"></a>		     <span class='varop'>`guards`</span>
-<a name="line-166"></a>		     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-167"></a>
-<a name="line-168"></a>		   <span class='layout'>,</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isDeclaredNamespace</span> <span class='layout'>)</span>
-<a name="line-169"></a>	             <span class='varop'>`guards`</span>
-<a name="line-170"></a>		     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"namespace for prefix in attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-171"></a>
-<a name="line-172"></a>                   <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>hasPrefix</span> <span class='varid'>a_xmlns</span> <span class='varop'>.&gt;</span> <span class='varid'>neg</span> <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span> <span class='layout'>)</span>
-<a name="line-173"></a>		     <span class='varop'>`guards`</span>
-<a name="line-174"></a>		     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"namespace value of namespace declaration for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" has no value"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-175"></a>
-<a name="line-176"></a>                   <span class='layout'>,</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedNSDecl</span> <span class='layout'>)</span>
-<a name="line-177"></a>		     <span class='varop'>`guards`</span>
-<a name="line-178"></a>		     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"illegal namespace declaration with reserved prefix "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>localPartOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" starting with \"xml\""</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-179"></a>	           <span class='keyglyph'>]</span>
-<a name="line-180"></a>
-<a name="line-181"></a>             <span class='layout'>,</span> <span class='varid'>isXDTD</span>
-<a name="line-182"></a>	       <span class='conop'>:-&gt;</span>
-<a name="line-183"></a>	       <span class='varid'>cat</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isDoctype</span> <span class='varop'>+++</span> <span class='varid'>isAttlist</span> <span class='varop'>+++</span> <span class='varid'>isElement</span> <span class='varop'>+++</span> <span class='varid'>isDTDName</span> <span class='layout'>)</span>
-<a name="line-184"></a>		       <span class='varop'>.&gt;</span>
-<a name="line-185"></a>		       <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='layout'>)</span>
-<a name="line-186"></a>		     <span class='layout'>)</span>
-<a name="line-187"></a>		     <span class='varop'>`guards`</span>
-<a name="line-188"></a>                     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"a DTD part contains a not wellformed qualified Name: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-189"></a>
-<a name="line-190"></a>		   <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>isAttlist</span>
-<a name="line-191"></a>		       <span class='varop'>.&gt;</span>
-<a name="line-192"></a>		       <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span> <span class='layout'>)</span>
-<a name="line-193"></a>		     <span class='layout'>)</span>
-<a name="line-194"></a>		     <span class='varop'>`guards`</span>
-<a name="line-195"></a>                     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"an ATTLIST declaration contains as attribute name a not wellformed qualified Name: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-196"></a>
-<a name="line-197"></a>                   <span class='layout'>,</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isEntity</span> <span class='varop'>+++</span> <span class='varid'>isParameterEntity</span> <span class='varop'>+++</span> <span class='varid'>isNotation</span> <span class='layout'>)</span>
-<a name="line-198"></a>		       <span class='varop'>.&gt;</span>
-<a name="line-199"></a>		       <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='layout'>)</span>
-<a name="line-200"></a>		     <span class='layout'>)</span>
-<a name="line-201"></a>                     <span class='varop'>`guards`</span>
-<a name="line-202"></a>                     <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"an entity or notation declaration contains a not wellformed NCName: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-203"></a>		   <span class='keyglyph'>]</span>
-<a name="line-204"></a>             <span class='layout'>,</span> <span class='varid'>isXPi</span>
-<a name="line-205"></a>	       <span class='conop'>:-&gt;</span>
-<a name="line-206"></a>	       <span class='layout'>(</span> <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span> <span class='varop'>.</span> <span class='varid'>nameOf</span> <span class='layout'>)</span>
-<a name="line-207"></a>	         <span class='varop'>`guards`</span>
-<a name="line-208"></a>                 <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"a PI contains a not wellformed NCName: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>
-<a name="line-209"></a>	       <span class='layout'>)</span>
-<a name="line-210"></a>	     <span class='keyglyph'>]</span>
-<a name="line-211"></a>
-<a name="line-212"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-<a name="line-213"></a>
-<a name="line-214"></a><a name="isNamespaceDecl"></a><span class='definition'>isNamespaceDecl</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-215"></a><span class='definition'>isNamespaceDecl</span>
-<a name="line-216"></a>    <span class='keyglyph'>=</span> <span class='varid'>isOfAttr</span> <span class='varid'>xmlnsName</span>
-<a name="line-217"></a>      <span class='keyword'>where</span>
-<a name="line-218"></a>      <span class='varid'>xmlnsName</span>	<span class='keyglyph'>::</span> <span class='conid'>AttrName</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-219"></a>      <span class='varid'>xmlnsName</span> <span class='varid'>a</span>
-<a name="line-220"></a>	  <span class='keyglyph'>=</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>
-<a name="line-221"></a>	    <span class='varop'>&amp;&amp;</span>
-<a name="line-222"></a>	    <span class='layout'>(</span> <span class='varid'>null</span> <span class='varid'>ln</span> <span class='varop'>||</span> <span class='varid'>head</span> <span class='varid'>ln</span> <span class='varop'>==</span> <span class='chr'>':'</span><span class='layout'>)</span>
-<a name="line-223"></a>	  <span class='keyword'>where</span>
-<a name="line-224"></a>	  <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>ln</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>splitAt</span> <span class='num'>5</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span> <span class='varop'>$</span> <span class='varid'>a</span>
-<a name="line-225"></a>
-<a name="line-226"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-XmlKeywords.html b/doc/hdoc/src/Text-XML-HXT-DOM-XmlKeywords.html
--- a/doc/hdoc/src/Text-XML-HXT-DOM-XmlKeywords.html
+++ b/doc/hdoc/src/Text-XML-HXT-DOM-XmlKeywords.html
@@ -16,388 +16,349 @@
 <a name="line-8"></a>   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
 <a name="line-9"></a>   Stability  : experimental
 <a name="line-10"></a>   Portability: portable
-<a name="line-11"></a>   Version    : $Id: XmlKeywords.hs,v 1.10 2006/11/02 09:34:09 hxml Exp $
-<a name="line-12"></a>
-<a name="line-13"></a>   Constants for XML keywords, for special attribute names
-<a name="line-14"></a>   and special attribute values
-<a name="line-15"></a>
-<a name="line-16"></a>-}</span>
-<a name="line-17"></a>
-<a name="line-18"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-19"></a>
-<a name="line-20"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
-<a name="line-21"></a><span class='keyword'>where</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>
-<a name="line-24"></a>    <span class='layout'>(</span> <span class='varid'>isSuffixOf</span>
-<a name="line-25"></a>    <span class='layout'>)</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-28"></a><span class='comment'>--</span>
-<a name="line-29"></a><span class='comment'>-- string constants for representing DTD keywords and attributes</span>
-<a name="line-30"></a>
-<a name="line-31"></a><a name="t_xml"></a><span class='definition'>t_xml</span><span class='layout'>,</span>				<span class='comment'>-- tag names</span>
-<a name="line-32"></a> <span class='varid'>t_root</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-33"></a>
-<a name="line-34"></a><a name="a_canonicalize"></a><span class='definition'>a_canonicalize</span><span class='layout'>,</span>
-<a name="line-35"></a> <span class='varid'>a_default</span><span class='layout'>,</span>			<span class='comment'>-- attribute names</span>
-<a name="line-36"></a> <span class='varid'>a_check_namespaces</span><span class='layout'>,</span>
-<a name="line-37"></a> <span class='varid'>a_contentLength</span><span class='layout'>,</span>
-<a name="line-38"></a> <span class='varid'>a_collect_errors</span><span class='layout'>,</span>
-<a name="line-39"></a> <span class='varid'>a_column</span><span class='layout'>,</span>
-<a name="line-40"></a> <span class='varid'>a_default_baseuri</span><span class='layout'>,</span>
-<a name="line-41"></a> <span class='varid'>a_do_not_canonicalize</span><span class='layout'>,</span>
-<a name="line-42"></a> <span class='varid'>a_do_not_check_namespaces</span><span class='layout'>,</span>
-<a name="line-43"></a> <span class='varid'>a_do_not_issue_errors</span><span class='layout'>,</span>
-<a name="line-44"></a> <span class='varid'>a_do_not_issue_warnings</span><span class='layout'>,</span>
-<a name="line-45"></a> <span class='varid'>a_do_not_preserve_comment</span><span class='layout'>,</span>
-<a name="line-46"></a> <span class='varid'>a_do_not_remove_whitespace</span><span class='layout'>,</span>
-<a name="line-47"></a> <span class='varid'>a_do_not_use_curl</span><span class='layout'>,</span>
-<a name="line-48"></a> <span class='varid'>a_do_not_validate</span><span class='layout'>,</span>
-<a name="line-49"></a> <span class='varid'>a_encoding</span><span class='layout'>,</span>
-<a name="line-50"></a> <span class='varid'>a_error</span><span class='layout'>,</span>
-<a name="line-51"></a> <span class='varid'>a_error_log</span><span class='layout'>,</span>
-<a name="line-52"></a> <span class='varid'>a_help</span><span class='layout'>,</span>
-<a name="line-53"></a> <span class='varid'>a_indent</span><span class='layout'>,</span>
-<a name="line-54"></a> <span class='varid'>a_issue_errors</span><span class='layout'>,</span>
-<a name="line-55"></a> <span class='varid'>a_issue_warnings</span><span class='layout'>,</span>
-<a name="line-56"></a> <span class='varid'>a_kind</span><span class='layout'>,</span>
-<a name="line-57"></a> <span class='varid'>a_line</span><span class='layout'>,</span>
-<a name="line-58"></a> <span class='varid'>a_module</span><span class='layout'>,</span>
-<a name="line-59"></a> <span class='varid'>a_modifier</span><span class='layout'>,</span>
-<a name="line-60"></a> <span class='varid'>a_name</span><span class='layout'>,</span>
-<a name="line-61"></a> <span class='varid'>a_no_xml_pi</span><span class='layout'>,</span>
-<a name="line-62"></a> <span class='varid'>a_options_curl</span><span class='layout'>,</span>
-<a name="line-63"></a> <span class='varid'>a_output_encoding</span><span class='layout'>,</span>
-<a name="line-64"></a> <span class='varid'>a_output_file</span><span class='layout'>,</span>
-<a name="line-65"></a> <span class='varid'>a_output_xml</span><span class='layout'>,</span>
-<a name="line-66"></a> <span class='varid'>a_output_html</span><span class='layout'>,</span>
-<a name="line-67"></a> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span>
-<a name="line-68"></a> <span class='varid'>a_parse_html</span><span class='layout'>,</span>
-<a name="line-69"></a> <span class='varid'>a_parse_xml</span><span class='layout'>,</span>
-<a name="line-70"></a> <span class='varid'>a_peref</span><span class='layout'>,</span>
-<a name="line-71"></a> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span>
-<a name="line-72"></a> <span class='varid'>a_propagate_errors</span><span class='layout'>,</span>
-<a name="line-73"></a> <span class='varid'>a_proxy</span><span class='layout'>,</span>
-<a name="line-74"></a> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>
-<a name="line-75"></a> <span class='varid'>a_show_haskell</span><span class='layout'>,</span>
-<a name="line-76"></a> <span class='varid'>a_show_tree</span><span class='layout'>,</span>
-<a name="line-77"></a> <span class='varid'>a_source</span><span class='layout'>,</span>
-<a name="line-78"></a> <span class='varid'>a_status</span><span class='layout'>,</span>
-<a name="line-79"></a> <span class='varid'>a_standalone</span><span class='layout'>,</span>
-<a name="line-80"></a> <span class='varid'>a_tagsoup</span><span class='layout'>,</span>
-<a name="line-81"></a> <span class='varid'>a_trace</span><span class='layout'>,</span>
-<a name="line-82"></a> <span class='varid'>a_type</span><span class='layout'>,</span>
-<a name="line-83"></a> <span class='varid'>a_use_curl</span><span class='layout'>,</span>
-<a name="line-84"></a> <span class='varid'>a_url</span><span class='layout'>,</span>
-<a name="line-85"></a> <span class='varid'>a_validate</span><span class='layout'>,</span>
-<a name="line-86"></a> <span class='varid'>a_value</span><span class='layout'>,</span>
-<a name="line-87"></a> <span class='varid'>a_verbose</span><span class='layout'>,</span>
-<a name="line-88"></a> <span class='varid'>a_version</span><span class='layout'>,</span>
-<a name="line-89"></a> <span class='varid'>a_xml</span><span class='layout'>,</span>
-<a name="line-90"></a> <span class='varid'>a_xmlns</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-91"></a>
-<a name="line-92"></a><a name="v_0"></a><span class='definition'>v_0</span><span class='layout'>,</span>				<span class='comment'>-- attribute values</span>
-<a name="line-93"></a> <span class='varid'>v_1</span><span class='layout'>,</span>
-<a name="line-94"></a> <span class='varid'>v_yes</span><span class='layout'>,</span>
-<a name="line-95"></a> <span class='varid'>v_no</span><span class='layout'>,</span>
-<a name="line-96"></a> <span class='varid'>v_any</span><span class='layout'>,</span>
-<a name="line-97"></a> <span class='varid'>v_children</span><span class='layout'>,</span>
-<a name="line-98"></a> <span class='varid'>v_choice</span><span class='layout'>,</span>
-<a name="line-99"></a> <span class='varid'>v_empty</span><span class='layout'>,</span>
-<a name="line-100"></a> <span class='varid'>v_mixed</span><span class='layout'>,</span>
-<a name="line-101"></a> <span class='varid'>v_seq</span><span class='layout'>,</span>
-<a name="line-102"></a> <span class='varid'>v_null</span><span class='layout'>,</span>
-<a name="line-103"></a> <span class='varid'>v_option</span><span class='layout'>,</span>
-<a name="line-104"></a> <span class='varid'>v_pcdata</span><span class='layout'>,</span>
-<a name="line-105"></a> <span class='varid'>v_star</span><span class='layout'>,</span>
-<a name="line-106"></a> <span class='varid'>v_plus</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-107"></a>
-<a name="line-108"></a><a name="k_any"></a><span class='definition'>k_any</span><span class='layout'>,</span>				<span class='comment'>-- DTD keywords</span>
-<a name="line-109"></a> <span class='varid'>k_cdata</span><span class='layout'>,</span>
-<a name="line-110"></a> <span class='varid'>k_empty</span><span class='layout'>,</span>
-<a name="line-111"></a> <span class='varid'>k_entity</span><span class='layout'>,</span>
-<a name="line-112"></a> <span class='varid'>k_entities</span><span class='layout'>,</span>
-<a name="line-113"></a> <span class='varid'>k_id</span><span class='layout'>,</span>
-<a name="line-114"></a> <span class='varid'>k_idref</span><span class='layout'>,</span>
-<a name="line-115"></a> <span class='varid'>k_idrefs</span><span class='layout'>,</span>
-<a name="line-116"></a> <span class='varid'>k_include</span><span class='layout'>,</span>
-<a name="line-117"></a> <span class='varid'>k_ignore</span><span class='layout'>,</span>
-<a name="line-118"></a> <span class='varid'>k_nmtoken</span><span class='layout'>,</span>
-<a name="line-119"></a> <span class='varid'>k_nmtokens</span><span class='layout'>,</span>
-<a name="line-120"></a> <span class='varid'>k_peref</span><span class='layout'>,</span>
-<a name="line-121"></a> <span class='varid'>k_public</span><span class='layout'>,</span>
-<a name="line-122"></a> <span class='varid'>k_system</span><span class='layout'>,</span>
-<a name="line-123"></a> <span class='varid'>k_enumeration</span><span class='layout'>,</span>
-<a name="line-124"></a> <span class='varid'>k_fixed</span><span class='layout'>,</span>
-<a name="line-125"></a> <span class='varid'>k_implied</span><span class='layout'>,</span>
-<a name="line-126"></a> <span class='varid'>k_ndata</span><span class='layout'>,</span>
-<a name="line-127"></a> <span class='varid'>k_notation</span><span class='layout'>,</span>
-<a name="line-128"></a> <span class='varid'>k_pcdata</span><span class='layout'>,</span>
-<a name="line-129"></a> <span class='varid'>k_required</span><span class='layout'>,</span>
-<a name="line-130"></a> <span class='varid'>k_default</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-11"></a>
+<a name="line-12"></a>   Constants for XML keywords, for special attribute names
+<a name="line-13"></a>   and special attribute values
+<a name="line-14"></a>
+<a name="line-15"></a>-}</span>
+<a name="line-16"></a>
+<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-18"></a>
+<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
+<a name="line-20"></a><span class='keyword'>where</span>
+<a name="line-21"></a>
+<a name="line-22"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-23"></a><span class='comment'>--</span>
+<a name="line-24"></a><span class='comment'>-- string constants for representing DTD keywords and attributes</span>
+<a name="line-25"></a>
+<a name="line-26"></a><a name="t_xml"></a><span class='definition'>t_xml</span><span class='layout'>,</span>				<span class='comment'>-- tag names</span>
+<a name="line-27"></a> <span class='varid'>t_root</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-28"></a>
+<a name="line-29"></a><a name="a_canonicalize"></a><span class='definition'>a_canonicalize</span><span class='layout'>,</span>
+<a name="line-30"></a> <span class='varid'>a_default</span><span class='layout'>,</span>			<span class='comment'>-- attribute names</span>
+<a name="line-31"></a> <span class='varid'>a_check_namespaces</span><span class='layout'>,</span>
+<a name="line-32"></a> <span class='varid'>a_contentLength</span><span class='layout'>,</span>
+<a name="line-33"></a> <span class='varid'>a_collect_errors</span><span class='layout'>,</span>
+<a name="line-34"></a> <span class='varid'>a_column</span><span class='layout'>,</span>
+<a name="line-35"></a> <span class='varid'>a_default_baseuri</span><span class='layout'>,</span>
+<a name="line-36"></a> <span class='varid'>a_do_not_canonicalize</span><span class='layout'>,</span>
+<a name="line-37"></a> <span class='varid'>a_do_not_check_namespaces</span><span class='layout'>,</span>
+<a name="line-38"></a> <span class='varid'>a_do_not_issue_errors</span><span class='layout'>,</span>
+<a name="line-39"></a> <span class='varid'>a_do_not_issue_warnings</span><span class='layout'>,</span>
+<a name="line-40"></a> <span class='varid'>a_do_not_preserve_comment</span><span class='layout'>,</span>
+<a name="line-41"></a> <span class='varid'>a_do_not_remove_whitespace</span><span class='layout'>,</span>
+<a name="line-42"></a> <span class='varid'>a_do_not_use_curl</span><span class='layout'>,</span>
+<a name="line-43"></a> <span class='varid'>a_do_not_validate</span><span class='layout'>,</span>
+<a name="line-44"></a> <span class='varid'>a_encoding</span><span class='layout'>,</span>
+<a name="line-45"></a> <span class='varid'>a_error</span><span class='layout'>,</span>
+<a name="line-46"></a> <span class='varid'>a_error_log</span><span class='layout'>,</span>
+<a name="line-47"></a> <span class='varid'>a_help</span><span class='layout'>,</span>
+<a name="line-48"></a> <span class='varid'>a_ignore_encoding_errors</span><span class='layout'>,</span>
+<a name="line-49"></a> <span class='varid'>a_ignore_none_xml_contents</span><span class='layout'>,</span>
+<a name="line-50"></a> <span class='varid'>a_indent</span><span class='layout'>,</span>
+<a name="line-51"></a> <span class='varid'>a_issue_errors</span><span class='layout'>,</span>
+<a name="line-52"></a> <span class='varid'>a_issue_warnings</span><span class='layout'>,</span>
+<a name="line-53"></a> <span class='varid'>a_kind</span><span class='layout'>,</span>
+<a name="line-54"></a> <span class='varid'>a_line</span><span class='layout'>,</span>
+<a name="line-55"></a> <span class='varid'>a_mime_types</span><span class='layout'>,</span>
+<a name="line-56"></a> <span class='varid'>a_module</span><span class='layout'>,</span>
+<a name="line-57"></a> <span class='varid'>a_modifier</span><span class='layout'>,</span>
+<a name="line-58"></a> <span class='varid'>a_name</span><span class='layout'>,</span>
+<a name="line-59"></a> <span class='varid'>a_no_xml_pi</span><span class='layout'>,</span>
+<a name="line-60"></a> <span class='varid'>a_options_curl</span><span class='layout'>,</span>
+<a name="line-61"></a> <span class='varid'>a_output_encoding</span><span class='layout'>,</span>
+<a name="line-62"></a> <span class='varid'>a_output_file</span><span class='layout'>,</span>
+<a name="line-63"></a> <span class='varid'>a_output_xml</span><span class='layout'>,</span>
+<a name="line-64"></a> <span class='varid'>a_output_html</span><span class='layout'>,</span>
+<a name="line-65"></a> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span>
+<a name="line-66"></a> <span class='varid'>a_parse_html</span><span class='layout'>,</span>
+<a name="line-67"></a> <span class='varid'>a_parse_xml</span><span class='layout'>,</span>
+<a name="line-68"></a> <span class='varid'>a_peref</span><span class='layout'>,</span>
+<a name="line-69"></a> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span>
+<a name="line-70"></a> <span class='varid'>a_propagate_errors</span><span class='layout'>,</span>
+<a name="line-71"></a> <span class='varid'>a_proxy</span><span class='layout'>,</span>
+<a name="line-72"></a> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>
+<a name="line-73"></a> <span class='varid'>a_show_haskell</span><span class='layout'>,</span>
+<a name="line-74"></a> <span class='varid'>a_show_tree</span><span class='layout'>,</span>
+<a name="line-75"></a> <span class='varid'>a_source</span><span class='layout'>,</span>
+<a name="line-76"></a> <span class='varid'>a_status</span><span class='layout'>,</span>
+<a name="line-77"></a> <span class='varid'>a_standalone</span><span class='layout'>,</span>
+<a name="line-78"></a> <span class='varid'>a_tagsoup</span><span class='layout'>,</span>
+<a name="line-79"></a> <span class='varid'>a_trace</span><span class='layout'>,</span>
+<a name="line-80"></a> <span class='varid'>a_type</span><span class='layout'>,</span>
+<a name="line-81"></a> <span class='varid'>a_use_curl</span><span class='layout'>,</span>
+<a name="line-82"></a> <span class='varid'>a_url</span><span class='layout'>,</span>
+<a name="line-83"></a> <span class='varid'>a_validate</span><span class='layout'>,</span>
+<a name="line-84"></a> <span class='varid'>a_value</span><span class='layout'>,</span>
+<a name="line-85"></a> <span class='varid'>a_verbose</span><span class='layout'>,</span>
+<a name="line-86"></a> <span class='varid'>a_version</span><span class='layout'>,</span>
+<a name="line-87"></a> <span class='varid'>a_xml</span><span class='layout'>,</span>
+<a name="line-88"></a> <span class='varid'>a_xmlns</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-89"></a>
+<a name="line-90"></a><a name="v_0"></a><span class='definition'>v_0</span><span class='layout'>,</span>				<span class='comment'>-- attribute values</span>
+<a name="line-91"></a> <span class='varid'>v_1</span><span class='layout'>,</span>
+<a name="line-92"></a> <span class='varid'>v_yes</span><span class='layout'>,</span>
+<a name="line-93"></a> <span class='varid'>v_no</span><span class='layout'>,</span>
+<a name="line-94"></a> <span class='varid'>v_any</span><span class='layout'>,</span>
+<a name="line-95"></a> <span class='varid'>v_children</span><span class='layout'>,</span>
+<a name="line-96"></a> <span class='varid'>v_choice</span><span class='layout'>,</span>
+<a name="line-97"></a> <span class='varid'>v_empty</span><span class='layout'>,</span>
+<a name="line-98"></a> <span class='varid'>v_mixed</span><span class='layout'>,</span>
+<a name="line-99"></a> <span class='varid'>v_seq</span><span class='layout'>,</span>
+<a name="line-100"></a> <span class='varid'>v_null</span><span class='layout'>,</span>
+<a name="line-101"></a> <span class='varid'>v_option</span><span class='layout'>,</span>
+<a name="line-102"></a> <span class='varid'>v_pcdata</span><span class='layout'>,</span>
+<a name="line-103"></a> <span class='varid'>v_star</span><span class='layout'>,</span>
+<a name="line-104"></a> <span class='varid'>v_plus</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-105"></a>
+<a name="line-106"></a><a name="k_any"></a><span class='definition'>k_any</span><span class='layout'>,</span>				<span class='comment'>-- DTD keywords</span>
+<a name="line-107"></a> <span class='varid'>k_cdata</span><span class='layout'>,</span>
+<a name="line-108"></a> <span class='varid'>k_empty</span><span class='layout'>,</span>
+<a name="line-109"></a> <span class='varid'>k_entity</span><span class='layout'>,</span>
+<a name="line-110"></a> <span class='varid'>k_entities</span><span class='layout'>,</span>
+<a name="line-111"></a> <span class='varid'>k_id</span><span class='layout'>,</span>
+<a name="line-112"></a> <span class='varid'>k_idref</span><span class='layout'>,</span>
+<a name="line-113"></a> <span class='varid'>k_idrefs</span><span class='layout'>,</span>
+<a name="line-114"></a> <span class='varid'>k_include</span><span class='layout'>,</span>
+<a name="line-115"></a> <span class='varid'>k_ignore</span><span class='layout'>,</span>
+<a name="line-116"></a> <span class='varid'>k_nmtoken</span><span class='layout'>,</span>
+<a name="line-117"></a> <span class='varid'>k_nmtokens</span><span class='layout'>,</span>
+<a name="line-118"></a> <span class='varid'>k_peref</span><span class='layout'>,</span>
+<a name="line-119"></a> <span class='varid'>k_public</span><span class='layout'>,</span>
+<a name="line-120"></a> <span class='varid'>k_system</span><span class='layout'>,</span>
+<a name="line-121"></a> <span class='varid'>k_enumeration</span><span class='layout'>,</span>
+<a name="line-122"></a> <span class='varid'>k_fixed</span><span class='layout'>,</span>
+<a name="line-123"></a> <span class='varid'>k_implied</span><span class='layout'>,</span>
+<a name="line-124"></a> <span class='varid'>k_ndata</span><span class='layout'>,</span>
+<a name="line-125"></a> <span class='varid'>k_notation</span><span class='layout'>,</span>
+<a name="line-126"></a> <span class='varid'>k_pcdata</span><span class='layout'>,</span>
+<a name="line-127"></a> <span class='varid'>k_required</span><span class='layout'>,</span>
+<a name="line-128"></a> <span class='varid'>k_default</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-129"></a>
+<a name="line-130"></a><span class='comment'>-- ------------------------------------------------------------</span>
 <a name="line-131"></a>
-<a name="line-132"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-133"></a>
-<a name="line-134"></a><span class='definition'>t_xml</span>		<span class='keyglyph'>=</span> <span class='str'>"xml"</span>
-<a name="line-135"></a><a name="t_root"></a><span class='definition'>t_root</span>		<span class='keyglyph'>=</span> <span class='str'>"/"</span>		<span class='comment'>-- name of root node tag</span>
-<a name="line-136"></a>
-<a name="line-137"></a><span class='definition'>a_canonicalize</span>			<span class='keyglyph'>=</span> <span class='str'>"canonicalize"</span>
-<a name="line-138"></a><a name="a_check_namespaces"></a><span class='definition'>a_check_namespaces</span>		<span class='keyglyph'>=</span> <span class='str'>"check-namespaces"</span>
-<a name="line-139"></a><a name="a_collect_errors"></a><span class='definition'>a_collect_errors</span>		<span class='keyglyph'>=</span> <span class='str'>"collect-errors"</span>
-<a name="line-140"></a><a name="a_column"></a><span class='definition'>a_column</span>			<span class='keyglyph'>=</span> <span class='str'>"column"</span>
-<a name="line-141"></a><a name="a_contentLength"></a><span class='definition'>a_contentLength</span>			<span class='keyglyph'>=</span> <span class='str'>"Content-Length"</span>
-<a name="line-142"></a><a name="a_default"></a><span class='definition'>a_default</span>			<span class='keyglyph'>=</span> <span class='str'>"default"</span>
-<a name="line-143"></a><a name="a_default_baseuri"></a><span class='definition'>a_default_baseuri</span>		<span class='keyglyph'>=</span> <span class='str'>"default-base-URI"</span>
-<a name="line-144"></a><a name="a_do_not_canonicalize"></a><span class='definition'>a_do_not_canonicalize</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-canonicalize"</span>
-<a name="line-145"></a><a name="a_do_not_check_namespaces"></a><span class='definition'>a_do_not_check_namespaces</span>	<span class='keyglyph'>=</span> <span class='str'>"do-not-check-namespaces"</span>
-<a name="line-146"></a><a name="a_do_not_issue_errors"></a><span class='definition'>a_do_not_issue_errors</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-issue-errors"</span>
-<a name="line-147"></a><a name="a_do_not_issue_warnings"></a><span class='definition'>a_do_not_issue_warnings</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-issue-warnings"</span>
-<a name="line-148"></a><a name="a_do_not_preserve_comment"></a><span class='definition'>a_do_not_preserve_comment</span>	<span class='keyglyph'>=</span> <span class='str'>"do-not-preserve-comment"</span>
-<a name="line-149"></a><a name="a_do_not_remove_whitespace"></a><span class='definition'>a_do_not_remove_whitespace</span>	<span class='keyglyph'>=</span> <span class='str'>"do-not-remove-whitespace"</span>
-<a name="line-150"></a><a name="a_do_not_use_curl"></a><span class='definition'>a_do_not_use_curl</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-use-curl"</span>
-<a name="line-151"></a><a name="a_do_not_validate"></a><span class='definition'>a_do_not_validate</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-validate"</span>
-<a name="line-152"></a><a name="a_encoding"></a><span class='definition'>a_encoding</span>			<span class='keyglyph'>=</span> <span class='str'>"encoding"</span>
-<a name="line-153"></a><a name="a_error"></a><span class='definition'>a_error</span>				<span class='keyglyph'>=</span> <span class='str'>"error"</span>
-<a name="line-154"></a><a name="a_error_log"></a><span class='definition'>a_error_log</span>			<span class='keyglyph'>=</span> <span class='str'>"errorLog"</span>
-<a name="line-155"></a><a name="a_help"></a><span class='definition'>a_help</span>				<span class='keyglyph'>=</span> <span class='str'>"help"</span>
+<a name="line-132"></a><span class='definition'>t_xml</span>		<span class='keyglyph'>=</span> <span class='str'>"xml"</span>
+<a name="line-133"></a><a name="t_root"></a><span class='definition'>t_root</span>		<span class='keyglyph'>=</span> <span class='str'>"/"</span>		<span class='comment'>-- name of root node tag</span>
+<a name="line-134"></a>
+<a name="line-135"></a><span class='definition'>a_canonicalize</span>			<span class='keyglyph'>=</span> <span class='str'>"canonicalize"</span>
+<a name="line-136"></a><a name="a_check_namespaces"></a><span class='definition'>a_check_namespaces</span>		<span class='keyglyph'>=</span> <span class='str'>"check-namespaces"</span>
+<a name="line-137"></a><a name="a_collect_errors"></a><span class='definition'>a_collect_errors</span>		<span class='keyglyph'>=</span> <span class='str'>"collect-errors"</span>
+<a name="line-138"></a><a name="a_column"></a><span class='definition'>a_column</span>			<span class='keyglyph'>=</span> <span class='str'>"column"</span>
+<a name="line-139"></a><a name="a_contentLength"></a><span class='definition'>a_contentLength</span>			<span class='keyglyph'>=</span> <span class='str'>"Content-Length"</span>
+<a name="line-140"></a><a name="a_default"></a><span class='definition'>a_default</span>			<span class='keyglyph'>=</span> <span class='str'>"default"</span>
+<a name="line-141"></a><a name="a_default_baseuri"></a><span class='definition'>a_default_baseuri</span>		<span class='keyglyph'>=</span> <span class='str'>"default-base-URI"</span>
+<a name="line-142"></a><a name="a_do_not_canonicalize"></a><span class='definition'>a_do_not_canonicalize</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-canonicalize"</span>
+<a name="line-143"></a><a name="a_do_not_check_namespaces"></a><span class='definition'>a_do_not_check_namespaces</span>	<span class='keyglyph'>=</span> <span class='str'>"do-not-check-namespaces"</span>
+<a name="line-144"></a><a name="a_do_not_issue_errors"></a><span class='definition'>a_do_not_issue_errors</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-issue-errors"</span>
+<a name="line-145"></a><a name="a_do_not_issue_warnings"></a><span class='definition'>a_do_not_issue_warnings</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-issue-warnings"</span>
+<a name="line-146"></a><a name="a_do_not_preserve_comment"></a><span class='definition'>a_do_not_preserve_comment</span>	<span class='keyglyph'>=</span> <span class='str'>"do-not-preserve-comment"</span>
+<a name="line-147"></a><a name="a_do_not_remove_whitespace"></a><span class='definition'>a_do_not_remove_whitespace</span>	<span class='keyglyph'>=</span> <span class='str'>"do-not-remove-whitespace"</span>
+<a name="line-148"></a><a name="a_do_not_use_curl"></a><span class='definition'>a_do_not_use_curl</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-use-curl"</span>
+<a name="line-149"></a><a name="a_do_not_validate"></a><span class='definition'>a_do_not_validate</span>		<span class='keyglyph'>=</span> <span class='str'>"do-not-validate"</span>
+<a name="line-150"></a><a name="a_encoding"></a><span class='definition'>a_encoding</span>			<span class='keyglyph'>=</span> <span class='str'>"encoding"</span>
+<a name="line-151"></a><a name="a_error"></a><span class='definition'>a_error</span>				<span class='keyglyph'>=</span> <span class='str'>"error"</span>
+<a name="line-152"></a><a name="a_error_log"></a><span class='definition'>a_error_log</span>			<span class='keyglyph'>=</span> <span class='str'>"errorLog"</span>
+<a name="line-153"></a><a name="a_help"></a><span class='definition'>a_help</span>				<span class='keyglyph'>=</span> <span class='str'>"help"</span>
+<a name="line-154"></a><a name="a_ignore_encoding_errors"></a><span class='definition'>a_ignore_encoding_errors</span>	<span class='keyglyph'>=</span> <span class='str'>"ignore-encoding-errors"</span>
+<a name="line-155"></a><a name="a_ignore_none_xml_contents"></a><span class='definition'>a_ignore_none_xml_contents</span>	<span class='keyglyph'>=</span> <span class='str'>"ignore-none-xml-contents"</span>
 <a name="line-156"></a><a name="a_indent"></a><span class='definition'>a_indent</span>			<span class='keyglyph'>=</span> <span class='str'>"indent"</span>
 <a name="line-157"></a><a name="a_issue_warnings"></a><span class='definition'>a_issue_warnings</span>		<span class='keyglyph'>=</span> <span class='str'>"issue-warnings"</span>
 <a name="line-158"></a><a name="a_issue_errors"></a><span class='definition'>a_issue_errors</span>			<span class='keyglyph'>=</span> <span class='str'>"issue-errors"</span>
 <a name="line-159"></a><a name="a_kind"></a><span class='definition'>a_kind</span>				<span class='keyglyph'>=</span> <span class='str'>"kind"</span>
 <a name="line-160"></a><a name="a_line"></a><span class='definition'>a_line</span>				<span class='keyglyph'>=</span> <span class='str'>"line"</span>
-<a name="line-161"></a><a name="a_module"></a><span class='definition'>a_module</span>			<span class='keyglyph'>=</span> <span class='str'>"module"</span>
-<a name="line-162"></a><a name="a_modifier"></a><span class='definition'>a_modifier</span>			<span class='keyglyph'>=</span> <span class='str'>"modifier"</span>
-<a name="line-163"></a><a name="a_name"></a><span class='definition'>a_name</span>				<span class='keyglyph'>=</span> <span class='str'>"name"</span>
-<a name="line-164"></a><a name="a_no_xml_pi"></a><span class='definition'>a_no_xml_pi</span>                     <span class='keyglyph'>=</span> <span class='str'>"no-xml-pi"</span>
-<a name="line-165"></a><a name="a_options_curl"></a><span class='definition'>a_options_curl</span>			<span class='keyglyph'>=</span> <span class='str'>"options-curl"</span>
-<a name="line-166"></a><a name="a_output_file"></a><span class='definition'>a_output_file</span>			<span class='keyglyph'>=</span> <span class='str'>"output-file"</span>
-<a name="line-167"></a><a name="a_output_encoding"></a><span class='definition'>a_output_encoding</span>		<span class='keyglyph'>=</span> <span class='str'>"output-encoding"</span>
-<a name="line-168"></a><a name="a_output_html"></a><span class='definition'>a_output_html</span>			<span class='keyglyph'>=</span> <span class='str'>"output-html"</span>
-<a name="line-169"></a><a name="a_output_xml"></a><span class='definition'>a_output_xml</span>			<span class='keyglyph'>=</span> <span class='str'>"output-xml"</span>
-<a name="line-170"></a><a name="a_parse_by_mimetype"></a><span class='definition'>a_parse_by_mimetype</span>		<span class='keyglyph'>=</span> <span class='str'>"parse-by-mimetype"</span>
-<a name="line-171"></a><a name="a_parse_html"></a><span class='definition'>a_parse_html</span>			<span class='keyglyph'>=</span> <span class='str'>"parse-html"</span>
-<a name="line-172"></a><a name="a_parse_xml"></a><span class='definition'>a_parse_xml</span>			<span class='keyglyph'>=</span> <span class='str'>"parse-xml"</span>
-<a name="line-173"></a><a name="a_peref"></a><span class='definition'>a_peref</span>				<span class='keyglyph'>=</span> <span class='varid'>k_peref</span>
-<a name="line-174"></a><a name="a_preserve_comment"></a><span class='definition'>a_preserve_comment</span> 		<span class='keyglyph'>=</span> <span class='str'>"preserve-comment"</span>
-<a name="line-175"></a><a name="a_propagate_errors"></a><span class='definition'>a_propagate_errors</span>		<span class='keyglyph'>=</span> <span class='str'>"propagate-errors"</span>
-<a name="line-176"></a><a name="a_proxy"></a><span class='definition'>a_proxy</span>				<span class='keyglyph'>=</span> <span class='str'>"proxy"</span>
-<a name="line-177"></a><a name="a_remove_whitespace"></a><span class='definition'>a_remove_whitespace</span> 		<span class='keyglyph'>=</span> <span class='str'>"remove-whitespace"</span>
-<a name="line-178"></a><a name="a_show_haskell"></a><span class='definition'>a_show_haskell</span>			<span class='keyglyph'>=</span> <span class='str'>"show-haskell"</span>
-<a name="line-179"></a><a name="a_show_tree"></a><span class='definition'>a_show_tree</span>			<span class='keyglyph'>=</span> <span class='str'>"show-tree"</span>
-<a name="line-180"></a><a name="a_source"></a><span class='definition'>a_source</span>			<span class='keyglyph'>=</span> <span class='str'>"source"</span>
-<a name="line-181"></a><a name="a_standalone"></a><span class='definition'>a_standalone</span>			<span class='keyglyph'>=</span> <span class='str'>"standalone"</span>
-<a name="line-182"></a><a name="a_status"></a><span class='definition'>a_status</span>			<span class='keyglyph'>=</span> <span class='str'>"status"</span>
-<a name="line-183"></a><a name="a_tagsoup"></a><span class='definition'>a_tagsoup</span>			<span class='keyglyph'>=</span> <span class='str'>"tagsoup"</span>
-<a name="line-184"></a><a name="a_trace"></a><span class='definition'>a_trace</span>				<span class='keyglyph'>=</span> <span class='str'>"trace"</span>
-<a name="line-185"></a><a name="a_type"></a><span class='definition'>a_type</span>				<span class='keyglyph'>=</span> <span class='str'>"type"</span>
-<a name="line-186"></a><a name="a_url"></a><span class='definition'>a_url</span>				<span class='keyglyph'>=</span> <span class='str'>"url"</span>
-<a name="line-187"></a><a name="a_use_curl"></a><span class='definition'>a_use_curl</span>			<span class='keyglyph'>=</span> <span class='str'>"use-curl"</span>
-<a name="line-188"></a><a name="a_validate"></a><span class='definition'>a_validate</span>			<span class='keyglyph'>=</span> <span class='str'>"validate"</span>
-<a name="line-189"></a><a name="a_value"></a><span class='definition'>a_value</span>				<span class='keyglyph'>=</span> <span class='str'>"value"</span>
-<a name="line-190"></a><a name="a_verbose"></a><span class='definition'>a_verbose</span>			<span class='keyglyph'>=</span> <span class='str'>"verbose"</span>
-<a name="line-191"></a><a name="a_version"></a><span class='definition'>a_version</span>			<span class='keyglyph'>=</span> <span class='str'>"version"</span>
-<a name="line-192"></a><a name="a_xml"></a><span class='definition'>a_xml</span>				<span class='keyglyph'>=</span> <span class='str'>"xml"</span>
-<a name="line-193"></a><a name="a_xmlns"></a><span class='definition'>a_xmlns</span>				<span class='keyglyph'>=</span> <span class='str'>"xmlns"</span>
-<a name="line-194"></a>
-<a name="line-195"></a><a name="v_yes"></a><span class='definition'>v_yes</span>		<span class='keyglyph'>=</span> <span class='str'>"yes"</span>
-<a name="line-196"></a><a name="v_no"></a><span class='definition'>v_no</span>		<span class='keyglyph'>=</span> <span class='str'>"no"</span>
-<a name="line-197"></a><a name="v_1"></a><span class='definition'>v_1</span>		<span class='keyglyph'>=</span> <span class='str'>"1"</span>
-<a name="line-198"></a><span class='definition'>v_0</span>		<span class='keyglyph'>=</span> <span class='str'>"0"</span>
-<a name="line-199"></a>
-<a name="line-200"></a><a name="v_any"></a><span class='definition'>v_any</span>		<span class='keyglyph'>=</span> <span class='varid'>k_any</span>
-<a name="line-201"></a><a name="v_children"></a><span class='definition'>v_children</span>	<span class='keyglyph'>=</span> <span class='str'>"children"</span>
-<a name="line-202"></a><a name="v_choice"></a><span class='definition'>v_choice</span>	<span class='keyglyph'>=</span> <span class='str'>"choice"</span>
-<a name="line-203"></a><a name="v_empty"></a><span class='definition'>v_empty</span>		<span class='keyglyph'>=</span> <span class='varid'>k_empty</span>
-<a name="line-204"></a><a name="v_pcdata"></a><span class='definition'>v_pcdata</span>	<span class='keyglyph'>=</span> <span class='varid'>k_pcdata</span>
-<a name="line-205"></a><a name="v_mixed"></a><span class='definition'>v_mixed</span>		<span class='keyglyph'>=</span> <span class='str'>"mixed"</span>
-<a name="line-206"></a><a name="v_seq"></a><span class='definition'>v_seq</span>		<span class='keyglyph'>=</span> <span class='str'>"seq"</span>
-<a name="line-207"></a>
-<a name="line-208"></a><a name="v_null"></a><span class='definition'>v_null</span>		<span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-209"></a><a name="v_option"></a><span class='definition'>v_option</span>	<span class='keyglyph'>=</span> <span class='str'>"?"</span>
-<a name="line-210"></a><a name="v_star"></a><span class='definition'>v_star</span>		<span class='keyglyph'>=</span> <span class='str'>"*"</span>
-<a name="line-211"></a><a name="v_plus"></a><span class='definition'>v_plus</span>		<span class='keyglyph'>=</span> <span class='str'>"+"</span>
-<a name="line-212"></a>
-<a name="line-213"></a><span class='definition'>k_any</span>		<span class='keyglyph'>=</span> <span class='str'>"ANY"</span>
-<a name="line-214"></a><a name="k_cdata"></a><span class='definition'>k_cdata</span>		<span class='keyglyph'>=</span> <span class='str'>"CDATA"</span>
-<a name="line-215"></a><a name="k_empty"></a><span class='definition'>k_empty</span>		<span class='keyglyph'>=</span> <span class='str'>"EMPTY"</span>
-<a name="line-216"></a><a name="k_entity"></a><span class='definition'>k_entity</span>	<span class='keyglyph'>=</span> <span class='str'>"ENTITY"</span>
-<a name="line-217"></a><a name="k_entities"></a><span class='definition'>k_entities</span>	<span class='keyglyph'>=</span> <span class='str'>"ENTITIES"</span>
-<a name="line-218"></a><a name="k_id"></a><span class='definition'>k_id</span>		<span class='keyglyph'>=</span> <span class='str'>"ID"</span>
-<a name="line-219"></a><a name="k_idref"></a><span class='definition'>k_idref</span>		<span class='keyglyph'>=</span> <span class='str'>"IDREF"</span>
-<a name="line-220"></a><a name="k_idrefs"></a><span class='definition'>k_idrefs</span>	<span class='keyglyph'>=</span> <span class='str'>"IDREFS"</span>
-<a name="line-221"></a><a name="k_include"></a><span class='definition'>k_include</span>	<span class='keyglyph'>=</span> <span class='str'>"INCLUDE"</span>
-<a name="line-222"></a><a name="k_ignore"></a><span class='definition'>k_ignore</span>	<span class='keyglyph'>=</span> <span class='str'>"IGNORE"</span>
-<a name="line-223"></a><a name="k_nmtoken"></a><span class='definition'>k_nmtoken</span>	<span class='keyglyph'>=</span> <span class='str'>"NMTOKEN"</span>
-<a name="line-224"></a><a name="k_nmtokens"></a><span class='definition'>k_nmtokens</span>	<span class='keyglyph'>=</span> <span class='str'>"NMTOKENS"</span>
-<a name="line-225"></a><a name="k_peref"></a><span class='definition'>k_peref</span>		<span class='keyglyph'>=</span> <span class='str'>"PERef"</span>
-<a name="line-226"></a><a name="k_public"></a><span class='definition'>k_public</span>	<span class='keyglyph'>=</span> <span class='str'>"PUBLIC"</span>
-<a name="line-227"></a><a name="k_system"></a><span class='definition'>k_system</span>	<span class='keyglyph'>=</span> <span class='str'>"SYSTEM"</span>
-<a name="line-228"></a>
-<a name="line-229"></a><a name="k_enumeration"></a><span class='definition'>k_enumeration</span>	<span class='keyglyph'>=</span> <span class='str'>"#ENUMERATION"</span>
-<a name="line-230"></a><a name="k_fixed"></a><span class='definition'>k_fixed</span>		<span class='keyglyph'>=</span> <span class='str'>"#FIXED"</span>
-<a name="line-231"></a><a name="k_implied"></a><span class='definition'>k_implied</span>	<span class='keyglyph'>=</span> <span class='str'>"#IMPLIED"</span>
-<a name="line-232"></a><a name="k_ndata"></a><span class='definition'>k_ndata</span>		<span class='keyglyph'>=</span> <span class='str'>"NDATA"</span>
-<a name="line-233"></a><a name="k_notation"></a><span class='definition'>k_notation</span>	<span class='keyglyph'>=</span> <span class='str'>"NOTATION"</span>
-<a name="line-234"></a><a name="k_pcdata"></a><span class='definition'>k_pcdata</span>	<span class='keyglyph'>=</span> <span class='str'>"#PCDATA"</span>
-<a name="line-235"></a><a name="k_required"></a><span class='definition'>k_required</span>	<span class='keyglyph'>=</span> <span class='str'>"#REQUIRED"</span>
-<a name="line-236"></a><a name="k_default"></a><span class='definition'>k_default</span>	<span class='keyglyph'>=</span> <span class='str'>"#DEFAULT"</span>
-<a name="line-237"></a>
+<a name="line-161"></a><a name="a_mime_types"></a><span class='definition'>a_mime_types</span>			<span class='keyglyph'>=</span> <span class='str'>"mimetypes"</span>
+<a name="line-162"></a><a name="a_module"></a><span class='definition'>a_module</span>			<span class='keyglyph'>=</span> <span class='str'>"module"</span>
+<a name="line-163"></a><a name="a_modifier"></a><span class='definition'>a_modifier</span>			<span class='keyglyph'>=</span> <span class='str'>"modifier"</span>
+<a name="line-164"></a><a name="a_name"></a><span class='definition'>a_name</span>				<span class='keyglyph'>=</span> <span class='str'>"name"</span>
+<a name="line-165"></a><a name="a_no_xml_pi"></a><span class='definition'>a_no_xml_pi</span>                     <span class='keyglyph'>=</span> <span class='str'>"no-xml-pi"</span>
+<a name="line-166"></a><a name="a_options_curl"></a><span class='definition'>a_options_curl</span>			<span class='keyglyph'>=</span> <span class='str'>"options-curl"</span>
+<a name="line-167"></a><a name="a_output_file"></a><span class='definition'>a_output_file</span>			<span class='keyglyph'>=</span> <span class='str'>"output-file"</span>
+<a name="line-168"></a><a name="a_output_encoding"></a><span class='definition'>a_output_encoding</span>		<span class='keyglyph'>=</span> <span class='str'>"output-encoding"</span>
+<a name="line-169"></a><a name="a_output_html"></a><span class='definition'>a_output_html</span>			<span class='keyglyph'>=</span> <span class='str'>"output-html"</span>
+<a name="line-170"></a><a name="a_output_xml"></a><span class='definition'>a_output_xml</span>			<span class='keyglyph'>=</span> <span class='str'>"output-xml"</span>
+<a name="line-171"></a><a name="a_parse_by_mimetype"></a><span class='definition'>a_parse_by_mimetype</span>		<span class='keyglyph'>=</span> <span class='str'>"parse-by-mimetype"</span>
+<a name="line-172"></a><a name="a_parse_html"></a><span class='definition'>a_parse_html</span>			<span class='keyglyph'>=</span> <span class='str'>"parse-html"</span>
+<a name="line-173"></a><a name="a_parse_xml"></a><span class='definition'>a_parse_xml</span>			<span class='keyglyph'>=</span> <span class='str'>"parse-xml"</span>
+<a name="line-174"></a><a name="a_peref"></a><span class='definition'>a_peref</span>				<span class='keyglyph'>=</span> <span class='varid'>k_peref</span>
+<a name="line-175"></a><a name="a_preserve_comment"></a><span class='definition'>a_preserve_comment</span> 		<span class='keyglyph'>=</span> <span class='str'>"preserve-comment"</span>
+<a name="line-176"></a><a name="a_propagate_errors"></a><span class='definition'>a_propagate_errors</span>		<span class='keyglyph'>=</span> <span class='str'>"propagate-errors"</span>
+<a name="line-177"></a><a name="a_proxy"></a><span class='definition'>a_proxy</span>				<span class='keyglyph'>=</span> <span class='str'>"proxy"</span>
+<a name="line-178"></a><a name="a_remove_whitespace"></a><span class='definition'>a_remove_whitespace</span> 		<span class='keyglyph'>=</span> <span class='str'>"remove-whitespace"</span>
+<a name="line-179"></a><a name="a_show_haskell"></a><span class='definition'>a_show_haskell</span>			<span class='keyglyph'>=</span> <span class='str'>"show-haskell"</span>
+<a name="line-180"></a><a name="a_show_tree"></a><span class='definition'>a_show_tree</span>			<span class='keyglyph'>=</span> <span class='str'>"show-tree"</span>
+<a name="line-181"></a><a name="a_source"></a><span class='definition'>a_source</span>			<span class='keyglyph'>=</span> <span class='str'>"source"</span>
+<a name="line-182"></a><a name="a_standalone"></a><span class='definition'>a_standalone</span>			<span class='keyglyph'>=</span> <span class='str'>"standalone"</span>
+<a name="line-183"></a><a name="a_status"></a><span class='definition'>a_status</span>			<span class='keyglyph'>=</span> <span class='str'>"status"</span>
+<a name="line-184"></a><a name="a_tagsoup"></a><span class='definition'>a_tagsoup</span>			<span class='keyglyph'>=</span> <span class='str'>"tagsoup"</span>
+<a name="line-185"></a><a name="a_trace"></a><span class='definition'>a_trace</span>				<span class='keyglyph'>=</span> <span class='str'>"trace"</span>
+<a name="line-186"></a><a name="a_type"></a><span class='definition'>a_type</span>				<span class='keyglyph'>=</span> <span class='str'>"type"</span>
+<a name="line-187"></a><a name="a_url"></a><span class='definition'>a_url</span>				<span class='keyglyph'>=</span> <span class='str'>"url"</span>
+<a name="line-188"></a><a name="a_use_curl"></a><span class='definition'>a_use_curl</span>			<span class='keyglyph'>=</span> <span class='str'>"use-curl"</span>
+<a name="line-189"></a><a name="a_validate"></a><span class='definition'>a_validate</span>			<span class='keyglyph'>=</span> <span class='str'>"validate"</span>
+<a name="line-190"></a><a name="a_value"></a><span class='definition'>a_value</span>				<span class='keyglyph'>=</span> <span class='str'>"value"</span>
+<a name="line-191"></a><a name="a_verbose"></a><span class='definition'>a_verbose</span>			<span class='keyglyph'>=</span> <span class='str'>"verbose"</span>
+<a name="line-192"></a><a name="a_version"></a><span class='definition'>a_version</span>			<span class='keyglyph'>=</span> <span class='str'>"version"</span>
+<a name="line-193"></a><a name="a_xml"></a><span class='definition'>a_xml</span>				<span class='keyglyph'>=</span> <span class='str'>"xml"</span>
+<a name="line-194"></a><a name="a_xmlns"></a><span class='definition'>a_xmlns</span>				<span class='keyglyph'>=</span> <span class='str'>"xmlns"</span>
+<a name="line-195"></a>
+<a name="line-196"></a><a name="v_yes"></a><span class='definition'>v_yes</span>		<span class='keyglyph'>=</span> <span class='str'>"yes"</span>
+<a name="line-197"></a><a name="v_no"></a><span class='definition'>v_no</span>		<span class='keyglyph'>=</span> <span class='str'>"no"</span>
+<a name="line-198"></a><a name="v_1"></a><span class='definition'>v_1</span>		<span class='keyglyph'>=</span> <span class='str'>"1"</span>
+<a name="line-199"></a><span class='definition'>v_0</span>		<span class='keyglyph'>=</span> <span class='str'>"0"</span>
+<a name="line-200"></a>
+<a name="line-201"></a><a name="v_any"></a><span class='definition'>v_any</span>		<span class='keyglyph'>=</span> <span class='varid'>k_any</span>
+<a name="line-202"></a><a name="v_children"></a><span class='definition'>v_children</span>	<span class='keyglyph'>=</span> <span class='str'>"children"</span>
+<a name="line-203"></a><a name="v_choice"></a><span class='definition'>v_choice</span>	<span class='keyglyph'>=</span> <span class='str'>"choice"</span>
+<a name="line-204"></a><a name="v_empty"></a><span class='definition'>v_empty</span>		<span class='keyglyph'>=</span> <span class='varid'>k_empty</span>
+<a name="line-205"></a><a name="v_pcdata"></a><span class='definition'>v_pcdata</span>	<span class='keyglyph'>=</span> <span class='varid'>k_pcdata</span>
+<a name="line-206"></a><a name="v_mixed"></a><span class='definition'>v_mixed</span>		<span class='keyglyph'>=</span> <span class='str'>"mixed"</span>
+<a name="line-207"></a><a name="v_seq"></a><span class='definition'>v_seq</span>		<span class='keyglyph'>=</span> <span class='str'>"seq"</span>
+<a name="line-208"></a>
+<a name="line-209"></a><a name="v_null"></a><span class='definition'>v_null</span>		<span class='keyglyph'>=</span> <span class='str'>""</span>
+<a name="line-210"></a><a name="v_option"></a><span class='definition'>v_option</span>	<span class='keyglyph'>=</span> <span class='str'>"?"</span>
+<a name="line-211"></a><a name="v_star"></a><span class='definition'>v_star</span>		<span class='keyglyph'>=</span> <span class='str'>"*"</span>
+<a name="line-212"></a><a name="v_plus"></a><span class='definition'>v_plus</span>		<span class='keyglyph'>=</span> <span class='str'>"+"</span>
+<a name="line-213"></a>
+<a name="line-214"></a><span class='definition'>k_any</span>		<span class='keyglyph'>=</span> <span class='str'>"ANY"</span>
+<a name="line-215"></a><a name="k_cdata"></a><span class='definition'>k_cdata</span>		<span class='keyglyph'>=</span> <span class='str'>"CDATA"</span>
+<a name="line-216"></a><a name="k_empty"></a><span class='definition'>k_empty</span>		<span class='keyglyph'>=</span> <span class='str'>"EMPTY"</span>
+<a name="line-217"></a><a name="k_entity"></a><span class='definition'>k_entity</span>	<span class='keyglyph'>=</span> <span class='str'>"ENTITY"</span>
+<a name="line-218"></a><a name="k_entities"></a><span class='definition'>k_entities</span>	<span class='keyglyph'>=</span> <span class='str'>"ENTITIES"</span>
+<a name="line-219"></a><a name="k_id"></a><span class='definition'>k_id</span>		<span class='keyglyph'>=</span> <span class='str'>"ID"</span>
+<a name="line-220"></a><a name="k_idref"></a><span class='definition'>k_idref</span>		<span class='keyglyph'>=</span> <span class='str'>"IDREF"</span>
+<a name="line-221"></a><a name="k_idrefs"></a><span class='definition'>k_idrefs</span>	<span class='keyglyph'>=</span> <span class='str'>"IDREFS"</span>
+<a name="line-222"></a><a name="k_include"></a><span class='definition'>k_include</span>	<span class='keyglyph'>=</span> <span class='str'>"INCLUDE"</span>
+<a name="line-223"></a><a name="k_ignore"></a><span class='definition'>k_ignore</span>	<span class='keyglyph'>=</span> <span class='str'>"IGNORE"</span>
+<a name="line-224"></a><a name="k_nmtoken"></a><span class='definition'>k_nmtoken</span>	<span class='keyglyph'>=</span> <span class='str'>"NMTOKEN"</span>
+<a name="line-225"></a><a name="k_nmtokens"></a><span class='definition'>k_nmtokens</span>	<span class='keyglyph'>=</span> <span class='str'>"NMTOKENS"</span>
+<a name="line-226"></a><a name="k_peref"></a><span class='definition'>k_peref</span>		<span class='keyglyph'>=</span> <span class='str'>"PERef"</span>
+<a name="line-227"></a><a name="k_public"></a><span class='definition'>k_public</span>	<span class='keyglyph'>=</span> <span class='str'>"PUBLIC"</span>
+<a name="line-228"></a><a name="k_system"></a><span class='definition'>k_system</span>	<span class='keyglyph'>=</span> <span class='str'>"SYSTEM"</span>
+<a name="line-229"></a>
+<a name="line-230"></a><a name="k_enumeration"></a><span class='definition'>k_enumeration</span>	<span class='keyglyph'>=</span> <span class='str'>"#ENUMERATION"</span>
+<a name="line-231"></a><a name="k_fixed"></a><span class='definition'>k_fixed</span>		<span class='keyglyph'>=</span> <span class='str'>"#FIXED"</span>
+<a name="line-232"></a><a name="k_implied"></a><span class='definition'>k_implied</span>	<span class='keyglyph'>=</span> <span class='str'>"#IMPLIED"</span>
+<a name="line-233"></a><a name="k_ndata"></a><span class='definition'>k_ndata</span>		<span class='keyglyph'>=</span> <span class='str'>"NDATA"</span>
+<a name="line-234"></a><a name="k_notation"></a><span class='definition'>k_notation</span>	<span class='keyglyph'>=</span> <span class='str'>"NOTATION"</span>
+<a name="line-235"></a><a name="k_pcdata"></a><span class='definition'>k_pcdata</span>	<span class='keyglyph'>=</span> <span class='str'>"#PCDATA"</span>
+<a name="line-236"></a><a name="k_required"></a><span class='definition'>k_required</span>	<span class='keyglyph'>=</span> <span class='str'>"#REQUIRED"</span>
+<a name="line-237"></a><a name="k_default"></a><span class='definition'>k_default</span>	<span class='keyglyph'>=</span> <span class='str'>"#DEFAULT"</span>
 <a name="line-238"></a>
-<a name="line-239"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-240"></a><span class='comment'>--</span>
-<a name="line-241"></a>
-<a name="line-242"></a><span class='comment'>-- attribute names for transfer protocol attributes</span>
-<a name="line-243"></a><span class='comment'>-- used in XmlInput for describing header information</span>
-<a name="line-244"></a><span class='comment'>-- of http and other requests</span>
-<a name="line-245"></a>
-<a name="line-246"></a><a name="transferPrefix"></a><span class='definition'>transferPrefix</span>
-<a name="line-247"></a> <span class='layout'>,</span> <span class='varid'>transferProtocol</span>
-<a name="line-248"></a> <span class='layout'>,</span> <span class='varid'>transferMimeType</span>
-<a name="line-249"></a> <span class='layout'>,</span> <span class='varid'>transferEncoding</span>
-<a name="line-250"></a> <span class='layout'>,</span> <span class='varid'>transferURI</span>
-<a name="line-251"></a> <span class='layout'>,</span> <span class='varid'>transferDefaultURI</span>
-<a name="line-252"></a> <span class='layout'>,</span> <span class='varid'>transferStatus</span>
-<a name="line-253"></a> <span class='layout'>,</span> <span class='varid'>transferMessage</span>
-<a name="line-254"></a> <span class='layout'>,</span> <span class='varid'>transferVersion</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-255"></a>
-<a name="line-256"></a><span class='definition'>transferPrefix</span>		<span class='keyglyph'>=</span> <span class='str'>"transfer-"</span>
-<a name="line-257"></a>
-<a name="line-258"></a><a name="transferProtocol"></a><span class='definition'>transferProtocol</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Protocol"</span>
-<a name="line-259"></a><a name="transferVersion"></a><span class='definition'>transferVersion</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Version"</span>
-<a name="line-260"></a><a name="transferMimeType"></a><span class='definition'>transferMimeType</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"MimeType"</span>
-<a name="line-261"></a><a name="transferEncoding"></a><span class='definition'>transferEncoding</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Encoding"</span>
-<a name="line-262"></a><a name="transferDefaultURI"></a><span class='definition'>transferDefaultURI</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"DefaultURI"</span>
-<a name="line-263"></a><a name="transferStatus"></a><span class='definition'>transferStatus</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Status"</span>
-<a name="line-264"></a><a name="transferMessage"></a><span class='definition'>transferMessage</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Message"</span>
-<a name="line-265"></a><a name="transferURI"></a><span class='definition'>transferURI</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"URI"</span>
-<a name="line-266"></a>
-<a name="line-267"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-268"></a><span class='comment'>--</span>
-<a name="line-269"></a>
-<a name="line-270"></a><a name="httpPrefix"></a><span class='definition'>httpPrefix</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-271"></a><span class='definition'>httpPrefix</span>	<span class='keyglyph'>=</span> <span class='str'>"http-"</span>
-<a name="line-272"></a>
-<a name="line-273"></a><a name="stringProtocol"></a><span class='definition'>stringProtocol</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-274"></a><span class='definition'>stringProtocol</span>	<span class='keyglyph'>=</span> <span class='str'>"string:"</span>
-<a name="line-275"></a>
-<a name="line-276"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-277"></a><span class='comment'>--</span>
-<a name="line-278"></a><span class='comment'>-- encoding names</span>
-<a name="line-279"></a>
-<a name="line-280"></a><a name="isoLatin1"></a><span class='definition'>isoLatin1</span>
-<a name="line-281"></a>  <span class='layout'>,</span> <span class='varid'>iso8859_1</span><span class='layout'>,</span> <span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>iso8859_5</span>
-<a name="line-282"></a>  <span class='layout'>,</span> <span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>iso8859_10</span>
-<a name="line-283"></a>  <span class='layout'>,</span> <span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>iso8859_16</span>
-<a name="line-284"></a>  <span class='layout'>,</span> <span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>unicodeString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-285"></a>
-<a name="line-286"></a><span class='definition'>isoLatin1</span>	<span class='keyglyph'>=</span> <span class='varid'>iso8859_1</span>
-<a name="line-287"></a><a name="iso8859_1"></a><span class='definition'>iso8859_1</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-1"</span>
-<a name="line-288"></a><a name="iso8859_2"></a><span class='definition'>iso8859_2</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-2"</span>
-<a name="line-289"></a><a name="iso8859_3"></a><span class='definition'>iso8859_3</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-3"</span>
-<a name="line-290"></a><a name="iso8859_4"></a><span class='definition'>iso8859_4</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-4"</span>
-<a name="line-291"></a><a name="iso8859_5"></a><span class='definition'>iso8859_5</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-5"</span>
-<a name="line-292"></a><a name="iso8859_6"></a><span class='definition'>iso8859_6</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-6"</span>
-<a name="line-293"></a><a name="iso8859_7"></a><span class='definition'>iso8859_7</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-7"</span>
-<a name="line-294"></a><a name="iso8859_8"></a><span class='definition'>iso8859_8</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-8"</span>
-<a name="line-295"></a><a name="iso8859_9"></a><span class='definition'>iso8859_9</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-9"</span>
-<a name="line-296"></a><a name="iso8859_10"></a><span class='definition'>iso8859_10</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-10"</span>
-<a name="line-297"></a><a name="iso8859_11"></a><span class='definition'>iso8859_11</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-11"</span>
-<a name="line-298"></a><a name="iso8859_13"></a><span class='definition'>iso8859_13</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-13"</span>
-<a name="line-299"></a><a name="iso8859_14"></a><span class='definition'>iso8859_14</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-14"</span>
-<a name="line-300"></a><a name="iso8859_15"></a><span class='definition'>iso8859_15</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-15"</span>
-<a name="line-301"></a><a name="iso8859_16"></a><span class='definition'>iso8859_16</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-16"</span>
-<a name="line-302"></a><a name="usAscii"></a><span class='definition'>usAscii</span>		<span class='keyglyph'>=</span> <span class='str'>"US-ASCII"</span>
-<a name="line-303"></a><a name="ucs2"></a><span class='definition'>ucs2</span>		<span class='keyglyph'>=</span> <span class='str'>"ISO-10646-UCS-2"</span>
-<a name="line-304"></a><a name="utf8"></a><span class='definition'>utf8</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-8"</span>
-<a name="line-305"></a><a name="utf16"></a><span class='definition'>utf16</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-16"</span>
-<a name="line-306"></a><a name="utf16be"></a><span class='definition'>utf16be</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span>
-<a name="line-307"></a><a name="utf16le"></a><span class='definition'>utf16le</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span>
-<a name="line-308"></a><a name="unicodeString"></a><span class='definition'>unicodeString</span>	<span class='keyglyph'>=</span> <span class='str'>"UNICODE"</span>
-<a name="line-309"></a>
-<a name="line-310"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-311"></a><span class='comment'>--</span>
-<a name="line-312"></a><span class='comment'>-- known namespaces</span>
-<a name="line-313"></a>
-<a name="line-314"></a><span class='comment'>-- |</span>
-<a name="line-315"></a><span class='comment'>-- the predefined namespace uri for xml: \"http:\/\/www.w3.org\/XML\/1998\/namespace\"</span>
-<a name="line-316"></a>
-<a name="line-317"></a><a name="xmlNamespace"></a><span class='definition'>xmlNamespace</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-318"></a><span class='definition'>xmlNamespace</span>	<span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/XML/1998/namespace"</span>
-<a name="line-319"></a>
-<a name="line-320"></a><span class='comment'>-- |</span>
-<a name="line-321"></a><span class='comment'>-- the predefined namespace uri for xmlns: \"http:\/\/www.w3.org\/2000\/xmlns\/\"</span>
-<a name="line-322"></a>
-<a name="line-323"></a><a name="xmlnsNamespace"></a><span class='definition'>xmlnsNamespace</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-324"></a><span class='definition'>xmlnsNamespace</span>	<span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/2000/xmlns/"</span>
-<a name="line-325"></a>
-<a name="line-326"></a><a name="relaxNamespace"></a><span class='comment'>-- | Relax NG namespace</span>
-<a name="line-327"></a><span class='definition'>relaxNamespace</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-328"></a><span class='definition'>relaxNamespace</span>	<span class='keyglyph'>=</span> <span class='str'>"http://relaxng.org/ns/structure/1.0"</span>
-<a name="line-329"></a>
-<a name="line-330"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-331"></a><span class='comment'>-- option for Relax NG</span>
-<a name="line-332"></a>
-<a name="line-333"></a><a name="a_relax_schema"></a><span class='definition'>a_relax_schema</span><span class='layout'>,</span>
-<a name="line-334"></a> <span class='varid'>a_do_not_check_restrictions</span><span class='layout'>,</span>  
-<a name="line-335"></a> <span class='varid'>a_check_restrictions</span><span class='layout'>,</span>
-<a name="line-336"></a> <span class='varid'>a_do_not_validate_externalRef</span><span class='layout'>,</span>
-<a name="line-337"></a> <span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>
-<a name="line-338"></a> <span class='varid'>a_do_not_validate_include</span><span class='layout'>,</span>
-<a name="line-339"></a> <span class='varid'>a_validate_include</span><span class='layout'>,</span>
-<a name="line-340"></a> <span class='varid'>a_output_changes</span><span class='layout'>,</span> 
-<a name="line-341"></a> <span class='varid'>a_do_not_collect_errors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> 
-<a name="line-342"></a>
-<a name="line-343"></a><span class='definition'>a_relax_schema</span>		      <span class='keyglyph'>=</span> <span class='str'>"relax-schema"</span>
-<a name="line-344"></a><a name="a_do_not_check_restrictions"></a><span class='definition'>a_do_not_check_restrictions</span>   <span class='keyglyph'>=</span> <span class='str'>"do-not-check-restrictions"</span>
-<a name="line-345"></a><a name="a_check_restrictions"></a><span class='definition'>a_check_restrictions</span>          <span class='keyglyph'>=</span> <span class='str'>"check-restrictions"</span>
-<a name="line-346"></a><a name="a_do_not_validate_externalRef"></a><span class='definition'>a_do_not_validate_externalRef</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-externalRef"</span>
-<a name="line-347"></a><a name="a_validate_externalRef"></a><span class='definition'>a_validate_externalRef</span>        <span class='keyglyph'>=</span> <span class='str'>"validate-externalRef"</span> 
-<a name="line-348"></a><a name="a_do_not_validate_include"></a><span class='definition'>a_do_not_validate_include</span>     <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-include"</span>
-<a name="line-349"></a><a name="a_validate_include"></a><span class='definition'>a_validate_include</span>            <span class='keyglyph'>=</span> <span class='str'>"validate-include"</span>
-<a name="line-350"></a><a name="a_output_changes"></a><span class='definition'>a_output_changes</span>              <span class='keyglyph'>=</span> <span class='str'>"output-pattern-transformations"</span>
-<a name="line-351"></a><a name="a_do_not_collect_errors"></a><span class='definition'>a_do_not_collect_errors</span>       <span class='keyglyph'>=</span> <span class='str'>"do-not-collect-errors"</span>
-<a name="line-352"></a>
-<a name="line-353"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-354"></a>
-<a name="line-355"></a><span class='comment'>-- mime types</span>
-<a name="line-356"></a><span class='comment'>--</span>
-<a name="line-357"></a><span class='comment'>-- see RFC \"http:\/\/www.rfc-editor.org\/rfc\/rfc3023.txt\"</span>
-<a name="line-358"></a>
-<a name="line-359"></a><a name="application_xhtml"></a><span class='definition'>application_xhtml</span><span class='layout'>,</span>
-<a name="line-360"></a> <span class='varid'>application_xml</span><span class='layout'>,</span>
-<a name="line-361"></a> <span class='varid'>application_xml_external_parsed_entity</span><span class='layout'>,</span>
-<a name="line-362"></a> <span class='varid'>application_xml_dtd</span><span class='layout'>,</span>
-<a name="line-363"></a> <span class='varid'>text_html</span><span class='layout'>,</span>
-<a name="line-364"></a> <span class='varid'>text_xml</span><span class='layout'>,</span>
-<a name="line-365"></a> <span class='varid'>text_xml_external_parsed_entity</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-366"></a>
-<a name="line-367"></a><span class='definition'>application_xhtml</span>			<span class='keyglyph'>=</span> <span class='str'>"application/xhtml+xml"</span>
-<a name="line-368"></a><a name="application_xml"></a><span class='definition'>application_xml</span>				<span class='keyglyph'>=</span> <span class='str'>"application/xml"</span>
-<a name="line-369"></a><a name="application_xml_external_parsed_entity"></a><span class='definition'>application_xml_external_parsed_entity</span>	<span class='keyglyph'>=</span> <span class='str'>"application/xml-external-parsed-entity"</span>
-<a name="line-370"></a><a name="application_xml_dtd"></a><span class='definition'>application_xml_dtd</span>			<span class='keyglyph'>=</span> <span class='str'>"application/xml-dtd"</span>
-<a name="line-371"></a>
-<a name="line-372"></a><a name="text_html"></a><span class='definition'>text_html</span>				<span class='keyglyph'>=</span> <span class='str'>"text/html"</span>
-<a name="line-373"></a><a name="text_xml"></a><span class='definition'>text_xml</span>				<span class='keyglyph'>=</span> <span class='str'>"text/xml"</span>
-<a name="line-374"></a><a name="text_xml_external_parsed_entity"></a><span class='definition'>text_xml_external_parsed_entity</span>		<span class='keyglyph'>=</span> <span class='str'>"text/xml-external-parsed-entity"</span>
-<a name="line-375"></a>
-<a name="line-376"></a><a name="isHtmlMimeType"></a><span class='definition'>isHtmlMimeType</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-377"></a><span class='definition'>isHtmlMimeType</span> <span class='varid'>t</span>
-<a name="line-378"></a>    <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>text_html</span>
-<a name="line-379"></a>
-<a name="line-380"></a><a name="isXmlMimeType"></a><span class='definition'>isXmlMimeType</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-381"></a><span class='definition'>isXmlMimeType</span> <span class='varid'>t</span>
-<a name="line-382"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>t</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span> <span class='varid'>application_xhtml</span>
-<a name="line-383"></a>		<span class='layout'>,</span> <span class='varid'>application_xml</span>
-<a name="line-384"></a>		<span class='layout'>,</span> <span class='varid'>application_xml_external_parsed_entity</span>
-<a name="line-385"></a>		<span class='layout'>,</span> <span class='varid'>application_xml_dtd</span>
-<a name="line-386"></a>		<span class='layout'>,</span> <span class='varid'>text_xml</span>
-<a name="line-387"></a>		<span class='layout'>,</span> <span class='varid'>text_xml_external_parsed_entity</span>
-<a name="line-388"></a>		<span class='keyglyph'>]</span>
-<a name="line-389"></a>	<span class='varop'>||</span>
-<a name="line-390"></a>	<span class='str'>"+xml"</span> <span class='varop'>`isSuffixOf`</span> <span class='varid'>t</span>		<span class='comment'>-- application/mathml+xml</span>
-<a name="line-391"></a>      <span class='layout'>)</span>					<span class='comment'>-- or image/svg+xml</span>
-<a name="line-392"></a>
-<a name="line-393"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-239"></a>
+<a name="line-240"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-241"></a><span class='comment'>--</span>
+<a name="line-242"></a>
+<a name="line-243"></a><span class='comment'>-- attribute names for transfer protocol attributes</span>
+<a name="line-244"></a><span class='comment'>-- used in XmlInput for describing header information</span>
+<a name="line-245"></a><span class='comment'>-- of http and other requests</span>
+<a name="line-246"></a>
+<a name="line-247"></a><a name="transferPrefix"></a><span class='definition'>transferPrefix</span>
+<a name="line-248"></a> <span class='layout'>,</span> <span class='varid'>transferProtocol</span>
+<a name="line-249"></a> <span class='layout'>,</span> <span class='varid'>transferMimeType</span>
+<a name="line-250"></a> <span class='layout'>,</span> <span class='varid'>transferEncoding</span>
+<a name="line-251"></a> <span class='layout'>,</span> <span class='varid'>transferURI</span>
+<a name="line-252"></a> <span class='layout'>,</span> <span class='varid'>transferDefaultURI</span>
+<a name="line-253"></a> <span class='layout'>,</span> <span class='varid'>transferStatus</span>
+<a name="line-254"></a> <span class='layout'>,</span> <span class='varid'>transferMessage</span>
+<a name="line-255"></a> <span class='layout'>,</span> <span class='varid'>transferVersion</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-256"></a>
+<a name="line-257"></a><span class='definition'>transferPrefix</span>		<span class='keyglyph'>=</span> <span class='str'>"transfer-"</span>
+<a name="line-258"></a>
+<a name="line-259"></a><a name="transferProtocol"></a><span class='definition'>transferProtocol</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Protocol"</span>
+<a name="line-260"></a><a name="transferVersion"></a><span class='definition'>transferVersion</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Version"</span>
+<a name="line-261"></a><a name="transferMimeType"></a><span class='definition'>transferMimeType</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"MimeType"</span>
+<a name="line-262"></a><a name="transferEncoding"></a><span class='definition'>transferEncoding</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Encoding"</span>
+<a name="line-263"></a><a name="transferDefaultURI"></a><span class='definition'>transferDefaultURI</span>	<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"DefaultURI"</span>
+<a name="line-264"></a><a name="transferStatus"></a><span class='definition'>transferStatus</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Status"</span>
+<a name="line-265"></a><a name="transferMessage"></a><span class='definition'>transferMessage</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Message"</span>
+<a name="line-266"></a><a name="transferURI"></a><span class='definition'>transferURI</span>		<span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"URI"</span>
+<a name="line-267"></a>
+<a name="line-268"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-269"></a><span class='comment'>--</span>
+<a name="line-270"></a>
+<a name="line-271"></a><a name="httpPrefix"></a><span class='definition'>httpPrefix</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-272"></a><span class='definition'>httpPrefix</span>	<span class='keyglyph'>=</span> <span class='str'>"http-"</span>
+<a name="line-273"></a>
+<a name="line-274"></a><a name="stringProtocol"></a><span class='definition'>stringProtocol</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-275"></a><span class='definition'>stringProtocol</span>	<span class='keyglyph'>=</span> <span class='str'>"string:"</span>
+<a name="line-276"></a>
+<a name="line-277"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-278"></a><span class='comment'>--</span>
+<a name="line-279"></a><span class='comment'>-- encoding names</span>
+<a name="line-280"></a>
+<a name="line-281"></a><a name="isoLatin1"></a><span class='definition'>isoLatin1</span>
+<a name="line-282"></a>  <span class='layout'>,</span> <span class='varid'>iso8859_1</span><span class='layout'>,</span> <span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>iso8859_5</span>
+<a name="line-283"></a>  <span class='layout'>,</span> <span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>iso8859_10</span>
+<a name="line-284"></a>  <span class='layout'>,</span> <span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>iso8859_16</span>
+<a name="line-285"></a>  <span class='layout'>,</span> <span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>unicodeString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-286"></a>
+<a name="line-287"></a><span class='definition'>isoLatin1</span>	<span class='keyglyph'>=</span> <span class='varid'>iso8859_1</span>
+<a name="line-288"></a><a name="iso8859_1"></a><span class='definition'>iso8859_1</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-1"</span>
+<a name="line-289"></a><a name="iso8859_2"></a><span class='definition'>iso8859_2</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-2"</span>
+<a name="line-290"></a><a name="iso8859_3"></a><span class='definition'>iso8859_3</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-3"</span>
+<a name="line-291"></a><a name="iso8859_4"></a><span class='definition'>iso8859_4</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-4"</span>
+<a name="line-292"></a><a name="iso8859_5"></a><span class='definition'>iso8859_5</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-5"</span>
+<a name="line-293"></a><a name="iso8859_6"></a><span class='definition'>iso8859_6</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-6"</span>
+<a name="line-294"></a><a name="iso8859_7"></a><span class='definition'>iso8859_7</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-7"</span>
+<a name="line-295"></a><a name="iso8859_8"></a><span class='definition'>iso8859_8</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-8"</span>
+<a name="line-296"></a><a name="iso8859_9"></a><span class='definition'>iso8859_9</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-9"</span>
+<a name="line-297"></a><a name="iso8859_10"></a><span class='definition'>iso8859_10</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-10"</span>
+<a name="line-298"></a><a name="iso8859_11"></a><span class='definition'>iso8859_11</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-11"</span>
+<a name="line-299"></a><a name="iso8859_13"></a><span class='definition'>iso8859_13</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-13"</span>
+<a name="line-300"></a><a name="iso8859_14"></a><span class='definition'>iso8859_14</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-14"</span>
+<a name="line-301"></a><a name="iso8859_15"></a><span class='definition'>iso8859_15</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-15"</span>
+<a name="line-302"></a><a name="iso8859_16"></a><span class='definition'>iso8859_16</span>	<span class='keyglyph'>=</span> <span class='str'>"ISO-8859-16"</span>
+<a name="line-303"></a><a name="usAscii"></a><span class='definition'>usAscii</span>		<span class='keyglyph'>=</span> <span class='str'>"US-ASCII"</span>
+<a name="line-304"></a><a name="ucs2"></a><span class='definition'>ucs2</span>		<span class='keyglyph'>=</span> <span class='str'>"ISO-10646-UCS-2"</span>
+<a name="line-305"></a><a name="utf8"></a><span class='definition'>utf8</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-8"</span>
+<a name="line-306"></a><a name="utf16"></a><span class='definition'>utf16</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-16"</span>
+<a name="line-307"></a><a name="utf16be"></a><span class='definition'>utf16be</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span>
+<a name="line-308"></a><a name="utf16le"></a><span class='definition'>utf16le</span>		<span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span>
+<a name="line-309"></a><a name="unicodeString"></a><span class='definition'>unicodeString</span>	<span class='keyglyph'>=</span> <span class='str'>"UNICODE"</span>
+<a name="line-310"></a>
+<a name="line-311"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-312"></a><span class='comment'>--</span>
+<a name="line-313"></a><span class='comment'>-- known namespaces</span>
+<a name="line-314"></a>
+<a name="line-315"></a><span class='comment'>-- |</span>
+<a name="line-316"></a><span class='comment'>-- the predefined namespace uri for xml: \"http:\/\/www.w3.org\/XML\/1998\/namespace\"</span>
+<a name="line-317"></a>
+<a name="line-318"></a><a name="xmlNamespace"></a><span class='definition'>xmlNamespace</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-319"></a><span class='definition'>xmlNamespace</span>	<span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/XML/1998/namespace"</span>
+<a name="line-320"></a>
+<a name="line-321"></a><span class='comment'>-- |</span>
+<a name="line-322"></a><span class='comment'>-- the predefined namespace uri for xmlns: \"http:\/\/www.w3.org\/2000\/xmlns\/\"</span>
+<a name="line-323"></a>
+<a name="line-324"></a><a name="xmlnsNamespace"></a><span class='definition'>xmlnsNamespace</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-325"></a><span class='definition'>xmlnsNamespace</span>	<span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/2000/xmlns/"</span>
+<a name="line-326"></a>
+<a name="line-327"></a><a name="relaxNamespace"></a><span class='comment'>-- | Relax NG namespace</span>
+<a name="line-328"></a><span class='definition'>relaxNamespace</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-329"></a><span class='definition'>relaxNamespace</span>	<span class='keyglyph'>=</span> <span class='str'>"http://relaxng.org/ns/structure/1.0"</span>
+<a name="line-330"></a>
+<a name="line-331"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-332"></a><span class='comment'>-- option for Relax NG</span>
+<a name="line-333"></a>
+<a name="line-334"></a><a name="a_relax_schema"></a><span class='definition'>a_relax_schema</span><span class='layout'>,</span>
+<a name="line-335"></a> <span class='varid'>a_do_not_check_restrictions</span><span class='layout'>,</span>  
+<a name="line-336"></a> <span class='varid'>a_check_restrictions</span><span class='layout'>,</span>
+<a name="line-337"></a> <span class='varid'>a_do_not_validate_externalRef</span><span class='layout'>,</span>
+<a name="line-338"></a> <span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>
+<a name="line-339"></a> <span class='varid'>a_do_not_validate_include</span><span class='layout'>,</span>
+<a name="line-340"></a> <span class='varid'>a_validate_include</span><span class='layout'>,</span>
+<a name="line-341"></a> <span class='varid'>a_output_changes</span><span class='layout'>,</span> 
+<a name="line-342"></a> <span class='varid'>a_do_not_collect_errors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> 
+<a name="line-343"></a>
+<a name="line-344"></a><span class='definition'>a_relax_schema</span>		      <span class='keyglyph'>=</span> <span class='str'>"relax-schema"</span>
+<a name="line-345"></a><a name="a_do_not_check_restrictions"></a><span class='definition'>a_do_not_check_restrictions</span>   <span class='keyglyph'>=</span> <span class='str'>"do-not-check-restrictions"</span>
+<a name="line-346"></a><a name="a_check_restrictions"></a><span class='definition'>a_check_restrictions</span>          <span class='keyglyph'>=</span> <span class='str'>"check-restrictions"</span>
+<a name="line-347"></a><a name="a_do_not_validate_externalRef"></a><span class='definition'>a_do_not_validate_externalRef</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-externalRef"</span>
+<a name="line-348"></a><a name="a_validate_externalRef"></a><span class='definition'>a_validate_externalRef</span>        <span class='keyglyph'>=</span> <span class='str'>"validate-externalRef"</span> 
+<a name="line-349"></a><a name="a_do_not_validate_include"></a><span class='definition'>a_do_not_validate_include</span>     <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-include"</span>
+<a name="line-350"></a><a name="a_validate_include"></a><span class='definition'>a_validate_include</span>            <span class='keyglyph'>=</span> <span class='str'>"validate-include"</span>
+<a name="line-351"></a><a name="a_output_changes"></a><span class='definition'>a_output_changes</span>              <span class='keyglyph'>=</span> <span class='str'>"output-pattern-transformations"</span>
+<a name="line-352"></a><a name="a_do_not_collect_errors"></a><span class='definition'>a_do_not_collect_errors</span>       <span class='keyglyph'>=</span> <span class='str'>"do-not-collect-errors"</span>
+<a name="line-353"></a>
+<a name="line-354"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-XmlOptions.html b/doc/hdoc/src/Text-XML-HXT-DOM-XmlOptions.html
--- a/doc/hdoc/src/Text-XML-HXT-DOM-XmlOptions.html
+++ b/doc/hdoc/src/Text-XML-HXT-DOM-XmlOptions.html
@@ -24,154 +24,166 @@
 <a name="line-16"></a>    <span class='layout'>,</span> <span class='varid'>selectOptions</span>
 <a name="line-17"></a>    <span class='layout'>,</span> <span class='varid'>removeOptions</span>
 <a name="line-18"></a>    <span class='layout'>,</span> <span class='varid'>optionIsSet</span>
-<a name="line-19"></a>    <span class='layout'>)</span>
-<a name="line-20"></a><span class='keyword'>where</span>
-<a name="line-21"></a>
-<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Console</span><span class='varop'>.</span><span class='conid'>GetOpt</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-30"></a><span class='comment'>--</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='comment'>-- |</span>
-<a name="line-33"></a><span class='comment'>-- commonly useful options for XML input</span>
-<a name="line-34"></a><span class='comment'>--</span>
-<a name="line-35"></a><span class='comment'>-- can be used for option definition with haskell getopt</span>
-<a name="line-36"></a><span class='comment'>--</span>
-<a name="line-37"></a><span class='comment'>-- defines options: 'a_trace', 'a_proxy', 'a_use_curl', 'a_do_not_use_curl', 'a_options_curl', 'a_encoding',</span>
-<a name="line-38"></a><span class='comment'>-- 'a_issue_errors', 'a_do_not_issue_errors', 'a_parse_html', 'a_parse_by_mimetype', 'a_tagsoup' 'a_issue_warnings', 'a_do_not_issue_warnings',</span>
-<a name="line-39"></a><span class='comment'>-- 'a_parse_xml', 'a_validate', 'a_do_not_validate', 'a_canonicalize', 'a_do_not_canonicalize',</span>
-<a name="line-40"></a><span class='comment'>--- 'a_preserve_comment', 'a_do_not_preserve_comment', 'a_check_namespaces', 'a_do_not_check_namespaces',</span>
-<a name="line-41"></a><span class='comment'>-- 'a_remove_whitespace', 'a_do_not_remove_whitespace'</span>
-<a name="line-42"></a>
-<a name="line-43"></a><a name="inputOptions"></a><span class='definition'>inputOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-44"></a><span class='definition'>inputOptions</span>
-<a name="line-45"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"t"</span>	<span class='keyglyph'>[</span><span class='varid'>a_trace</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>OptArg</span> <span class='varid'>trc</span> <span class='str'>"LEVEL"</span><span class='layout'>)</span>			<span class='str'>"trace level (0-4), default 1"</span>
-<a name="line-46"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"p"</span>	<span class='keyglyph'>[</span><span class='varid'>a_proxy</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_proxy</span><span class='layout'>)</span>         <span class='str'>"PROXY"</span><span class='layout'>)</span>	<span class='str'>"proxy for http access (e.g. \"www-cache:3128\")"</span>
-<a name="line-47"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_use_curl</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_use_curl</span>          <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"HTTP access via external program \"curl\", more functionality, supports HTTP/1.0, less efficient"</span>
-<a name="line-48"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_use_curl</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_use_curl</span>          <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"HTTP access via built in HTTP/1.1 module (default)"</span>
-<a name="line-49"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_options_curl</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_options_curl</span><span class='layout'>)</span>    <span class='str'>"STR"</span><span class='layout'>)</span>	<span class='str'>"additional curl options, e.g. for timeout, ..."</span>
-<a name="line-50"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_default_baseuri</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>transferURI</span><span class='layout'>)</span> 	<span class='str'>"URI"</span><span class='layout'>)</span>	<span class='str'>"default base URI, default: \"file:///&lt;cwd&gt;/\""</span>
-<a name="line-51"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"e"</span>	<span class='keyglyph'>[</span><span class='varid'>a_encoding</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_encoding</span><span class='layout'>)</span>    <span class='str'>"CHARSET"</span><span class='layout'>)</span>	<span class='layout'>(</span> <span class='str'>"default document encoding ("</span> <span class='varop'>++</span> <span class='varid'>utf8</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>isoLatin1</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>usAscii</span> <span class='varop'>++</span> <span class='str'>", ...)"</span> <span class='layout'>)</span>
-<a name="line-52"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_issue_errors</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_errors</span>      <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"issue all errorr messages on stderr (default)"</span>
-<a name="line-53"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_issue_errors</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_errors</span>      <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"ignore all error messages"</span>
-<a name="line-54"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"H"</span>	<span class='keyglyph'>[</span><span class='varid'>a_parse_html</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_html</span>        <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"parse input as HTML, try to interprete everything as HTML, no validation"</span>
-<a name="line-55"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"M"</span>	<span class='keyglyph'>[</span><span class='varid'>a_parse_by_mimetype</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_by_mimetype</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"parse dependent on mime type: text/html as HTML, text/xml and text/xhtml as XML, else no parse"</span>
-<a name="line-56"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"T"</span>	<span class='keyglyph'>[</span><span class='varid'>a_tagsoup</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_tagsoup</span>           <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"lasy tagsoup parser, for HTML and XML, no DTD, no validation, no PIs, only XHTML entityrefs"</span>
-<a name="line-57"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_issue_warnings</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"issue warnings, when parsing HTML (default)"</span>
-<a name="line-58"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"Q"</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_issue_warnings</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span>    <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"ignore warnings, when parsing HTML"</span>
-<a name="line-59"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_parse_xml</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_html</span>        <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"parse input as XML (default)"</span>
-<a name="line-60"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_validate</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span>          <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"document validation when parsing XML (default)"</span>
-<a name="line-61"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"w"</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_validate</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span>          <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"only wellformed check, no validation"</span>
-<a name="line-62"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_canonicalize</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span>      <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"canonicalize document, remove DTD, comment, transform CDATA, CharRef's, ... (default)"</span>
-<a name="line-63"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"c"</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_canonicalize</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span>      <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"do not canonicalize document, don't remove DTD, comment, don't transform CDATA, CharRef's, ..."</span>
-<a name="line-64"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"C"</span>	<span class='keyglyph'>[</span><span class='varid'>a_preserve_comment</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span>  <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"don't remove comments during canonicalisation"</span>
-<a name="line-65"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_preserve_comment</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span>  <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"remove comments during canonicalisation (default)"</span>
-<a name="line-66"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"n"</span>	<span class='keyglyph'>[</span><span class='varid'>a_check_namespaces</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span>  <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"tag tree with namespace information and check namespaces"</span>
-<a name="line-67"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_check_namespaces</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span>  <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"ignore namespaces (default)"</span>
-<a name="line-68"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"r"</span>	<span class='keyglyph'>[</span><span class='varid'>a_remove_whitespace</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"remove redundant whitespace, simplifies tree and processing"</span>
-<a name="line-69"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_remove_whitespace</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"don't remove redundant whitespace (default)"</span>
-<a name="line-70"></a>      <span class='keyglyph'>]</span>
-<a name="line-71"></a>    <span class='keyword'>where</span>
-<a name="line-72"></a>    <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
-<a name="line-73"></a>    <span class='varid'>trc</span> <span class='keyglyph'>=</span> <span class='varid'>att</span> <span class='varid'>a_trace</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>max</span> <span class='num'>0</span> <span class='varop'>.</span> <span class='varid'>min</span> <span class='num'>9</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='chr'>'0'</span><span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"0123456789"</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='varid'>v_1</span>
-<a name="line-74"></a>
-<a name="line-75"></a>
-<a name="line-76"></a><span class='comment'>-- | available Relax NG validation options</span>
-<a name="line-77"></a><span class='comment'>--</span>
-<a name="line-78"></a><span class='comment'>-- defines options</span>
-<a name="line-79"></a><span class='comment'>-- 'a_check_restrictions', 'a_validate_externalRef', 'a_validate_include', 'a_do_not_check_restrictions',  </span>
-<a name="line-80"></a><span class='comment'>-- 'a_do_not_validate_externalRef', 'a_do_not_validate_include'</span>
-<a name="line-81"></a>
-<a name="line-82"></a><a name="relaxOptions"></a><span class='definition'>relaxOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-83"></a><span class='definition'>relaxOptions</span>    
-<a name="line-84"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"X"</span> <span class='keyglyph'>[</span><span class='varid'>a_relax_schema</span><span class='keyglyph'>]</span>	        	<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_relax_schema</span><span class='layout'>)</span> <span class='str'>"SCHEMA"</span><span class='layout'>)</span>	<span class='str'>"validation with Relax NG, SCHEMA is the URI for the Relax NG schema"</span>
-<a name="line-85"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_check_restrictions</span><span class='keyglyph'>]</span>	        <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"check Relax NG schema restrictions during schema simplification (default)"</span>
-<a name="line-86"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_do_not_check_restrictions</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span>    <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"do not check Relax NG schema restrictions"</span>
-<a name="line-87"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_validate_externalRef</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>  <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"validate a Relax NG schema referenced by a externalRef-Pattern (default)"</span>
-<a name="line-88"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_externalRef</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>  <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"do not validate a Relax NG schema referenced by an externalRef-Pattern"</span>
-<a name="line-89"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_validate_include</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span>      <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"validate a Relax NG schema referenced by an include-Pattern (default)"</span>
-<a name="line-90"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_include</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span>      <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>   <span class='str'>"do not validate a Relax NG schema referenced by an include-Pattern"</span>
-<a name="line-91"></a>	<span class='comment'>{-
-<a name="line-92"></a>      , Option ""  [a_output_changes]			(NoArg (a_output_changes,        v_1))	"output Pattern transformations in case of an error"    
-<a name="line-93"></a>      , Option ""  [a_do_not_collect_errors]     	(NoArg (a_do_not_collect_errors, v_1))	"stop Relax NG simplification after the first error has occurred"
-<a name="line-94"></a>	-}</span>
-<a name="line-95"></a>      <span class='keyglyph'>]</span>
-<a name="line-96"></a>    <span class='keyword'>where</span>
-<a name="line-97"></a>    <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
-<a name="line-98"></a>
-<a name="line-99"></a><span class='comment'>-- |</span>
-<a name="line-100"></a><span class='comment'>-- commonly useful options for XML output</span>
-<a name="line-101"></a><span class='comment'>--</span>
-<a name="line-102"></a><span class='comment'>-- defines options: 'a_indent', 'a_output_encoding', 'a_output_file', 'a_output_html'</span>
-<a name="line-103"></a>
-<a name="line-104"></a><a name="outputOptions"></a><span class='definition'>outputOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-105"></a><span class='definition'>outputOptions</span>
-<a name="line-106"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"i"</span>	<span class='keyglyph'>[</span><span class='varid'>a_indent</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_indent</span>                <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"indent XML output for readability"</span>
-<a name="line-107"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"o"</span>	<span class='keyglyph'>[</span><span class='varid'>a_output_encoding</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_encoding</span><span class='layout'>)</span> <span class='str'>"CHARSET"</span><span class='layout'>)</span>	<span class='layout'>(</span> <span class='str'>"encoding of output ("</span> <span class='varop'>++</span> <span class='varid'>utf8</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>isoLatin1</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>usAscii</span> <span class='varop'>++</span> <span class='str'>")"</span> <span class='layout'>)</span>
-<a name="line-108"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"f"</span>	<span class='keyglyph'>[</span><span class='varid'>a_output_file</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_file</span><span class='layout'>)</span>        <span class='str'>"FILE"</span><span class='layout'>)</span>	<span class='str'>"output file for resulting document (default: stdout)"</span>
-<a name="line-109"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_output_html</span><span class='keyglyph'>]</span>	        <span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_html</span>           <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"output of none ASCII chars as HTMl entity references"</span>
-<a name="line-110"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>       <span class='keyglyph'>[</span><span class='varid'>a_no_xml_pi</span><span class='keyglyph'>]</span>	        <span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_no_xml_pi</span>             <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>      <span class='layout'>(</span><span class='str'>"output without &lt;?xml ...?&gt; processing instruction, useful in combination with --"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>a_output_html</span><span class='layout'>)</span>
-<a name="line-111"></a>      <span class='keyglyph'>]</span>
-<a name="line-112"></a>    <span class='keyword'>where</span>
-<a name="line-113"></a>    <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
-<a name="line-114"></a>
-<a name="line-115"></a><span class='comment'>-- |</span>
-<a name="line-116"></a><span class='comment'>-- commonly useful options</span>
-<a name="line-117"></a><span class='comment'>--</span>
-<a name="line-118"></a><span class='comment'>-- defines options: 'a_verbose', 'a_help'</span>
-<a name="line-119"></a>
-<a name="line-120"></a><a name="generalOptions"></a><span class='definition'>generalOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-121"></a><span class='definition'>generalOptions</span>
-<a name="line-122"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"v"</span>	<span class='keyglyph'>[</span><span class='varid'>a_verbose</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_verbose</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"verbose output"</span>
-<a name="line-123"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"h?"</span>	<span class='keyglyph'>[</span><span class='varid'>a_help</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_help</span><span class='layout'>,</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"this message"</span>
-<a name="line-124"></a>      <span class='keyglyph'>]</span>
-<a name="line-125"></a>
-<a name="line-126"></a><span class='comment'>-- |</span>
-<a name="line-127"></a><span class='comment'>-- defines 'a_version' option</span>
-<a name="line-128"></a>
-<a name="line-129"></a><a name="versionOptions"></a><span class='definition'>versionOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-130"></a><span class='definition'>versionOptions</span>
-<a name="line-131"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"V"</span>	<span class='keyglyph'>[</span><span class='varid'>a_version</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_version</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"show program version"</span>
-<a name="line-132"></a>      <span class='keyglyph'>]</span>
-<a name="line-133"></a>
-<a name="line-134"></a><span class='comment'>-- |</span>
-<a name="line-135"></a><span class='comment'>-- debug output options</span>
-<a name="line-136"></a>
-<a name="line-137"></a><a name="showOptions"></a><span class='definition'>showOptions</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-138"></a><span class='definition'>showOptions</span>
-<a name="line-139"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_show_tree</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_show_tree</span><span class='layout'>,</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"output tree representation instead of document source"</span>
-<a name="line-140"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_show_haskell</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_show_haskell</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"output internal Haskell representation instead of document source"</span>
-<a name="line-141"></a>      <span class='keyglyph'>]</span>
-<a name="line-142"></a>
-<a name="line-143"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-144"></a>
-<a name="line-145"></a><span class='comment'>-- |</span>
-<a name="line-146"></a><span class='comment'>-- select options from a predefined list of option desciptions</span>
-<a name="line-147"></a>
-<a name="line-148"></a><a name="selectOptions"></a><span class='definition'>selectOptions</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-149"></a><span class='definition'>selectOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>
-<a name="line-150"></a>    <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>on</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>on</span> <span class='varop'>`elem`</span> <span class='varid'>ons</span><span class='layout'>)</span> <span class='varid'>os</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ol</span>
+<a name="line-19"></a>    <span class='layout'>,</span> <span class='varid'>isTrueValue</span>
+<a name="line-20"></a>    <span class='layout'>)</span>
+<a name="line-21"></a><span class='keyword'>where</span>
+<a name="line-22"></a>
+<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
+<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>
+<a name="line-25"></a>
+<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
+<a name="line-27"></a>
+<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Console</span><span class='varop'>.</span><span class='conid'>GetOpt</span>
+<a name="line-29"></a>
+<a name="line-30"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-31"></a><span class='comment'>--</span>
+<a name="line-32"></a>
+<a name="line-33"></a><span class='comment'>-- |</span>
+<a name="line-34"></a><span class='comment'>-- commonly useful options for XML input</span>
+<a name="line-35"></a><span class='comment'>--</span>
+<a name="line-36"></a><span class='comment'>-- can be used for option definition with haskell getopt</span>
+<a name="line-37"></a><span class='comment'>--</span>
+<a name="line-38"></a><span class='comment'>-- defines options: 'a_trace', 'a_proxy', 'a_use_curl', 'a_do_not_use_curl', 'a_options_curl', 'a_encoding',</span>
+<a name="line-39"></a><span class='comment'>-- 'a_issue_errors', 'a_do_not_issue_errors', 'a_parse_html', 'a_parse_by_mimetype', 'a_tagsoup' 'a_issue_warnings', 'a_do_not_issue_warnings',</span>
+<a name="line-40"></a><span class='comment'>-- 'a_parse_xml', 'a_validate', 'a_do_not_validate', 'a_canonicalize', 'a_do_not_canonicalize',</span>
+<a name="line-41"></a><span class='comment'>--- 'a_preserve_comment', 'a_do_not_preserve_comment', 'a_check_namespaces', 'a_do_not_check_namespaces',</span>
+<a name="line-42"></a><span class='comment'>-- 'a_remove_whitespace', 'a_do_not_remove_whitespace'</span>
+<a name="line-43"></a>
+<a name="line-44"></a><a name="inputOptions"></a><span class='definition'>inputOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-45"></a><span class='definition'>inputOptions</span>
+<a name="line-46"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"t"</span>	<span class='keyglyph'>[</span><span class='varid'>a_trace</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>OptArg</span> <span class='varid'>trc</span> <span class='str'>"LEVEL"</span><span class='layout'>)</span>			<span class='str'>"trace level (0-4), default 1"</span>
+<a name="line-47"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"p"</span>	<span class='keyglyph'>[</span><span class='varid'>a_proxy</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_proxy</span><span class='layout'>)</span>         <span class='str'>"PROXY"</span><span class='layout'>)</span>	<span class='str'>"proxy for http access (e.g. \"www-cache:3128\")"</span>
+<a name="line-48"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_use_curl</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_use_curl</span>          <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"obsolete, since hxt-8.1 HTTP access is always done with curl bindings"</span>
+<a name="line-49"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_use_curl</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_use_curl</span>          <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"obsolete, since hxt-8.1 HTTP access is always done with curl bindings"</span>
+<a name="line-50"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_options_curl</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_options_curl</span><span class='layout'>)</span>    <span class='str'>"STR"</span><span class='layout'>)</span>	<span class='str'>"additional curl options, e.g. for timeout, ..."</span>
+<a name="line-51"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_default_baseuri</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>transferURI</span><span class='layout'>)</span> 	<span class='str'>"URI"</span><span class='layout'>)</span>	<span class='str'>"default base URI, default: \"file:///&lt;cwd&gt;/\""</span>
+<a name="line-52"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"e"</span>	<span class='keyglyph'>[</span><span class='varid'>a_encoding</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_encoding</span><span class='layout'>)</span>    <span class='str'>"CHARSET"</span><span class='layout'>)</span>	<span class='layout'>(</span> <span class='str'>"default document encoding ("</span> <span class='varop'>++</span> <span class='varid'>utf8</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>isoLatin1</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>usAscii</span> <span class='varop'>++</span> <span class='str'>", ...)"</span> <span class='layout'>)</span>
+<a name="line-53"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>       <span class='keyglyph'>[</span><span class='varid'>a_mime_types</span><span class='keyglyph'>]</span>                  <span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_mime_types</span><span class='layout'>)</span>     <span class='str'>"FILE"</span><span class='layout'>)</span>  <span class='str'>"set mime type configuration file, e.g. \"/etc/mime.types\""</span>
+<a name="line-54"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_issue_errors</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_errors</span>      <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"issue all errorr messages on stderr (default)"</span>
+<a name="line-55"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_issue_errors</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_errors</span>      <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"ignore all error messages"</span>
+<a name="line-56"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_ignore_encoding_errors</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_ignore_encoding_errors</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>   <span class='str'>"ignore encoding errors"</span>
+<a name="line-57"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_ignore_none_xml_contents</span><span class='keyglyph'>]</span>    <span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_ignore_none_xml_contents</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"discards all contents of none XML/HTML documents, only the meta info remains stays in the doc tree"</span>
+<a name="line-58"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"H"</span>	<span class='keyglyph'>[</span><span class='varid'>a_parse_html</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_html</span>        <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"parse input as HTML, try to interprete everything as HTML, no validation"</span>
+<a name="line-59"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"M"</span>	<span class='keyglyph'>[</span><span class='varid'>a_parse_by_mimetype</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_by_mimetype</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"parse dependent on mime type: text/html as HTML, text/xml and text/xhtml and others as XML, else no parse"</span>
+<a name="line-60"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_parse_xml</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_html</span>        <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"parse input as XML, (default)"</span>
+<a name="line-61"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"T"</span>	<span class='keyglyph'>[</span><span class='varid'>a_tagsoup</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_tagsoup</span>           <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"lasy tagsoup parser, for HTML and XML, no DTD, no validation, no PIs, only XHTML entityrefs"</span>
+<a name="line-62"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_issue_warnings</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"issue warnings, when parsing HTML (default)"</span>
+<a name="line-63"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"Q"</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_issue_warnings</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span>    <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"ignore warnings, when parsing HTML"</span>
+<a name="line-64"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_validate</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span>          <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"document validation when parsing XML (default)"</span>
+<a name="line-65"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"w"</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_validate</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span>          <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"only wellformed check, no validation"</span>
+<a name="line-66"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_canonicalize</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span>      <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"canonicalize document, remove DTD, comment, transform CDATA, CharRef's, ... (default)"</span>
+<a name="line-67"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"c"</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_canonicalize</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span>      <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"do not canonicalize document, don't remove DTD, comment, don't transform CDATA, CharRef's, ..."</span>
+<a name="line-68"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"C"</span>	<span class='keyglyph'>[</span><span class='varid'>a_preserve_comment</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span>  <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"don't remove comments during canonicalisation"</span>
+<a name="line-69"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_preserve_comment</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>	<span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span>  <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"remove comments during canonicalisation (default)"</span>
+<a name="line-70"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"n"</span>	<span class='keyglyph'>[</span><span class='varid'>a_check_namespaces</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span>  <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"tag tree with namespace information and check namespaces"</span>
+<a name="line-71"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_check_namespaces</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span>  <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"ignore namespaces (default)"</span>
+<a name="line-72"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"r"</span>	<span class='keyglyph'>[</span><span class='varid'>a_remove_whitespace</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"remove redundant whitespace, simplifies tree and processing"</span>
+<a name="line-73"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_do_not_remove_whitespace</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"don't remove redundant whitespace (default)"</span>
+<a name="line-74"></a>      <span class='keyglyph'>]</span>
+<a name="line-75"></a>    <span class='keyword'>where</span>
+<a name="line-76"></a>    <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
+<a name="line-77"></a>    <span class='varid'>trc</span> <span class='keyglyph'>=</span> <span class='varid'>att</span> <span class='varid'>a_trace</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>max</span> <span class='num'>0</span> <span class='varop'>.</span> <span class='varid'>min</span> <span class='num'>9</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='chr'>'0'</span><span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"0123456789"</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='varid'>v_1</span>
+<a name="line-78"></a>
+<a name="line-79"></a>
+<a name="line-80"></a><span class='comment'>-- | available Relax NG validation options</span>
+<a name="line-81"></a><span class='comment'>--</span>
+<a name="line-82"></a><span class='comment'>-- defines options</span>
+<a name="line-83"></a><span class='comment'>-- 'a_check_restrictions', 'a_validate_externalRef', 'a_validate_include', 'a_do_not_check_restrictions',  </span>
+<a name="line-84"></a><span class='comment'>-- 'a_do_not_validate_externalRef', 'a_do_not_validate_include'</span>
+<a name="line-85"></a>
+<a name="line-86"></a><a name="relaxOptions"></a><span class='definition'>relaxOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-87"></a><span class='definition'>relaxOptions</span>    
+<a name="line-88"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"X"</span> <span class='keyglyph'>[</span><span class='varid'>a_relax_schema</span><span class='keyglyph'>]</span>	        	<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_relax_schema</span><span class='layout'>)</span> <span class='str'>"SCHEMA"</span><span class='layout'>)</span>	<span class='str'>"validation with Relax NG, SCHEMA is the URI for the Relax NG schema"</span>
+<a name="line-89"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_check_restrictions</span><span class='keyglyph'>]</span>	        <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"check Relax NG schema restrictions during schema simplification (default)"</span>
+<a name="line-90"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_do_not_check_restrictions</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span>    <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"do not check Relax NG schema restrictions"</span>
+<a name="line-91"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_validate_externalRef</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>  <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"validate a Relax NG schema referenced by a externalRef-Pattern (default)"</span>
+<a name="line-92"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_externalRef</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>  <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"do not validate a Relax NG schema referenced by an externalRef-Pattern"</span>
+<a name="line-93"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_validate_include</span><span class='keyglyph'>]</span>			<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span>      <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"validate a Relax NG schema referenced by an include-Pattern (default)"</span>
+<a name="line-94"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>  <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_include</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span>      <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span>   <span class='str'>"do not validate a Relax NG schema referenced by an include-Pattern"</span>
+<a name="line-95"></a>	<span class='comment'>{-
+<a name="line-96"></a>      , Option ""  [a_output_changes]			(NoArg (a_output_changes,        v_1))	"output Pattern transformations in case of an error"    
+<a name="line-97"></a>      , Option ""  [a_do_not_collect_errors]     	(NoArg (a_do_not_collect_errors, v_1))	"stop Relax NG simplification after the first error has occurred"
+<a name="line-98"></a>	-}</span>
+<a name="line-99"></a>      <span class='keyglyph'>]</span>
+<a name="line-100"></a>    <span class='keyword'>where</span>
+<a name="line-101"></a>    <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
+<a name="line-102"></a>
+<a name="line-103"></a><span class='comment'>-- |</span>
+<a name="line-104"></a><span class='comment'>-- commonly useful options for XML output</span>
+<a name="line-105"></a><span class='comment'>--</span>
+<a name="line-106"></a><span class='comment'>-- defines options: 'a_indent', 'a_output_encoding', 'a_output_file', 'a_output_html'</span>
+<a name="line-107"></a>
+<a name="line-108"></a><a name="outputOptions"></a><span class='definition'>outputOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-109"></a><span class='definition'>outputOptions</span>
+<a name="line-110"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"i"</span>	<span class='keyglyph'>[</span><span class='varid'>a_indent</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_indent</span>                <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"indent XML output for readability"</span>
+<a name="line-111"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"o"</span>	<span class='keyglyph'>[</span><span class='varid'>a_output_encoding</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_encoding</span><span class='layout'>)</span> <span class='str'>"CHARSET"</span><span class='layout'>)</span>	<span class='layout'>(</span> <span class='str'>"encoding of output ("</span> <span class='varop'>++</span> <span class='varid'>utf8</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>isoLatin1</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>usAscii</span> <span class='varop'>++</span> <span class='str'>")"</span> <span class='layout'>)</span>
+<a name="line-112"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"f"</span>	<span class='keyglyph'>[</span><span class='varid'>a_output_file</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_file</span><span class='layout'>)</span>        <span class='str'>"FILE"</span><span class='layout'>)</span>	<span class='str'>"output file for resulting document (default: stdout)"</span>
+<a name="line-113"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_output_html</span><span class='keyglyph'>]</span>	        <span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_html</span>           <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='str'>"output of none ASCII chars as HTMl entity references"</span>
+<a name="line-114"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>       <span class='keyglyph'>[</span><span class='varid'>a_no_xml_pi</span><span class='keyglyph'>]</span>	        <span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_no_xml_pi</span>             <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>      <span class='layout'>(</span><span class='str'>"output without &lt;?xml ...?&gt; processing instruction, useful in combination with --"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>a_output_html</span><span class='layout'>)</span>
+<a name="line-115"></a>      <span class='keyglyph'>]</span>
+<a name="line-116"></a>    <span class='keyword'>where</span>
+<a name="line-117"></a>    <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>
+<a name="line-118"></a>
+<a name="line-119"></a><span class='comment'>-- |</span>
+<a name="line-120"></a><span class='comment'>-- commonly useful options</span>
+<a name="line-121"></a><span class='comment'>--</span>
+<a name="line-122"></a><span class='comment'>-- defines options: 'a_verbose', 'a_help'</span>
+<a name="line-123"></a>
+<a name="line-124"></a><a name="generalOptions"></a><span class='definition'>generalOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-125"></a><span class='definition'>generalOptions</span>
+<a name="line-126"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"v"</span>	<span class='keyglyph'>[</span><span class='varid'>a_verbose</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_verbose</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"verbose output"</span>
+<a name="line-127"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"h?"</span>	<span class='keyglyph'>[</span><span class='varid'>a_help</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_help</span><span class='layout'>,</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"this message"</span>
+<a name="line-128"></a>      <span class='keyglyph'>]</span>
+<a name="line-129"></a>
+<a name="line-130"></a><span class='comment'>-- |</span>
+<a name="line-131"></a><span class='comment'>-- defines 'a_version' option</span>
+<a name="line-132"></a>
+<a name="line-133"></a><a name="versionOptions"></a><span class='definition'>versionOptions</span> 	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-134"></a><span class='definition'>versionOptions</span>
+<a name="line-135"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"V"</span>	<span class='keyglyph'>[</span><span class='varid'>a_version</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_version</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"show program version"</span>
+<a name="line-136"></a>      <span class='keyglyph'>]</span>
+<a name="line-137"></a>
+<a name="line-138"></a><span class='comment'>-- |</span>
+<a name="line-139"></a><span class='comment'>-- debug output options</span>
+<a name="line-140"></a>
+<a name="line-141"></a><a name="showOptions"></a><span class='definition'>showOptions</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-142"></a><span class='definition'>showOptions</span>
+<a name="line-143"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_show_tree</span><span class='keyglyph'>]</span>		<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_show_tree</span><span class='layout'>,</span>    <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"output tree representation instead of document source"</span>
+<a name="line-144"></a>      <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span>	<span class='keyglyph'>[</span><span class='varid'>a_show_haskell</span><span class='keyglyph'>]</span>	<span class='layout'>(</span><span class='conid'>NoArg</span>  <span class='layout'>(</span><span class='varid'>a_show_haskell</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span>		<span class='str'>"output internal Haskell representation instead of document source"</span>
+<a name="line-145"></a>      <span class='keyglyph'>]</span>
+<a name="line-146"></a>
+<a name="line-147"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-148"></a>
+<a name="line-149"></a><span class='comment'>-- |</span>
+<a name="line-150"></a><span class='comment'>-- select options from a predefined list of option desciptions</span>
 <a name="line-151"></a>
-<a name="line-152"></a><a name="removeOptions"></a><span class='definition'>removeOptions</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-153"></a><span class='definition'>removeOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>
-<a name="line-154"></a>    <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>any</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='varid'>ol</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ons</span> <span class='layout'>)</span> <span class='varid'>os</span>
+<a name="line-152"></a><a name="selectOptions"></a><span class='definition'>selectOptions</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-153"></a><span class='definition'>selectOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>
+<a name="line-154"></a>    <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>on</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>on</span> <span class='varop'>`elem`</span> <span class='varid'>ons</span><span class='layout'>)</span> <span class='varid'>os</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ol</span>
 <a name="line-155"></a>
-<a name="line-156"></a><span class='comment'>-- |</span>
-<a name="line-157"></a><span class='comment'>-- check whether an option is set</span>
-<a name="line-158"></a><span class='comment'>--</span>
-<a name="line-159"></a><span class='comment'>-- reads the value of an attribute, usually applied to a document root node,</span>
-<a name="line-160"></a><span class='comment'>-- and checks if the value represents True. The following strings are interpreted</span>
-<a name="line-161"></a><span class='comment'>-- as true: \"1\", \"True\", \"true\", \"yes\", \"Yes\".</span>
-<a name="line-162"></a>
-<a name="line-163"></a><a name="optionIsSet"></a><span class='definition'>optionIsSet</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-164"></a><span class='definition'>optionIsSet</span> <span class='varid'>n</span>
-<a name="line-165"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"1"</span><span class='layout'>,</span> <span class='str'>"True"</span><span class='layout'>,</span> <span class='str'>"true"</span><span class='layout'>,</span> <span class='str'>"Yes"</span><span class='layout'>,</span> <span class='str'>"yes"</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookupDef</span> <span class='str'>""</span> <span class='varid'>n</span>
+<a name="line-156"></a><a name="removeOptions"></a><span class='definition'>removeOptions</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-157"></a><span class='definition'>removeOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>
+<a name="line-158"></a>    <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>any</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='varid'>ol</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ons</span> <span class='layout'>)</span> <span class='varid'>os</span>
+<a name="line-159"></a>
+<a name="line-160"></a><span class='comment'>-- |</span>
+<a name="line-161"></a><span class='comment'>-- check whether an option is set</span>
+<a name="line-162"></a><span class='comment'>--</span>
+<a name="line-163"></a><span class='comment'>-- reads the value of an attribute, usually applied to a document root node,</span>
+<a name="line-164"></a><span class='comment'>-- and checks if the value represents True. The following strings are interpreted</span>
+<a name="line-165"></a><span class='comment'>-- as true: \"1\", \"True\", \"true\", \"yes\", \"Yes\".</span>
 <a name="line-166"></a>
-<a name="line-167"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-167"></a><a name="optionIsSet"></a><span class='definition'>optionIsSet</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
+<a name="line-168"></a><span class='definition'>optionIsSet</span> <span class='varid'>n</span>	<span class='keyglyph'>=</span> <span class='varid'>isTrueValue</span> <span class='varop'>.</span> <span class='varid'>lookupDef</span> <span class='str'>""</span> <span class='varid'>n</span>
+<a name="line-169"></a>
+<a name="line-170"></a><span class='comment'>-- | check whether a string represents True</span>
+<a name="line-171"></a><span class='comment'>--</span>
+<a name="line-172"></a><span class='comment'>-- definition:</span>
+<a name="line-173"></a><span class='comment'>--</span>
+<a name="line-174"></a><span class='comment'>-- &gt; isTrueValue	= (`elem` ["1", "True", "true", "Yes", "yes"])</span>
+<a name="line-175"></a>
+<a name="line-176"></a><a name="isTrueValue"></a><span class='definition'>isTrueValue</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
+<a name="line-177"></a><span class='definition'>isTrueValue</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"1"</span><span class='layout'>,</span> <span class='str'>"True"</span><span class='layout'>,</span> <span class='str'>"true"</span><span class='layout'>,</span> <span class='str'>"Yes"</span><span class='layout'>,</span> <span class='str'>"yes"</span><span class='keyglyph'>]</span><span class='layout'>)</span>
+<a name="line-178"></a>
+<a name="line-179"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM-XmlState.html b/doc/hdoc/src/Text-XML-HXT-DOM-XmlState.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-DOM-XmlState.html
+++ /dev/null
@@ -1,699 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides a Monad for an internal state and IO commands.</span>
-<a name="line-3"></a><span class='comment'>-- The state consists of two parts, the user state and the system state</span>
-<a name="line-4"></a><span class='comment'>-- user state ist a type parameter, the system state is a list</span>
-<a name="line-5"></a><span class='comment'>-- name-value pair. If the user state is not needed, the type parameter</span>
-<a name="line-6"></a><span class='comment'>-- can be instantiated with @()@.</span>
-<a name="line-7"></a><span class='comment'>--</span>
-<a name="line-8"></a><span class='comment'>-- Furthermore there are types for Xml filter working on this monad</span>
-<a name="line-9"></a><span class='comment'>-- and functions for manipulating the state components</span>
-<a name="line-10"></a><span class='comment'>-- and for lifting i\/o commands and XmlFilter to monad filters.</span>
-<a name="line-11"></a><span class='comment'>--</span>
-<a name="line-12"></a><span class='comment'>-- Error reporting functions are also located in this module.</span>
-<a name="line-13"></a><span class='comment'>--</span>
-<a name="line-14"></a><span class='comment'>-- Version : $Id: XmlState.hs,v 1.3 2005/05/27 13:15:23 hxml Exp $</span>
-<a name="line-15"></a>
-<a name="line-16"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-17"></a>    <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-18"></a>    <span class='layout'>)</span>
-<a name="line-19"></a><span class='keyword'>where</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span><span class='varop'>.</span><span class='conid'>MonadStateIO</span> <span class='keyword'>as</span> <span class='conid'>MonadStateIO</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class='comment'>-- |</span>
-<a name="line-31"></a><span class='comment'>-- The internal system state consists of a list of name-value pairs</span>
-<a name="line-32"></a><span class='comment'>-- of type @(String, XmlTrees)@, so arbitrary lists of trees can be stored.</span>
-<a name="line-33"></a><span class='comment'>-- For options, often only strings are used as values, so a set of access</span>
-<a name="line-34"></a><span class='comment'>-- functions with string values is available</span>
-<a name="line-35"></a><span class='comment'>-- The error handling method can be controlled by an error handler filter,</span>
-<a name="line-36"></a><span class='comment'>-- the default filter issues the errors on stderr</span>
-<a name="line-37"></a>
-<a name="line-38"></a><a name="SysState"></a><span class='keyword'>data</span> <span class='conid'>SysState</span>			<span class='keyglyph'>=</span> <span class='conid'>SysState</span> <span class='layout'>{</span> <span class='varid'>sysStateAttrs</span>		<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>SysStateAttrs</span>
-<a name="line-39"></a>					   <span class='layout'>,</span> <span class='varid'>sysStateErrorHandler</span>	<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='layout'>(</span><span class='conid'>XmlStateFilter</span> <span class='conid'>()</span><span class='layout'>)</span>
-<a name="line-40"></a>					   <span class='layout'>}</span>
-<a name="line-41"></a>
-<a name="line-42"></a><a name="SysStateAttrs"></a><span class='keyword'>type</span> <span class='conid'>SysStateAttrs</span>		<span class='keyglyph'>=</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span>
-<a name="line-43"></a>
-<a name="line-44"></a><span class='comment'>-- |</span>
-<a name="line-45"></a><span class='comment'>-- The State has a system and a user part</span>
-<a name="line-46"></a><span class='comment'>-- the user state is a type parameter</span>
-<a name="line-47"></a>
-<a name="line-48"></a><a name="XmlState"></a><span class='keyword'>data</span> <span class='conid'>XmlState</span> <span class='varid'>state</span>		<span class='keyglyph'>=</span> <span class='conid'>XmlState</span> <span class='layout'>{</span> <span class='varid'>sysState</span>	<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>SysState</span>
-<a name="line-49"></a>					   <span class='layout'>,</span> <span class='varid'>userState</span>	<span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='varid'>state</span>
-<a name="line-50"></a>					   <span class='layout'>}</span>
-<a name="line-51"></a>
-<a name="line-52"></a><span class='comment'>-- |</span>
-<a name="line-53"></a><span class='comment'>-- The monad type for commands. It is an instance of "StateIO" from the</span>
-<a name="line-54"></a><span class='comment'>-- general module "Control.Monad.MonadStateIO".</span>
-<a name="line-55"></a>
-<a name="line-56"></a><a name="XState"></a><span class='keyword'>type</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>res</span>		<span class='keyglyph'>=</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='conid'>StateIO</span> <span class='layout'>(</span><span class='conid'>XmlState</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='varid'>res</span>
-<a name="line-57"></a>
-<a name="line-58"></a><span class='comment'>-- |</span>
-<a name="line-59"></a><span class='comment'>-- The "XmlFilter" type for filters working on a state</span>
-<a name="line-60"></a>
-<a name="line-61"></a><a name="XmlStateFilter"></a><span class='keyword'>type</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>	<span class='keyglyph'>=</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>XmlTrees</span>
-<a name="line-62"></a>
-<a name="line-63"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-64"></a><span class='comment'>--</span>
-<a name="line-65"></a><span class='comment'>-- user defined state</span>
-<a name="line-66"></a><span class='comment'>-- access functions</span>
-<a name="line-67"></a>
-<a name="line-68"></a><span class='comment'>-- |</span>
-<a name="line-69"></a><span class='comment'>-- change the user state</span>
-<a name="line-70"></a><span class='comment'>--</span>
-<a name="line-71"></a><span class='comment'>--    * 1.parameter fct :  the user state change function</span>
-<a name="line-72"></a><span class='comment'>--</span>
-<a name="line-73"></a><span class='comment'>--    - returns : the new state</span>
-<a name="line-74"></a>
-<a name="line-75"></a><a name="changeState"></a><span class='definition'>changeState</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>state</span>
-<a name="line-76"></a><span class='definition'>changeState</span> <span class='varid'>f</span>
-<a name="line-77"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-78"></a>      <span class='varid'>ns</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='varid'>changeState</span> <span class='varid'>f'</span>
-<a name="line-79"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>userState</span> <span class='varid'>ns</span><span class='layout'>)</span>
-<a name="line-80"></a>      <span class='keyword'>where</span>
-<a name="line-81"></a>      <span class='varid'>f'</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>userState</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>userState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-82"></a>
-<a name="line-83"></a><span class='comment'>-- |</span>
-<a name="line-84"></a><span class='comment'>-- set the user state.</span>
-<a name="line-85"></a><span class='comment'>--</span>
-<a name="line-86"></a><span class='comment'>--    * 1.parameter s :  the new state</span>
-<a name="line-87"></a><span class='comment'>--</span>
-<a name="line-88"></a><span class='comment'>--    - returns : the new state</span>
-<a name="line-89"></a>
-<a name="line-90"></a><a name="setState"></a><span class='definition'>setState</span>	<span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>state</span>
-<a name="line-91"></a><span class='definition'>setState</span> <span class='varid'>s</span>
-<a name="line-92"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>)</span>
-<a name="line-93"></a>
-<a name="line-94"></a><span class='comment'>-- |</span>
-<a name="line-95"></a><span class='comment'>-- read the user state</span>
-<a name="line-96"></a><span class='comment'>--</span>
-<a name="line-97"></a><span class='comment'>--    - returns : the current state</span>
-<a name="line-98"></a>
-<a name="line-99"></a><a name="getState"></a><span class='definition'>getState</span>	<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>state</span>
-<a name="line-100"></a><span class='definition'>getState</span>
-<a name="line-101"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='varid'>id</span>
-<a name="line-102"></a>
-<a name="line-103"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-104"></a>
-<a name="line-105"></a><span class='comment'>-- |</span>
-<a name="line-106"></a><span class='comment'>-- change the system part of the state.</span>
-<a name="line-107"></a><span class='comment'>--</span>
-<a name="line-108"></a><span class='comment'>-- see also : 'changeState'</span>
-<a name="line-109"></a>
-<a name="line-110"></a><a name="changeSysState"></a><span class='definition'>changeSysState</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>SysState</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>SysState</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>SysState</span>
-<a name="line-111"></a><span class='definition'>changeSysState</span> <span class='varid'>f</span>
-<a name="line-112"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-113"></a>      <span class='varid'>ns</span> <span class='keyglyph'>&lt;-</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='varid'>changeState</span> <span class='varid'>f'</span>
-<a name="line-114"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sysState</span> <span class='varid'>ns</span><span class='layout'>)</span>
-<a name="line-115"></a>      <span class='keyword'>where</span>
-<a name="line-116"></a>      <span class='varid'>f'</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>sysState</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>sysState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-117"></a>
-<a name="line-118"></a><span class='comment'>-- |</span>
-<a name="line-119"></a><span class='comment'>-- set the system part of the state.</span>
-<a name="line-120"></a><span class='comment'>--</span>
-<a name="line-121"></a><span class='comment'>-- see also : 'setState'</span>
-<a name="line-122"></a>
-<a name="line-123"></a><a name="setSysState"></a><span class='definition'>setSysState</span>		<span class='keyglyph'>::</span> <span class='conid'>SysState</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>SysState</span>
-<a name="line-124"></a><span class='definition'>setSysState</span> <span class='varid'>s</span>
-<a name="line-125"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>)</span>
-<a name="line-126"></a>
-<a name="line-127"></a><span class='comment'>-- |</span>
-<a name="line-128"></a><span class='comment'>-- read the system part of the state.</span>
-<a name="line-129"></a><span class='comment'>--</span>
-<a name="line-130"></a><span class='comment'>-- see also : 'getState'</span>
-<a name="line-131"></a>
-<a name="line-132"></a><a name="getSysState"></a><span class='definition'>getSysState</span>		<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>SysState</span>
-<a name="line-133"></a><span class='definition'>getSysState</span>
-<a name="line-134"></a>    <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='varid'>id</span>
-<a name="line-135"></a>
-<a name="line-136"></a><span class='comment'>-- |</span>
-<a name="line-137"></a><span class='comment'>-- the initial system state</span>
-<a name="line-138"></a><span class='comment'>--</span>
-<a name="line-139"></a><span class='comment'>-- an empty list of attribute value pairs</span>
-<a name="line-140"></a>
-<a name="line-141"></a><a name="initialSysState"></a><span class='definition'>initialSysState</span>		<span class='keyglyph'>::</span> <span class='conid'>SysState</span>
-<a name="line-142"></a><span class='definition'>initialSysState</span>
-<a name="line-143"></a>    <span class='keyglyph'>=</span> <span class='conid'>SysState</span> <span class='layout'>{</span> <span class='varid'>sysStateAttrs</span>        <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-144"></a>	       <span class='layout'>,</span> <span class='varid'>sysStateErrorHandler</span> <span class='keyglyph'>=</span> <span class='varid'>errorMsgToStderr</span>
-<a name="line-145"></a>	       <span class='layout'>}</span>
-<a name="line-146"></a>
-<a name="line-147"></a><span class='comment'>-- |</span>
-<a name="line-148"></a><span class='comment'>-- change the attributes in the system state</span>
-<a name="line-149"></a>
-<a name="line-150"></a><a name="changeSysStateAttrs"></a><span class='definition'>changeSysStateAttrs</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>SysStateAttrs</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>SysStateAttrs</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>SysState</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>SysState</span><span class='layout'>)</span>
-<a name="line-151"></a><span class='definition'>changeSysStateAttrs</span> <span class='varid'>cf</span> <span class='varid'>sstate</span>
-<a name="line-152"></a>    <span class='keyglyph'>=</span> <span class='varid'>sstate</span> <span class='layout'>{</span> <span class='varid'>sysStateAttrs</span> <span class='keyglyph'>=</span> <span class='varid'>cf</span> <span class='layout'>(</span><span class='varid'>sysStateAttrs</span> <span class='varid'>sstate</span><span class='layout'>)</span> <span class='layout'>}</span>
-<a name="line-153"></a>
-<a name="line-154"></a>
-<a name="line-155"></a><span class='comment'>-- |</span>
-<a name="line-156"></a><span class='comment'>-- set the error message handler</span>
-<a name="line-157"></a>
-<a name="line-158"></a><a name="setSysErrorHandler"></a><span class='definition'>setSysErrorHandler</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='conid'>()</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-159"></a><span class='definition'>setSysErrorHandler</span> <span class='varid'>ehf</span>
-<a name="line-160"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-161"></a>      <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>sysStateErrorHandler</span> <span class='keyglyph'>=</span> <span class='varid'>ehf</span> <span class='layout'>}</span><span class='layout'>)</span>
-<a name="line-162"></a>      <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-163"></a>
-<a name="line-164"></a><span class='comment'>-- |</span>
-<a name="line-165"></a><span class='comment'>-- get the error handler</span>
-<a name="line-166"></a>
-<a name="line-167"></a><a name="getSysErrorHandler"></a><span class='definition'>getSysErrorHandler</span>		<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='layout'>(</span><span class='conid'>XmlStateFilter</span> <span class='conid'>()</span><span class='layout'>)</span>
-<a name="line-168"></a><span class='definition'>getSysErrorHandler</span>
-<a name="line-169"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-170"></a>      <span class='varid'>s</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysState</span>
-<a name="line-171"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sysStateErrorHandler</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-172"></a>
-<a name="line-173"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-174"></a>
-<a name="line-175"></a><span class='comment'>-- |</span>
-<a name="line-176"></a><span class='comment'>-- set or change a single system parameter.</span>
-<a name="line-177"></a><span class='comment'>--</span>
-<a name="line-178"></a><span class='comment'>--    * 1.parameter name :  the name of the parameter</span>
-<a name="line-179"></a><span class='comment'>--</span>
-<a name="line-180"></a><span class='comment'>--    - 2.parameter value :  the list of associated trees</span>
-<a name="line-181"></a><span class='comment'>--</span>
-<a name="line-182"></a><span class='comment'>--    - returns : nothing</span>
-<a name="line-183"></a><span class='comment'>--</span>
-<a name="line-184"></a><span class='comment'>-- see also : 'setSysParam', 'setSysParamInt'</span>
-<a name="line-185"></a>
-<a name="line-186"></a><a name="setSysParamTree"></a><span class='definition'>setSysParamTree</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-187"></a><span class='definition'>setSysParamTree</span> <span class='varid'>name</span> <span class='varid'>val</span>
-<a name="line-188"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-189"></a>      <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>changeSysStateAttrs</span> <span class='layout'>(</span><span class='varid'>addEntry</span> <span class='varid'>name</span> <span class='varid'>val</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-190"></a>      <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-191"></a>
-<a name="line-192"></a><span class='comment'>-- |</span>
-<a name="line-193"></a><span class='comment'>-- set or change a single system parameter of type string.</span>
-<a name="line-194"></a><span class='comment'>--</span>
-<a name="line-195"></a><span class='comment'>--    * 1.parameter name :  the name of the parameter</span>
-<a name="line-196"></a><span class='comment'>--</span>
-<a name="line-197"></a><span class='comment'>--    - 2.parameter value :  the (new) string value</span>
-<a name="line-198"></a><span class='comment'>--</span>
-<a name="line-199"></a><span class='comment'>--    - returns : nothing</span>
-<a name="line-200"></a><span class='comment'>--</span>
-<a name="line-201"></a><span class='comment'>-- see also : 'setSysParamTree', setSysParamInt</span>
-<a name="line-202"></a>
-<a name="line-203"></a><a name="setSysParam"></a><span class='definition'>setSysParam</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-204"></a><span class='definition'>setSysParam</span> <span class='varid'>name</span> <span class='varid'>val</span>
-<a name="line-205"></a>    <span class='keyglyph'>=</span> <span class='varid'>setSysParamTree</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>val</span><span class='layout'>)</span>
-<a name="line-206"></a>
-<a name="line-207"></a><span class='comment'>-- |</span>
-<a name="line-208"></a><span class='comment'>-- set or change a single integer type system parameter</span>
-<a name="line-209"></a><span class='comment'>--</span>
-<a name="line-210"></a><span class='comment'>-- see also : 'setSysParam'</span>
-<a name="line-211"></a>
-<a name="line-212"></a><a name="setSysParamInt"></a><span class='definition'>setSysParamInt</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-213"></a><span class='definition'>setSysParamInt</span> <span class='varid'>name</span> <span class='varid'>val</span>	<span class='keyglyph'>=</span> <span class='varid'>setSysParam</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>val</span><span class='layout'>)</span>
-<a name="line-214"></a>
-<a name="line-215"></a><span class='comment'>-- |</span>
-<a name="line-216"></a><span class='comment'>-- add (or change) all attributes of the document root to the system state</span>
-<a name="line-217"></a><span class='comment'>--     - returns : this</span>
-<a name="line-218"></a>
-<a name="line-219"></a><a name="setSystemParams"></a><span class='definition'>setSystemParams</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-220"></a><span class='definition'>setSystemParams</span> <span class='varid'>t</span>
-<a name="line-221"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-222"></a>      <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>changeSysStateAttrs</span> <span class='layout'>(</span><span class='varid'>addEntries</span> <span class='layout'>(</span><span class='varid'>toTreel</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>t</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-223"></a>      <span class='varid'>thisM</span> <span class='varid'>t</span>
-<a name="line-224"></a>
-<a name="line-225"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-226"></a>
-<a name="line-227"></a><span class='comment'>-- |</span>
-<a name="line-228"></a><span class='comment'>-- read a system parameter</span>
-<a name="line-229"></a><span class='comment'>--</span>
-<a name="line-230"></a><span class='comment'>--    * 1.parameter name :  the name of the parameter</span>
-<a name="line-231"></a><span class='comment'>--</span>
-<a name="line-232"></a><span class='comment'>--    - returns : the list of tres associated with the key, or the empty list for unknown parameters</span>
-<a name="line-233"></a>
-<a name="line-234"></a><a name="getSysParamTree"></a><span class='definition'>getSysParamTree</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>XmlTrees</span>
-<a name="line-235"></a><span class='definition'>getSysParamTree</span> <span class='varid'>name</span>
-<a name="line-236"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-237"></a>      <span class='varid'>s</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysState</span>
-<a name="line-238"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>sysStateAttrs</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-239"></a>
-<a name="line-240"></a><span class='comment'>-- |</span>
-<a name="line-241"></a><span class='comment'>-- read a system string parameter</span>
-<a name="line-242"></a><span class='comment'>--</span>
-<a name="line-243"></a><span class='comment'>--    * 1.parameter name :  the name of the parameter</span>
-<a name="line-244"></a><span class='comment'>--</span>
-<a name="line-245"></a><span class='comment'>--    - returns : the value, or the empty string for unknown parameters</span>
-<a name="line-246"></a>
-<a name="line-247"></a><a name="getSysParam"></a><span class='definition'>getSysParam</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>
-<a name="line-248"></a><span class='definition'>getSysParam</span> <span class='varid'>name</span>
-<a name="line-249"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-250"></a>      <span class='varid'>ts</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParamTree</span> <span class='varid'>name</span>
-<a name="line-251"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>ts</span><span class='layout'>)</span>
-<a name="line-252"></a>
-<a name="line-253"></a><span class='comment'>-- |</span>
-<a name="line-254"></a><span class='comment'>-- read a system parameter or return a default value</span>
-<a name="line-255"></a><span class='comment'>--</span>
-<a name="line-256"></a><span class='comment'>--    * 1.parameter name :  the name of the parameter</span>
-<a name="line-257"></a><span class='comment'>--</span>
-<a name="line-258"></a><span class='comment'>--    - 2.parameter default :  the default value</span>
-<a name="line-259"></a><span class='comment'>--</span>
-<a name="line-260"></a><span class='comment'>--    - returns : the value if found, else the default</span>
-<a name="line-261"></a>
-<a name="line-262"></a><a name="getSysParamWithDefault"></a><span class='definition'>getSysParamWithDefault</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>
-<a name="line-263"></a><span class='definition'>getSysParamWithDefault</span> <span class='varid'>name</span> <span class='varid'>def</span>
-<a name="line-264"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-265"></a>      <span class='varid'>val</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParam</span> <span class='varid'>name</span>
-<a name="line-266"></a>      <span class='varid'>return</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>val</span>
-<a name="line-267"></a>	       <span class='keyword'>then</span> <span class='varid'>def</span>
-<a name="line-268"></a>	       <span class='keyword'>else</span> <span class='varid'>val</span>
-<a name="line-269"></a>	     <span class='layout'>)</span>
-<a name="line-270"></a>
-<a name="line-271"></a><span class='comment'>-- |</span>
-<a name="line-272"></a><span class='comment'>-- read an integer system parameter</span>
-<a name="line-273"></a><span class='comment'>--</span>
-<a name="line-274"></a><span class='comment'>--    * 1.parameter name : </span>
-<a name="line-275"></a><span class='comment'>--</span>
-<a name="line-276"></a><span class='comment'>--    - 2.parameter default : </span>
-<a name="line-277"></a><span class='comment'>--</span>
-<a name="line-278"></a><span class='comment'>-- see also : 'getSysParamWithDefault'</span>
-<a name="line-279"></a>
-<a name="line-280"></a><a name="getSysParamInt"></a><span class='definition'>getSysParamInt</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>Int</span>
-<a name="line-281"></a><span class='definition'>getSysParamInt</span> <span class='varid'>var</span> <span class='varid'>def</span>
-<a name="line-282"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-283"></a>      <span class='varid'>val</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParamWithDefault</span> <span class='varid'>var</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>def</span><span class='layout'>)</span>
-<a name="line-284"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>val</span><span class='layout'>)</span>
-<a name="line-285"></a>
-<a name="line-286"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-287"></a>
-<a name="line-288"></a><span class='comment'>-- |</span>
-<a name="line-289"></a><span class='comment'>-- exec a XState command with initial state.</span>
-<a name="line-290"></a><span class='comment'>--</span>
-<a name="line-291"></a><span class='comment'>--    * 1.parameter initalState :  the inital user state</span>
-<a name="line-292"></a><span class='comment'>--</span>
-<a name="line-293"></a><span class='comment'>--    - 2.parameter cmd :  the command</span>
-<a name="line-294"></a><span class='comment'>--</span>
-<a name="line-295"></a><span class='comment'>--    - returns : the i\/o command with result and user state</span>
-<a name="line-296"></a>
-<a name="line-297"></a><a name="run0"></a><span class='definition'>run0</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlState</span> <span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='conid'>XmlState</span> <span class='varid'>state</span><span class='layout'>)</span>
-<a name="line-298"></a><span class='definition'>run0</span> <span class='varid'>initialState</span> <span class='layout'>(</span><span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='conid'>STIO</span> <span class='varid'>cmd</span><span class='layout'>)</span>
-<a name="line-299"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-300"></a>      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>finalState</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>cmd</span> <span class='varid'>initialState</span>
-<a name="line-301"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>finalState</span><span class='layout'>)</span>
-<a name="line-302"></a>
-<a name="line-303"></a><span class='comment'>-- |</span>
-<a name="line-304"></a><span class='comment'>-- exec a XState command with initial user state.</span>
-<a name="line-305"></a><span class='comment'>-- ignore final user state.</span>
-<a name="line-306"></a><span class='comment'>-- like run0, but ignore the resulting user state</span>
-<a name="line-307"></a>
-<a name="line-308"></a><a name="run"></a><span class='definition'>run</span>		<span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='varid'>res</span>
-<a name="line-309"></a><span class='definition'>run</span> <span class='varid'>initialUserState</span> <span class='varid'>cmd</span>
-<a name="line-310"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-311"></a>      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='sel'>_finalState</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>run0</span> <span class='layout'>(</span><span class='conid'>XmlState</span> <span class='varid'>initialSysState</span> <span class='varid'>initialUserState</span><span class='layout'>)</span> <span class='varid'>cmd</span>
-<a name="line-312"></a>      <span class='varid'>return</span> <span class='varid'>res</span>
-<a name="line-313"></a>
-<a name="line-314"></a><span class='comment'>-- |</span>
-<a name="line-315"></a><span class='comment'>-- exec a XState command in th IO monad.</span>
-<a name="line-316"></a><span class='comment'>-- like run with the empty state ().</span>
-<a name="line-317"></a>
-<a name="line-318"></a><a name="run'"></a><span class='definition'>run'</span>		<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='conid'>()</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='varid'>res</span>
-<a name="line-319"></a><span class='definition'>run'</span>		<span class='keyglyph'>=</span> <span class='varid'>run</span> <span class='conid'>()</span>
-<a name="line-320"></a>
-<a name="line-321"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-322"></a>
-<a name="line-323"></a><span class='comment'>-- |</span>
-<a name="line-324"></a><span class='comment'>-- run a command in a new user state.</span>
-<a name="line-325"></a><span class='comment'>-- chain the system state part,</span>
-<a name="line-326"></a><span class='comment'>-- init new system state with the current one, run the command and</span>
-<a name="line-327"></a><span class='comment'>-- update the old system state with the resulting new system state</span>
-<a name="line-328"></a><span class='comment'>--</span>
-<a name="line-329"></a><span class='comment'>--    * 1.parameter initialUserState :  the initial user state</span>
-<a name="line-330"></a><span class='comment'>--</span>
-<a name="line-331"></a><span class='comment'>--    - 2.parameter cmd :  the command</span>
-<a name="line-332"></a><span class='comment'>--</span>
-<a name="line-333"></a><span class='comment'>--    - returns : the result of executing cmd and the final state</span>
-<a name="line-334"></a>
-<a name="line-335"></a><a name="chain'"></a><span class='definition'>chain'</span>		<span class='keyglyph'>::</span> <span class='varid'>state1</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state1</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state0</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>state1</span><span class='layout'>)</span>
-<a name="line-336"></a><span class='definition'>chain'</span> <span class='varid'>initialUserState1</span> <span class='varid'>cmd1</span>
-<a name="line-337"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-338"></a>      <span class='varid'>sysState0</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysState</span>
-<a name="line-339"></a>      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>finalState1</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>run0</span> <span class='layout'>(</span><span class='conid'>XmlState</span> <span class='varid'>sysState0</span> <span class='varid'>initialUserState1</span><span class='layout'>)</span> <span class='varid'>cmd1</span>
-<a name="line-340"></a>      <span class='varid'>setSysState</span> <span class='layout'>(</span><span class='varid'>sysState</span> <span class='varid'>finalState1</span><span class='layout'>)</span>
-<a name="line-341"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>userState</span> <span class='varid'>finalState1</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-342"></a>
-<a name="line-343"></a><span class='comment'>-- |</span>
-<a name="line-344"></a><span class='comment'>-- like chain' but forget the final user state</span>
-<a name="line-345"></a><span class='comment'>--</span>
-<a name="line-346"></a><span class='comment'>--    * 1.parameter initialUserState :  the initial user state</span>
-<a name="line-347"></a><span class='comment'>--</span>
-<a name="line-348"></a><span class='comment'>--    - 2.parameter cmd :  the command</span>
-<a name="line-349"></a><span class='comment'>--</span>
-<a name="line-350"></a><span class='comment'>--    - returns : only the result of executing cmd</span>
-<a name="line-351"></a>
-<a name="line-352"></a><a name="chain"></a><span class='definition'>chain</span>		<span class='keyglyph'>::</span> <span class='varid'>state1</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state1</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state0</span> <span class='varid'>res</span>
-<a name="line-353"></a><span class='definition'>chain</span> <span class='varid'>initialUserState1</span> <span class='varid'>cmd1</span>
-<a name="line-354"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-355"></a>      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>chain'</span> <span class='varid'>initialUserState1</span> <span class='varid'>cmd1</span>
-<a name="line-356"></a>      <span class='varid'>return</span> <span class='varid'>res</span>
-<a name="line-357"></a>
-<a name="line-358"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-359"></a><span class='comment'>--</span>
-<a name="line-360"></a><span class='comment'>-- lift functions</span>
-<a name="line-361"></a>
-<a name="line-362"></a><span class='comment'>-- |</span>
-<a name="line-363"></a><span class='comment'>-- lift a XmlFilter to a XmlStateFilter filter</span>
-<a name="line-364"></a><span class='comment'>-- issue all error nodes as error messages</span>
-<a name="line-365"></a><span class='comment'>-- and remove the error nodes from the result</span>
-<a name="line-366"></a><span class='comment'>--</span>
-<a name="line-367"></a><span class='comment'>--    * 1.parameter f :  the filter</span>
-<a name="line-368"></a><span class='comment'>--</span>
-<a name="line-369"></a><span class='comment'>--    - returns : the filter running in the state monad</span>
-<a name="line-370"></a><span class='comment'>--</span>
-<a name="line-371"></a><span class='comment'>--		  all errors are filtered from the result and issued on stderr</span>
-<a name="line-372"></a>
-<a name="line-373"></a><a name="liftF"></a><span class='definition'>liftF</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-374"></a><span class='definition'>liftF</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>f</span> <span class='varop'>.&gt;&gt;</span> <span class='varid'>issueError</span>
-<a name="line-375"></a>
-<a name="line-376"></a><span class='comment'>-- |</span>
-<a name="line-377"></a><span class='comment'>-- lift an I\/O command</span>
-<a name="line-378"></a><span class='comment'>--</span>
-<a name="line-379"></a><span class='comment'>--    * 1.parameter cmd :  the i\/o command</span>
-<a name="line-380"></a><span class='comment'>--</span>
-<a name="line-381"></a><span class='comment'>--    - returns : the i\/o command lifted to the XML state monad</span>
-<a name="line-382"></a>
-<a name="line-383"></a><a name="io"></a><span class='definition'>io</span>		<span class='keyglyph'>::</span> <span class='conid'>IO</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>a</span>
-<a name="line-384"></a><span class='definition'>io</span>		<span class='keyglyph'>=</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='varid'>io</span>
-<a name="line-385"></a>
-<a name="line-386"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-387"></a><span class='comment'>--</span>
-<a name="line-388"></a>
-<a name="line-389"></a><span class='comment'>-- |</span>
-<a name="line-390"></a><span class='comment'>-- set the trace level.</span>
-<a name="line-391"></a><span class='comment'>--</span>
-<a name="line-392"></a><span class='comment'>-- convention:</span>
-<a name="line-393"></a><span class='comment'>--</span>
-<a name="line-394"></a><span class='comment'>-- 0: no trace output (default)</span>
-<a name="line-395"></a><span class='comment'>--</span>
-<a name="line-396"></a><span class='comment'>-- 1: trace important computation steps, e.g. accessing a document</span>
-<a name="line-397"></a><span class='comment'>--</span>
-<a name="line-398"></a><span class='comment'>-- 2: trace small computation steps</span>
-<a name="line-399"></a><span class='comment'>--</span>
-<a name="line-400"></a><span class='comment'>-- 3: output an intermediate result XmlTree in XML source format</span>
-<a name="line-401"></a><span class='comment'>--</span>
-<a name="line-402"></a><span class='comment'>-- 4: output an intermediate result XmlTree in tree representation</span>
-<a name="line-403"></a><span class='comment'>--</span>
-<a name="line-404"></a><span class='comment'>--    * 1.parameter level :  the trace level</span>
-<a name="line-405"></a><span class='comment'>--</span>
-<a name="line-406"></a><span class='comment'>--    - returns : nothing</span>
-<a name="line-407"></a>
-<a name="line-408"></a><a name="setTraceLevel"></a><span class='definition'>setTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-409"></a><span class='definition'>setTraceLevel</span> <span class='varid'>l</span>	<span class='keyglyph'>=</span> <span class='varid'>setSysParamInt</span> <span class='varid'>a_trace</span> <span class='varid'>l</span>
-<a name="line-410"></a>
-<a name="line-411"></a><span class='comment'>-- |</span>
-<a name="line-412"></a><span class='comment'>-- get the current trace level.</span>
-<a name="line-413"></a><span class='comment'>--</span>
-<a name="line-414"></a><span class='comment'>--    - returns : the current trace level</span>
-<a name="line-415"></a>
-<a name="line-416"></a><a name="getTraceLevel"></a><span class='definition'>getTraceLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>Int</span>
-<a name="line-417"></a><span class='definition'>getTraceLevel</span>	<span class='keyglyph'>=</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_trace</span> <span class='num'>0</span>
-<a name="line-418"></a>
-<a name="line-419"></a><span class='comment'>-- |</span>
-<a name="line-420"></a><span class='comment'>-- trace output for arbitray commands.</span>
-<a name="line-421"></a><span class='comment'>--</span>
-<a name="line-422"></a><span class='comment'>--    * 1.parameter level :  the trace level,</span>
-<a name="line-423"></a><span class='comment'>--			  for which the command will be execuded</span>
-<a name="line-424"></a><span class='comment'>--			  if level \&lt;= current trace level</span>
-<a name="line-425"></a><span class='comment'>--</span>
-<a name="line-426"></a><span class='comment'>--    - 2.parameter cmd :  the command to be executed</span>
-<a name="line-427"></a><span class='comment'>--</span>
-<a name="line-428"></a><span class='comment'>--    - returns : nothing</span>
-<a name="line-429"></a>
-<a name="line-430"></a><a name="traceCmd"></a><span class='definition'>traceCmd</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-431"></a><span class='definition'>traceCmd</span> <span class='varid'>level</span> <span class='varid'>cmd</span>
-<a name="line-432"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-433"></a>      <span class='varid'>trcLevel</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getTraceLevel</span>
-<a name="line-434"></a>      <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'>&lt;=</span> <span class='varid'>trcLevel</span>
-<a name="line-435"></a>        <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-436"></a>	     <span class='keyword'>_</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>cmd</span>
-<a name="line-437"></a>	     <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-438"></a>        <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-439"></a>
-<a name="line-440"></a><span class='comment'>-- |</span>
-<a name="line-441"></a><span class='comment'>-- trace output function for simple text.</span>
-<a name="line-442"></a><span class='comment'>--</span>
-<a name="line-443"></a><span class='comment'>--    * 1.parameter level :  like in traceCmd</span>
-<a name="line-444"></a><span class='comment'>--</span>
-<a name="line-445"></a><span class='comment'>--    - 2.parameter str :  the test</span>
-<a name="line-446"></a><span class='comment'>--</span>
-<a name="line-447"></a><span class='comment'>--    - returns : nothing</span>
-<a name="line-448"></a>
-<a name="line-449"></a><a name="trace"></a><span class='definition'>trace</span>		<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-450"></a><span class='definition'>trace</span> <span class='varid'>level</span> <span class='varid'>str</span>
-<a name="line-451"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceCmd</span> <span class='varid'>level</span>
-<a name="line-452"></a>      <span class='varop'>$</span> <span class='keyword'>do</span>
-<a name="line-453"></a>	<span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='str'>"-- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>") "</span> <span class='varop'>++</span> <span class='varid'>str</span><span class='layout'>)</span>
-<a name="line-454"></a>
-<a name="line-455"></a><span class='comment'>-- |</span>
-<a name="line-456"></a><span class='comment'>-- trace output of the user part of the program state.</span>
-<a name="line-457"></a><span class='comment'>--</span>
-<a name="line-458"></a><span class='comment'>--    * 1.parameter level :  like in traceCmd</span>
-<a name="line-459"></a><span class='comment'>--</span>
-<a name="line-460"></a><span class='comment'>--    - 2.parameter showFct :  the toString function</span>
-<a name="line-461"></a><span class='comment'>--</span>
-<a name="line-462"></a><span class='comment'>--    - returns : nothing</span>
-<a name="line-463"></a>
-<a name="line-464"></a><a name="traceState"></a><span class='definition'>traceState</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-465"></a><span class='definition'>traceState</span> <span class='varid'>level</span> <span class='varid'>fct</span>
-<a name="line-466"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceCmd</span> <span class='varid'>level</span>
-<a name="line-467"></a>      <span class='varop'>$</span> <span class='keyword'>do</span>
-<a name="line-468"></a>	<span class='varid'>s</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getState</span>
-<a name="line-469"></a>	<span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='varid'>fct</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-470"></a>
-<a name="line-471"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-472"></a><span class='comment'>--</span>
-<a name="line-473"></a><span class='comment'>-- error functions</span>
-<a name="line-474"></a>
-<a name="line-475"></a><span class='comment'>-- |</span>
-<a name="line-476"></a><span class='comment'>-- filter to reset the state attribute 'a_status'</span>
-<a name="line-477"></a><span class='comment'>--    - returns : this</span>
-<a name="line-478"></a>
-<a name="line-479"></a><a name="clearStatus"></a><span class='definition'>clearStatus</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-480"></a><span class='definition'>clearStatus</span> <span class='varid'>t</span>
-<a name="line-481"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-482"></a>      <span class='varid'>setSysParamInt</span> <span class='varid'>a_status</span> <span class='varid'>c_ok</span>
-<a name="line-483"></a>      <span class='varid'>thisM</span> <span class='varid'>t</span>
-<a name="line-484"></a>
-<a name="line-485"></a><span class='comment'>-- |</span>
-<a name="line-486"></a><span class='comment'>-- report an error message.</span>
-<a name="line-487"></a><span class='comment'>--</span>
-<a name="line-488"></a><span class='comment'>--    - returns : if the input tree n represents an error, @res = []@</span>
-<a name="line-489"></a><span class='comment'>--		  and the error is processed by the errror handler filter (default: error is issued on stderr)</span>
-<a name="line-490"></a><span class='comment'>--		  else @res = [n]@</span>
-<a name="line-491"></a><span class='comment'>--</span>
-<a name="line-492"></a><span class='comment'>-- see also : 'issueErr'</span>
-<a name="line-493"></a>
-<a name="line-494"></a><a name="issueError"></a><span class='definition'>issueError</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-495"></a><span class='definition'>issueError</span>
-<a name="line-496"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>setErrorMsgLevel</span> <span class='varop'>.&gt;&gt;</span> <span class='varid'>errorMsgHandler</span> <span class='varop'>.&gt;&gt;</span> <span class='varid'>noneM</span><span class='layout'>)</span>
-<a name="line-497"></a>      <span class='varop'>`whenM`</span>
-<a name="line-498"></a>      <span class='varid'>isXError</span>
-<a name="line-499"></a>
-<a name="line-500"></a><a name="errorMsgHandler"></a><span class='definition'>errorMsgHandler</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-501"></a><span class='definition'>errorMsgHandler</span>
-<a name="line-502"></a>    <span class='keyglyph'>=</span> <span class='varid'>performAction</span>
-<a name="line-503"></a>      <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>chain'</span> <span class='conid'>()</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-504"></a>			   <span class='varid'>ehf</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysErrorHandler</span>
-<a name="line-505"></a>			   <span class='varid'>ehf</span> <span class='varid'>t</span>
-<a name="line-506"></a>			   <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-507"></a>			 <span class='layout'>)</span>
-<a name="line-508"></a>      <span class='layout'>)</span>
-<a name="line-509"></a>
-<a name="line-510"></a><span class='comment'>-- |</span>
-<a name="line-511"></a><span class='comment'>-- set the error level in system state</span>
-<a name="line-512"></a>
-<a name="line-513"></a><a name="setErrorMsgLevel"></a><span class='definition'>setErrorMsgLevel</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-514"></a><span class='definition'>setErrorMsgLevel</span>
-<a name="line-515"></a>    <span class='keyglyph'>=</span> <span class='varid'>performAction</span>
-<a name="line-516"></a>      <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>level</span> <span class='sel'>_str</span><span class='layout'>)</span> <span class='sel'>_cs</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-517"></a>	<span class='keyword'>do</span>
-<a name="line-518"></a>	<span class='varid'>errLevel</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_status</span> <span class='num'>0</span>
-<a name="line-519"></a>	<span class='varid'>setSysParamInt</span> <span class='varid'>a_status</span> <span class='layout'>(</span><span class='varid'>max</span> <span class='varid'>errLevel</span> <span class='varid'>level</span><span class='layout'>)</span>
-<a name="line-520"></a>      <span class='layout'>)</span>
-<a name="line-521"></a>
-<a name="line-522"></a><span class='comment'>-- |</span>
-<a name="line-523"></a><span class='comment'>-- default error handler for writing errors to stderr</span>
-<a name="line-524"></a>
-<a name="line-525"></a><a name="errorMsgToStderr"></a><span class='definition'>errorMsgToStderr</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-526"></a><span class='definition'>errorMsgToStderr</span>
-<a name="line-527"></a>    <span class='keyglyph'>=</span> <span class='varid'>performAction</span>
-<a name="line-528"></a>      <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>level</span> <span class='varid'>str</span><span class='layout'>)</span> <span class='sel'>_cs</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-529"></a>	<span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>errClass</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>": "</span> <span class='varop'>++</span> <span class='varid'>str</span><span class='layout'>)</span>
-<a name="line-530"></a>      <span class='layout'>)</span>
-<a name="line-531"></a>
-<a name="line-532"></a><span class='comment'>-- |</span>
-<a name="line-533"></a><span class='comment'>-- error message handler for collecting all error messages</span>
-<a name="line-534"></a><span class='comment'>-- all messages are stored under attribute 'a_error_log'</span>
-<a name="line-535"></a><span class='comment'>-- they can be read with @getSysParamTree a_error_log@ or by</span>
-<a name="line-536"></a><span class='comment'>-- applying the filter 'getErrorMsg' to the root node</span>
-<a name="line-537"></a>
-<a name="line-538"></a><a name="errorMsgLogging"></a><span class='definition'>errorMsgLogging</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-539"></a><span class='definition'>errorMsgLogging</span>
-<a name="line-540"></a>    <span class='keyglyph'>=</span> <span class='varid'>performAction</span>
-<a name="line-541"></a>      <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-542"></a>	<span class='keyword'>do</span>
-<a name="line-543"></a>	<span class='varid'>errLog</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParamTree</span> <span class='varid'>a_error_log</span>
-<a name="line-544"></a>	<span class='varid'>setSysParamTree</span> <span class='varid'>a_error_log</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>errLog</span><span class='layout'>)</span>
-<a name="line-545"></a>      <span class='layout'>)</span>
-<a name="line-546"></a>
-<a name="line-547"></a><a name="errorMsgLoggingAndToStderr"></a><span class='definition'>errorMsgLoggingAndToStderr</span>      <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-548"></a><span class='definition'>errorMsgLoggingAndToStderr</span>	<span class='keyglyph'>=</span> <span class='varid'>errorMsgLogging</span><span class='varop'>.&gt;&gt;</span> <span class='varid'>errorMsgToStderr</span>
-<a name="line-549"></a>
-<a name="line-550"></a><span class='comment'>-- |</span>
-<a name="line-551"></a><span class='comment'>-- the filter for reading all collected error mesages</span>
-<a name="line-552"></a><span class='comment'>--</span>
-<a name="line-553"></a><span class='comment'>-- result is the list of error messages, the input tree is ignored</span>
-<a name="line-554"></a>
-<a name="line-555"></a><a name="getErrorMsg"></a><span class='definition'>getErrorMsg</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-556"></a><span class='definition'>getErrorMsg</span> <span class='sel'>_t</span>
-<a name="line-557"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-558"></a>      <span class='varid'>el</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParamTree</span> <span class='varid'>a_error_log</span>
-<a name="line-559"></a>      <span class='varid'>setSysParamTree</span> <span class='varid'>a_error_log</span> <span class='conid'>[]</span>
-<a name="line-560"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>reverse</span> <span class='varid'>el</span><span class='layout'>)</span>
-<a name="line-561"></a>
-<a name="line-562"></a><span class='comment'>-- |</span>
-<a name="line-563"></a><span class='comment'>-- error level translation</span>
-<a name="line-564"></a><span class='comment'>-- 'c_warn' (1) : warning,</span>
-<a name="line-565"></a><span class='comment'>-- 'c_err' (2): error (e.g. parse error, validation error, ...),</span>
-<a name="line-566"></a><span class='comment'>-- 'c_fatal' (3) : fatal error (document access error, internal error, ...)</span>
-<a name="line-567"></a>
-<a name="line-568"></a><a name="errClass"></a><span class='definition'>errClass</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-569"></a><span class='definition'>errClass</span> <span class='varid'>l</span>
-<a name="line-570"></a>    <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>"fatal error"</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>l</span> <span class='varop'>$</span> <span class='varid'>msgList</span>
-<a name="line-571"></a>      <span class='keyword'>where</span>
-<a name="line-572"></a>      <span class='varid'>msgList</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>c_ok</span><span class='layout'>,</span>	<span class='str'>"no error"</span><span class='layout'>)</span>
-<a name="line-573"></a>		  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_warn</span><span class='layout'>,</span>	<span class='str'>"warning"</span><span class='layout'>)</span>
-<a name="line-574"></a>		  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_err</span><span class='layout'>,</span>	<span class='str'>"error"</span><span class='layout'>)</span>
-<a name="line-575"></a>		  <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_fatal</span><span class='layout'>,</span>	<span class='str'>"fatal error"</span><span class='layout'>)</span>
-<a name="line-576"></a>		  <span class='keyglyph'>]</span>
-<a name="line-577"></a>
-<a name="line-578"></a><span class='comment'>-- |</span>
-<a name="line-579"></a><span class='comment'>-- short cut for issuing a warning</span>
-<a name="line-580"></a><span class='comment'>--</span>
-<a name="line-581"></a><span class='comment'>-- see also : 'issueError', 'issueErr'</span>
-<a name="line-582"></a>
-<a name="line-583"></a><a name="issueWarn"></a><span class='definition'>issueWarn</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-584"></a><span class='definition'>issueWarn</span> <span class='varid'>msg</span>	<span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varop'>.&gt;&gt;</span> <span class='varid'>issueError</span>
-<a name="line-585"></a>
-<a name="line-586"></a><span class='comment'>-- |</span>
-<a name="line-587"></a><span class='comment'>-- short cut for issuing an error</span>
-<a name="line-588"></a><span class='comment'>--</span>
-<a name="line-589"></a><span class='comment'>-- see also : 'issueError'</span>
-<a name="line-590"></a>
-<a name="line-591"></a><a name="issueErr"></a><span class='definition'>issueErr</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-592"></a><span class='definition'>issueErr</span> <span class='varid'>msg</span>	<span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varop'>.&gt;&gt;</span> <span class='varid'>issueError</span>
-<a name="line-593"></a>
-<a name="line-594"></a><span class='comment'>-- |</span>
-<a name="line-595"></a><span class='comment'>-- short cut for issuing a fatal error</span>
-<a name="line-596"></a><span class='comment'>--</span>
-<a name="line-597"></a><span class='comment'>-- see also : 'issueError', 'issueErr'</span>
-<a name="line-598"></a>
-<a name="line-599"></a><a name="issueFatal"></a><span class='definition'>issueFatal</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-600"></a><span class='definition'>issueFatal</span> <span class='varid'>msg</span>	<span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>fatal</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varop'>.&gt;&gt;</span> <span class='varid'>issueError</span>
-<a name="line-601"></a>
-<a name="line-602"></a>
-<a name="line-603"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-604"></a><span class='comment'>--</span>
-<a name="line-605"></a><span class='comment'>-- issue an error, add the error to the document root tree</span>
-<a name="line-606"></a><span class='comment'>-- and return the tree</span>
-<a name="line-607"></a>
-<a name="line-608"></a><a name="addFatal"></a><span class='definition'>addFatal</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-609"></a><span class='definition'>addFatal</span> <span class='varid'>msg</span>
-<a name="line-610"></a>    <span class='keyglyph'>=</span> <span class='varid'>liftF</span> <span class='layout'>(</span> <span class='varid'>fatal</span> <span class='varid'>msg</span>
-<a name="line-611"></a>	      <span class='varop'>+++</span>
-<a name="line-612"></a>	      <span class='varid'>setStatus</span> <span class='varid'>c_fatal</span> <span class='str'>"accessing documents"</span>
-<a name="line-613"></a>	    <span class='layout'>)</span>
-<a name="line-614"></a>
-<a name="line-615"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-616"></a>
-<a name="line-617"></a><span class='comment'>-- |</span>
-<a name="line-618"></a><span class='comment'>-- checks the value of the attribute 'a_status' in a document root.</span>
-<a name="line-619"></a><span class='comment'>-- if it contains a value greater or equal to 'c_err', an error with error message</span>
-<a name="line-620"></a><span class='comment'>-- stored in attribute 'a_module' is issued and the filter acts as the 'noneM' filter</span>
-<a name="line-621"></a><span class='comment'>-- else its the 'thisM' filter</span>
-<a name="line-622"></a>
-<a name="line-623"></a><a name="checkStatus"></a><span class='definition'>checkStatus</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-624"></a><span class='definition'>checkStatus</span> <span class='varid'>t</span>
-<a name="line-625"></a>    <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>status</span> <span class='varop'>&gt;=</span> <span class='varid'>c_err</span>
-<a name="line-626"></a>      <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-627"></a>	   <span class='varid'>errorMsgHandler</span> <span class='layout'>(</span><span class='varid'>mkXErrorTree</span> <span class='varid'>c_warn</span> <span class='layout'>(</span><span class='varid'>errClass</span> <span class='varid'>status</span> <span class='varop'>++</span> <span class='str'>"s detected in "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-628"></a>	   <span class='varid'>noneM</span> <span class='varid'>t</span>
-<a name="line-629"></a>	<span class='keyword'>else</span>
-<a name="line-630"></a>           <span class='varid'>thisM</span> <span class='varid'>t</span>
-<a name="line-631"></a>    <span class='keyword'>where</span>
-<a name="line-632"></a>    <span class='varid'>status</span> <span class='keyglyph'>=</span> <span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>t</span>
-<a name="line-633"></a>    <span class='varid'>msg</span>    <span class='keyglyph'>=</span>    <span class='varid'>valueOf</span> <span class='varid'>a_module</span> <span class='varid'>t</span>
-<a name="line-634"></a>
-<a name="line-635"></a><span class='comment'>-- |</span>
-<a name="line-636"></a><span class='comment'>-- add the error level and the module where the error occured</span>
-<a name="line-637"></a><span class='comment'>-- to the attributes of a document root node and remove the children when level is greater or equal to 'c_err'</span>
-<a name="line-638"></a>
-<a name="line-639"></a><a name="setStatus"></a><span class='definition'>setStatus</span>	<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-640"></a><span class='definition'>setStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>
-<a name="line-641"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttrInt</span> <span class='varid'>a_status</span> <span class='varid'>level</span>
-<a name="line-642"></a>	<span class='varop'>.&gt;</span>
-<a name="line-643"></a>	<span class='varid'>addAttr</span> <span class='varid'>a_module</span> <span class='varid'>msg</span>
-<a name="line-644"></a>	<span class='varop'>.&gt;</span>
-<a name="line-645"></a>	<span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'>&gt;=</span> <span class='varid'>c_err</span>
-<a name="line-646"></a>	  <span class='keyword'>then</span> <span class='varid'>replaceChildren</span> <span class='conid'>[]</span>
-<a name="line-647"></a>	  <span class='keyword'>else</span> <span class='varid'>this</span>
-<a name="line-648"></a>	<span class='layout'>)</span>
-<a name="line-649"></a>      <span class='layout'>)</span>
-<a name="line-650"></a>      <span class='varop'>`when`</span> <span class='varid'>isRoot</span>
-<a name="line-651"></a>
-<a name="line-652"></a><span class='comment'>-- |</span>
-<a name="line-653"></a><span class='comment'>-- check whether tree is a document root and the status attribute has a value less than 'c_err'</span>
-<a name="line-654"></a>
-<a name="line-655"></a><a name="statusOk"></a><span class='definition'>statusOk</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-656"></a><span class='definition'>statusOk</span>
-<a name="line-657"></a>    <span class='keyglyph'>=</span> <span class='varid'>isRoot</span>
-<a name="line-658"></a>      <span class='varop'>.&gt;</span>
-<a name="line-659"></a>      <span class='varid'>isOf</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>t</span> <span class='varop'>&gt;=</span> <span class='varid'>c_err</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-660"></a><span class='comment'>-- |</span>
-<a name="line-661"></a><span class='comment'>-- check whether the error level attribute in the system state</span>
-<a name="line-662"></a><span class='comment'>-- is set to error, in this case the children of the document root are</span>
-<a name="line-663"></a><span class='comment'>-- removed and error info is added as attributes with 'setStatus'</span>
-<a name="line-664"></a><span class='comment'>-- else nothing is changed</span>
-<a name="line-665"></a>
-<a name="line-666"></a><a name="checkResult"></a><span class='definition'>checkResult</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-667"></a><span class='definition'>checkResult</span> <span class='varid'>msg</span> <span class='varid'>t</span>
-<a name="line-668"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-669"></a>      <span class='varid'>level</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_status</span> <span class='num'>0</span>
-<a name="line-670"></a>      <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'>&lt;=</span> <span class='varid'>c_warn</span>
-<a name="line-671"></a>	<span class='keyword'>then</span> <span class='varid'>thisM</span>
-<a name="line-672"></a>	<span class='keyword'>else</span> <span class='varid'>liftMf</span> <span class='layout'>(</span> <span class='varid'>setStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span> <span class='layout'>)</span>
-<a name="line-673"></a>        <span class='layout'>)</span> <span class='varid'>t</span>
-<a name="line-674"></a>
-<a name="line-675"></a><span class='comment'>-- |</span>
-<a name="line-676"></a><span class='comment'>-- monadic filter for processing the attribute list of a tag.</span>
-<a name="line-677"></a><span class='comment'>-- for other trees this filter acts like 'noneM'</span>
-<a name="line-678"></a><span class='comment'>--</span>
-<a name="line-679"></a><span class='comment'>-- see also : 'processAttr', 'processAttrl'</span>
-<a name="line-680"></a>
-<a name="line-681"></a><a name="processAttrM"></a><span class='definition'>processAttrM</span>				<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-682"></a><span class='definition'>processAttrM</span> <span class='varid'>f</span> <span class='varid'>t</span>
-<a name="line-683"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-684"></a>      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>f</span> <span class='varop'>$$&lt;</span> <span class='varid'>al</span>
-<a name="line-685"></a>      <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>replaceAttrl</span> <span class='varid'>res</span> <span class='varid'>t</span>
-<a name="line-686"></a>    <span class='keyword'>where</span>
-<a name="line-687"></a>    <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>getAttrl</span> <span class='varid'>t</span>
-<a name="line-688"></a>
-<a name="line-689"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-DOM.html b/doc/hdoc/src/Text-XML-HXT-DOM.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-DOM.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- DOM data types and functions</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- Version : $Id: DOM.hs,v 1.2 2006/11/12 14:52:59 hxml Exp $</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>--</span>
-<a name="line-7"></a><span class='comment'>-- export of all basic datatypes and functions of the toolbox DOM.</span>
-<a name="line-8"></a><span class='comment'>--</span>
-<a name="line-9"></a>
-<a name="line-10"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span>
-<a name="line-11"></a>    <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-12"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-13"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>
-<a name="line-14"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>
-<a name="line-15"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>
-<a name="line-16"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>
-<a name="line-17"></a>    <span class='layout'>)</span>
-<a name="line-18"></a><span class='keyword'>where</span>
-<a name="line-19"></a>
-<a name="line-20"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>
-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-28"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPCurl.html b/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPCurl.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPCurl.html
+++ /dev/null
@@ -1,179 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- GET for http access with curl</span>
-<a name="line-4"></a><span class='comment'>--</span>
-<a name="line-5"></a><span class='comment'>-- Version : $Id: GetHTTPCurl.hs,v 1.3 2005/04/14 12:52:52 hxml Exp $</span>
-<a name="line-6"></a>
-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetHTTPCurl</span>
-<a name="line-8"></a>    <span class='layout'>(</span> <span class='varid'>getCont</span>
-<a name="line-9"></a>    <span class='layout'>)</span>
-<a name="line-10"></a>
-<a name="line-11"></a><span class='keyword'>where</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
-<a name="line-14"></a>
-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerUtil</span>
-<a name="line-16"></a>    <span class='layout'>(</span> <span class='varid'>parseContentType</span>
-<a name="line-17"></a>    <span class='layout'>)</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>
-<a name="line-20"></a>    <span class='layout'>(</span> <span class='conid'>Parser</span>
-<a name="line-21"></a>    <span class='layout'>,</span> <span class='varid'>parse</span>
-<a name="line-22"></a>    <span class='layout'>,</span> <span class='varid'>anyChar</span>
-<a name="line-23"></a>    <span class='layout'>,</span> <span class='varid'>char</span>
-<a name="line-24"></a>    <span class='layout'>,</span> <span class='varid'>digit</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>getInput</span>
-<a name="line-26"></a>    <span class='layout'>,</span> <span class='varid'>many1</span>
-<a name="line-27"></a>    <span class='layout'>,</span> <span class='varid'>manyTill</span>
-<a name="line-28"></a>    <span class='layout'>,</span> <span class='varid'>spaces</span>
-<a name="line-29"></a>    <span class='layout'>,</span> <span class='varid'>string</span>
-<a name="line-30"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>&lt;|&gt;</span><span class='layout'>)</span>
-<a name="line-31"></a>    <span class='layout'>)</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span> <span class='keyword'>as</span> <span class='conid'>Parsec</span> <span class='layout'>(</span><span class='varid'>try</span><span class='layout'>)</span>	<span class='comment'>-- try</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>PipeOpen</span>
-<a name="line-36"></a>    <span class='layout'>(</span> <span class='varid'>popen</span>
-<a name="line-37"></a>    <span class='layout'>)</span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>
-<a name="line-40"></a>    <span class='layout'>(</span> <span class='varid'>toLower</span>
-<a name="line-41"></a>    <span class='layout'>)</span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-46"></a><span class='comment'>--</span>
-<a name="line-47"></a><span class='comment'>-- the http protocol handler implemented by calling external program curl</span>
-<a name="line-48"></a>
-<a name="line-49"></a><a name="getCont"></a><span class='definition'>getCont</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-50"></a><span class='definition'>getCont</span> <span class='varid'>curlOptions</span> <span class='varid'>uri</span> <span class='varid'>proxy</span>
-<a name="line-51"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-52"></a>      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>errs</span><span class='layout'>,</span> <span class='varid'>rc</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>popen</span> <span class='varid'>cmd</span> <span class='varid'>allArgs</span>
-<a name="line-53"></a>      <span class='keyword'>if</span> <span class='varid'>rc</span> <span class='varop'>/=</span> <span class='num'>0</span>
-<a name="line-54"></a>	 <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"http error when requesting URI "</span>
-<a name="line-55"></a>			      <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-56"></a>			      <span class='varop'>++</span> <span class='str'>": (rc="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rc</span> <span class='varop'>++</span> <span class='str'>") "</span>
-<a name="line-57"></a>			      <span class='varop'>++</span> <span class='varid'>errs</span>
-<a name="line-58"></a>			    <span class='layout'>)</span>
-<a name="line-59"></a>	 <span class='keyword'>else</span> <span class='keyword'>let</span>
-<a name="line-60"></a>	      <span class='layout'>(</span><span class='varid'>st</span><span class='layout'>,</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parseResponse</span> <span class='varid'>res</span>
-<a name="line-61"></a>	      <span class='keyword'>in</span>
-<a name="line-62"></a>	      <span class='keyword'>if</span> <span class='varid'>st</span> <span class='varop'>&gt;=</span> <span class='num'>200</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>st</span> <span class='varop'>&lt;</span> <span class='num'>300</span>
-<a name="line-63"></a>		 <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>Right</span> <span class='layout'>(</span><span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span><span class='layout'>)</span>
-<a name="line-64"></a>		 <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"http error when accessing URI "</span>
-<a name="line-65"></a>				      <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-66"></a>				      <span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-67"></a>				      <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>st</span>
-<a name="line-68"></a>				    <span class='layout'>)</span>
-<a name="line-69"></a>    <span class='keyword'>where</span>
-<a name="line-70"></a>    <span class='varid'>cmd</span>		<span class='keyglyph'>=</span> <span class='str'>"curl"</span>
-<a name="line-71"></a>
-<a name="line-72"></a>    <span class='varid'>allArgs</span>	<span class='keyglyph'>=</span> <span class='varid'>args</span>
-<a name="line-73"></a>		  <span class='varop'>++</span> <span class='varid'>proxyArgs</span> <span class='varid'>proxy</span>
-<a name="line-74"></a>		  <span class='varop'>++</span> <span class='varid'>words</span> <span class='varid'>curlOptions</span>
-<a name="line-75"></a>
-<a name="line-76"></a>    <span class='varid'>args</span> 	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='str'>"--silent"</span>
-<a name="line-77"></a>		  <span class='layout'>,</span> <span class='str'>"--show-error"</span>
-<a name="line-78"></a>		  <span class='layout'>,</span> <span class='str'>"--dump-header"</span><span class='layout'>,</span> <span class='str'>"-"</span>
-<a name="line-79"></a>		  <span class='layout'>,</span> <span class='varid'>uri</span>
-<a name="line-80"></a>		  <span class='keyglyph'>]</span>
-<a name="line-81"></a>    <span class='varid'>proxyArgs</span> <span class='str'>""</span>
-<a name="line-82"></a>		<span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-83"></a>    <span class='varid'>proxyArgs</span> <span class='varid'>prx</span>
-<a name="line-84"></a>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='str'>"--proxy"</span><span class='layout'>,</span> <span class='varid'>prx</span> <span class='keyglyph'>]</span>
-<a name="line-85"></a>
-<a name="line-86"></a><a name="parseResponse"></a><span class='definition'>parseResponse</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>
-<a name="line-87"></a><span class='definition'>parseResponse</span> <span class='varid'>inp</span>
-<a name="line-88"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>either</span>
-<a name="line-89"></a>          <span class='layout'>(</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='num'>999</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>transferMessage</span><span class='layout'>,</span> <span class='str'>"illegal HTTP response"</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='varid'>inp</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-90"></a>          <span class='varid'>id</span>
-<a name="line-91"></a>	<span class='varop'>.</span>
-<a name="line-92"></a>	<span class='varid'>parse</span> <span class='varid'>parseHttpResponse</span> <span class='str'>"HTTP Header"</span>
-<a name="line-93"></a>      <span class='layout'>)</span> <span class='varid'>inp</span>
-<a name="line-94"></a>
-<a name="line-95"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-96"></a>
-<a name="line-97"></a><a name="parseHttpResponse"></a><span class='definition'>parseHttpResponse</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>
-<a name="line-98"></a><span class='definition'>parseHttpResponse</span>
-<a name="line-99"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-100"></a>      <span class='varid'>allResponses</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span> <span class='varid'>parse1Response</span>
-<a name="line-101"></a>      <span class='keyword'>let</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>,</span> <span class='varid'>rhs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>last</span> <span class='varid'>allResponses</span>
-<a name="line-102"></a>      <span class='varid'>content</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getInput</span>
-<a name="line-103"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span> <span class='varop'>++</span> <span class='varid'>rhs</span><span class='layout'>,</span> <span class='varid'>content</span><span class='layout'>)</span>
-<a name="line-104"></a>    <span class='keyword'>where</span>
-<a name="line-105"></a>
-<a name="line-106"></a>    <span class='varid'>parse1Response</span>
-<a name="line-107"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-108"></a>	  <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parseResp</span>
-<a name="line-109"></a>	  <span class='varid'>rhs</span>      <span class='keyglyph'>&lt;-</span> <span class='varid'>parseHeaders</span>
-<a name="line-110"></a>	  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>,</span> <span class='varid'>rhs</span><span class='layout'>)</span>
-<a name="line-111"></a>
-<a name="line-112"></a>    <span class='varid'>crlf</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
-<a name="line-113"></a>    <span class='varid'>crlf</span>
-<a name="line-114"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-115"></a>	  <span class='layout'>(</span> <span class='conid'>Parsec</span><span class='varop'>.</span><span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>string</span> <span class='str'>"\r\n"</span><span class='layout'>)</span> <span class='varop'>&lt;|&gt;</span> <span class='varid'>string</span> <span class='str'>"\n"</span> <span class='layout'>)</span>
-<a name="line-116"></a>	  <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-117"></a>
-<a name="line-118"></a>    <span class='varid'>parseResp</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>)</span>
-<a name="line-119"></a>    <span class='varid'>parseResp</span>
-<a name="line-120"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-121"></a>	  <span class='varid'>vers</span> <span class='keyglyph'>&lt;-</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-122"></a>		    <span class='varid'>http</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>string</span> <span class='str'>"HTTP/"</span>
-<a name="line-123"></a>		    <span class='varid'>mav</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>
-<a name="line-124"></a>		    <span class='varid'>char</span> <span class='chr'>'.'</span>
-<a name="line-125"></a>		    <span class='varid'>miv</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>
-<a name="line-126"></a>		    <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>http</span> <span class='varop'>++</span> <span class='varid'>mav</span> <span class='varop'>++</span> <span class='str'>"."</span> <span class='varop'>++</span> <span class='varid'>miv</span><span class='layout'>)</span>
-<a name="line-127"></a>		  <span class='layout'>)</span>
-<a name="line-128"></a>	  <span class='varid'>spaces</span>
-<a name="line-129"></a>	  <span class='varid'>ds</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>
-<a name="line-130"></a>	  <span class='varid'>spaces</span>
-<a name="line-131"></a>	  <span class='varid'>reason</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='varid'>crlf</span>
-<a name="line-132"></a>	  <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>read</span> <span class='varid'>ds</span><span class='layout'>,</span>
-<a name="line-133"></a>		   <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>transferMessage</span><span class='layout'>,</span> <span class='varid'>reason</span><span class='layout'>)</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>transferVersion</span><span class='layout'>,</span> <span class='varid'>vers</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-134"></a>		 <span class='layout'>)</span>
-<a name="line-135"></a>
-<a name="line-136"></a>    <span class='varid'>parseHeaders</span>	<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-137"></a>    <span class='varid'>parseHeaders</span>
-<a name="line-138"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-139"></a>	    <span class='varid'>crlf</span>
-<a name="line-140"></a>	    <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-141"></a>	  <span class='layout'>)</span>
-<a name="line-142"></a>	  <span class='varop'>&lt;|&gt;</span>
-<a name="line-143"></a>	  <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-144"></a>	    <span class='varid'>header1</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parse1Header</span>
-<a name="line-145"></a>	    <span class='varid'>rest</span>    <span class='keyglyph'>&lt;-</span> <span class='varid'>parseHeaders</span>
-<a name="line-146"></a>	    <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>header1</span> <span class='varop'>++</span> <span class='varid'>rest</span><span class='layout'>)</span>
-<a name="line-147"></a>	  <span class='layout'>)</span>
-<a name="line-148"></a>	  <span class='varop'>&lt;|&gt;</span>
-<a name="line-149"></a>	  <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-150"></a>	    <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='str'>"IllegalHeaders"</span><span class='layout'>,</span> <span class='str'>""</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-151"></a>	  <span class='layout'>)</span>
-<a name="line-152"></a>
-<a name="line-153"></a>    <span class='varid'>parse1Header</span>	<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-154"></a>    <span class='varid'>parse1Header</span>
-<a name="line-155"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-156"></a>	  <span class='varid'>header</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='layout'>(</span><span class='varid'>char</span> <span class='chr'>':'</span><span class='layout'>)</span>
-<a name="line-157"></a>	  <span class='varid'>spaces</span>
-<a name="line-158"></a>	  <span class='varid'>value</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='varid'>crlf</span>
-<a name="line-159"></a>	  <span class='keyword'>let</span> <span class='varid'>ct</span> <span class='keyglyph'>=</span> <span class='varid'>parseCT</span> <span class='varid'>header</span> <span class='varid'>value</span>
-<a name="line-160"></a>	  <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>ct</span> <span class='varop'>++</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='varid'>header</span><span class='layout'>,</span> <span class='varid'>value</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-161"></a>	<span class='keyword'>where</span>
-<a name="line-162"></a>	<span class='varid'>parseCT</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-163"></a>	<span class='varid'>parseCT</span> <span class='varid'>h</span> <span class='varid'>v</span>
-<a name="line-164"></a>	    <span class='keyglyph'>|</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varid'>h</span> <span class='varop'>==</span> <span class='str'>"content-type"</span>
-<a name="line-165"></a>		<span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>parse</span> <span class='varid'>parseContentType</span> <span class='varid'>h</span> <span class='varop'>$</span> <span class='varid'>v</span>
-<a name="line-166"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-167"></a>		<span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-168"></a>
-<a name="line-169"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPLibCurl.html b/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPLibCurl.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPLibCurl.html
@@ -0,0 +1,249 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Haskell Code by HsColour</title>
+<link type='text/css' rel='stylesheet' href='hscolour.css' />
+</head>
+<body>
+<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-2"></a><span class='comment'>--</span>
+<a name="line-3"></a><span class='comment'>-- GET for http access with curl</span>
+<a name="line-4"></a><span class='comment'>--</span>
+<a name="line-5"></a><span class='comment'>-- Version : $Id: GetHTTPCurl.hs,v 1.3 2005/04/14 12:52:52 hxml Exp $</span>
+<a name="line-6"></a>
+<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetHTTPLibCurl</span>
+<a name="line-8"></a>    <span class='layout'>(</span> <span class='varid'>getCont</span>
+<a name="line-9"></a>    <span class='layout'>)</span>
+<a name="line-10"></a>
+<a name="line-11"></a><span class='keyword'>where</span>
+<a name="line-12"></a>
+<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>
+<a name="line-14"></a>    <span class='layout'>(</span> <span class='varid'>first</span> <span class='layout'>)</span>
+<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Concurrent</span><span class='varop'>.</span><span class='conid'>MVar</span>
+<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span>
+<a name="line-17"></a>    <span class='layout'>(</span> <span class='varid'>when</span> <span class='layout'>)</span>
+<a name="line-18"></a>
+<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>
+<a name="line-20"></a>    <span class='layout'>(</span> <span class='varid'>isDigit</span>
+<a name="line-21"></a>    <span class='layout'>,</span> <span class='varid'>toLower</span>
+<a name="line-22"></a>    <span class='layout'>)</span>
+<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>
+<a name="line-24"></a>    <span class='layout'>(</span> <span class='varid'>isPrefixOf</span>
+<a name="line-25"></a>    <span class='layout'>)</span>
+<a name="line-26"></a>
+<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>Curl</span>
+<a name="line-28"></a>
+<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
+<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Unsafe</span>
+<a name="line-31"></a>    <span class='layout'>(</span> <span class='varid'>unsafePerformIO</span>
+<a name="line-32"></a>    <span class='layout'>)</span>
+<a name="line-33"></a>
+<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>
+<a name="line-35"></a>    <span class='layout'>(</span> <span class='varid'>parse</span>
+<a name="line-36"></a>    <span class='layout'>)</span>
+<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
+<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>
+<a name="line-39"></a>    <span class='layout'>(</span> <span class='varid'>isTrueValue</span>
+<a name="line-40"></a>    <span class='layout'>)</span>
+<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerUtil</span>
+<a name="line-42"></a>    <span class='layout'>(</span> <span class='varid'>parseContentType</span>
+<a name="line-43"></a>    <span class='layout'>)</span>
+<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Version</span>
+<a name="line-45"></a>
+<a name="line-46"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-47"></a><span class='comment'>--</span>
+<a name="line-48"></a><span class='comment'>-- the global flag for initializing curl in the 1. call</span>
+<a name="line-49"></a>
+<a name="line-50"></a><a name="isInitCurl"></a><span class='definition'>isInitCurl</span>	<span class='keyglyph'>::</span> <span class='conid'>MVar</span> <span class='conid'>Bool</span>
+<a name="line-51"></a><span class='definition'>isInitCurl</span>	<span class='keyglyph'>=</span> <span class='varid'>unsafePerformIO</span> <span class='varop'>$</span> <span class='varid'>newMVar</span> <span class='conid'>False</span>
+<a name="line-52"></a>
+<a name="line-53"></a><a name="initCurl"></a><span class='definition'>initCurl</span>	<span class='keyglyph'>::</span> <span class='conid'>IO</span> <span class='conid'>()</span>
+<a name="line-54"></a><span class='definition'>initCurl</span>
+<a name="line-55"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-56"></a>      <span class='varid'>i</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>takeMVar</span> <span class='varid'>isInitCurl</span>
+<a name="line-57"></a>      <span class='varid'>when</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varid'>i</span><span class='layout'>)</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-58"></a>		     <span class='varid'>curl_global_init</span> <span class='num'>3</span>
+<a name="line-59"></a>		     <span class='varid'>return</span> <span class='conid'>()</span>
+<a name="line-60"></a>		   <span class='layout'>)</span>
+<a name="line-61"></a>      <span class='varid'>putMVar</span> <span class='varid'>isInitCurl</span> <span class='conid'>True</span>
+<a name="line-62"></a>
+<a name="line-63"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-64"></a><span class='comment'>--</span>
+<a name="line-65"></a><span class='comment'>-- the http protocol handler implemented by calling libcurl</span>
+<a name="line-66"></a><span class='comment'>-- (&lt;<a href="http://curl.haxx.se/">http://curl.haxx.se/</a>&gt;)</span>
+<a name="line-67"></a><span class='comment'>-- via the curl binding</span>
+<a name="line-68"></a><span class='comment'>-- &lt;<a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl">http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl</a>&gt;</span>
+<a name="line-69"></a><span class='comment'>-- This function tries to support mostly all curl options concerning HTTP requests.</span>
+<a name="line-70"></a><span class='comment'>-- The naming convetion is as follows: A curl option must be prefixed by the string</span>
+<a name="line-71"></a><span class='comment'>-- \"curl\" and then written exactly as described in the curl man page</span>
+<a name="line-72"></a><span class='comment'>-- (&lt;<a href="http://curl.haxx.se/docs/manpage.html">http://curl.haxx.se/docs/manpage.html</a>&gt;).</span>
+<a name="line-73"></a><span class='comment'>-- Example:</span>
+<a name="line-74"></a><span class='comment'>--</span>
+<a name="line-75"></a><span class='comment'>-- &gt; getCont [("curl--user-agent","My first HXT app"),("curl-e","<a href="http://the.referer.url/">http://the.referer.url/</a>")] "<a href="http://...">http://...</a>"</span>
+<a name="line-76"></a><span class='comment'>--</span>
+<a name="line-77"></a><span class='comment'>-- will set the user agent and the referer URL for this request.</span>
+<a name="line-78"></a>
+<a name="line-79"></a><a name="getCont"></a><span class='definition'>getCont</span>		<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-80"></a><span class='definition'>getCont</span> <span class='varid'>options</span> <span class='varid'>uri</span> <span class='comment'>-- curlOptions uri proxy</span>
+<a name="line-81"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-82"></a>      <span class='varid'>initCurl</span>
+<a name="line-83"></a>      <span class='varid'>resp</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>curlGetResponse</span> <span class='varid'>uri</span> <span class='varid'>curlOptions</span>
+<a name="line-84"></a>      <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>evalResponse</span> <span class='varid'>resp</span>
+<a name="line-85"></a>    <span class='keyword'>where</span>
+<a name="line-86"></a>    <span class='varid'>curlOptions</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>copt</span><span class='layout'>)</span> <span class='varid'>options</span> <span class='varop'>++</span> <span class='varid'>defaultOptions</span>
+<a name="line-87"></a>    <span class='varid'>defaultOptions</span>
+<a name="line-88"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>CurlFailOnError</span> <span class='conid'>False</span>
+<a name="line-89"></a>	  <span class='layout'>,</span> <span class='conid'>CurlHeader</span> <span class='conid'>True</span>
+<a name="line-90"></a>	  <span class='layout'>,</span> <span class='conid'>CurlNoProgress</span> <span class='conid'>True</span>
+<a name="line-91"></a>	  <span class='layout'>,</span> <span class='conid'>CurlFollowLocation</span> <span class='conid'>True</span>
+<a name="line-92"></a>	  <span class='layout'>,</span> <span class='conid'>CurlUserAgent</span> <span class='layout'>(</span><span class='str'>"hxt/"</span> <span class='varop'>++</span> <span class='varid'>hxt_version</span> <span class='varop'>++</span> <span class='str'>" via libcurl"</span><span class='layout'>)</span>
+<a name="line-93"></a>	  <span class='keyglyph'>]</span>
+<a name="line-94"></a>    <span class='varid'>evalResponse</span> <span class='varid'>r</span>
+<a name="line-95"></a>	<span class='keyglyph'>|</span> <span class='varid'>rc</span> <span class='varop'>/=</span> <span class='conid'>CurlOK</span>
+<a name="line-96"></a>	    <span class='keyglyph'>=</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"http error when requesting URI "</span>
+<a name="line-97"></a>		     <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
+<a name="line-98"></a>		     <span class='varop'>++</span> <span class='str'>": (curl return code="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rc</span> <span class='varop'>++</span> <span class='str'>") "</span>
+<a name="line-99"></a>		   <span class='layout'>)</span>
+<a name="line-100"></a>	<span class='keyglyph'>|</span> <span class='varid'>rs</span> <span class='varop'>&lt;</span> <span class='num'>200</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>rs</span> <span class='varop'>&gt;=</span> <span class='num'>300</span>
+<a name="line-101"></a>	    <span class='keyglyph'>=</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"http error when accessing URI "</span>
+<a name="line-102"></a>		     <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
+<a name="line-103"></a>		     <span class='varop'>++</span> <span class='str'>": "</span>
+<a name="line-104"></a>		     <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rsl</span>
+<a name="line-105"></a>		   <span class='layout'>)</span>
+<a name="line-106"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
+<a name="line-107"></a>	    <span class='keyglyph'>=</span> <span class='conid'>Right</span> <span class='layout'>(</span> <span class='varid'>contentT</span> <span class='varop'>++</span> <span class='varid'>headers</span><span class='layout'>,</span> <span class='varid'>respBody</span> <span class='varid'>r</span>
+<a name="line-108"></a>		    <span class='layout'>)</span>
+<a name="line-109"></a>	<span class='keyword'>where</span>
+<a name="line-110"></a>	<span class='varid'>headers</span>
+<a name="line-111"></a>	    <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='varid'>k</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>rsh</span>
+<a name="line-112"></a>	      <span class='varop'>++</span> <span class='varid'>statusLine</span> <span class='layout'>(</span><span class='varid'>words</span> <span class='varid'>rsl</span><span class='layout'>)</span>
+<a name="line-113"></a>
+<a name="line-114"></a>	<span class='varid'>contentT</span>
+<a name="line-115"></a>	    <span class='keyglyph'>=</span> <span class='varid'>concat</span>
+<a name="line-116"></a>	      <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='varid'>id</span>
+<a name="line-117"></a>		      <span class='varop'>.</span> <span class='varid'>parse</span> <span class='varid'>parseContentType</span> <span class='str'>""</span>
+<a name="line-118"></a>		    <span class='layout'>)</span>
+<a name="line-119"></a>	      <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>snd</span>
+<a name="line-120"></a>	      <span class='varop'>.</span> <span class='varid'>take</span> <span class='num'>1</span>
+<a name="line-121"></a>              <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span> <span class='str'>"content-type"</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span>
+<a name="line-122"></a>              <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>first</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toLower</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-123"></a>              <span class='varop'>$</span> <span class='varid'>rsh</span>
+<a name="line-124"></a>
+<a name="line-125"></a>	<span class='varid'>statusLine</span> <span class='layout'>(</span><span class='varid'>vers</span> <span class='conop'>:</span> <span class='varid'>code</span> <span class='conop'>:</span> <span class='varid'>msg</span><span class='layout'>)</span>
+<a name="line-126"></a>	    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>transferVersion</span><span class='layout'>,</span> <span class='varid'>vers</span><span class='layout'>)</span>
+<a name="line-127"></a>	      <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>transferMessage</span><span class='layout'>,</span> <span class='varid'>unwords</span> <span class='varid'>msg</span><span class='layout'>)</span>
+<a name="line-128"></a>	      <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>transferStatus</span><span class='layout'>,</span> <span class='varid'>code</span><span class='layout'>)</span>
+<a name="line-129"></a>	      <span class='keyglyph'>]</span>
+<a name="line-130"></a>        <span class='varid'>statusLine</span> <span class='keyword'>_</span>
+<a name="line-131"></a>	    <span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-132"></a>
+<a name="line-133"></a>	<span class='varid'>rc</span>  <span class='keyglyph'>=</span> <span class='varid'>respCurlCode</span>    <span class='varid'>r</span>
+<a name="line-134"></a>	<span class='varid'>rs</span>  <span class='keyglyph'>=</span> <span class='varid'>respStatus</span>      <span class='varid'>r</span>
+<a name="line-135"></a>	<span class='varid'>rsl</span> <span class='keyglyph'>=</span> <span class='varid'>respStatusLine</span>  <span class='varid'>r</span>
+<a name="line-136"></a>	<span class='varid'>rsh</span> <span class='keyglyph'>=</span> <span class='varid'>respHeaders</span>     <span class='varid'>r</span>
+<a name="line-137"></a>
+<a name="line-138"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-139"></a>
+<a name="line-140"></a><a name="copt"></a><span class='definition'>copt</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>CurlOption</span><span class='keyglyph'>]</span>
+<a name="line-141"></a><span class='definition'>copt</span> <span class='varid'>k</span> <span class='varid'>v</span>
+<a name="line-142"></a>    <span class='keyglyph'>|</span> <span class='str'>"curl"</span> <span class='varop'>`isPrefixOf`</span> <span class='varid'>k</span>
+<a name="line-143"></a>	<span class='keyglyph'>=</span> <span class='varid'>opt2copt</span> <span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>4</span> <span class='varid'>k</span><span class='layout'>)</span> <span class='varid'>v</span>
+<a name="line-144"></a>
+<a name="line-145"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>a_proxy</span>
+<a name="line-146"></a>	<span class='keyglyph'>=</span> <span class='varid'>opt2copt</span> <span class='varid'>k</span> <span class='varid'>v</span>
+<a name="line-147"></a>
+<a name="line-148"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>a_options_curl</span>
+<a name="line-149"></a>	<span class='keyglyph'>=</span> <span class='varid'>curlOptionString</span> <span class='varid'>v</span>
+<a name="line-150"></a>
+<a name="line-151"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
+<a name="line-152"></a>	<span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-153"></a>
+<a name="line-154"></a><a name="opt2copt"></a><span class='definition'>opt2copt</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>CurlOption</span><span class='keyglyph'>]</span>
+<a name="line-155"></a><span class='definition'>opt2copt</span> <span class='varid'>k</span> <span class='varid'>v</span>
+<a name="line-156"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-A"</span><span class='layout'>,</span> <span class='str'>"--user-agent"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlUserAgent</span> <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-157"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-b"</span><span class='layout'>,</span> <span class='str'>"--cookie"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlCookie</span> <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-158"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='str'>"--connect-timeout"</span>
+<a name="line-159"></a>      <span class='varop'>&amp;&amp;</span>
+<a name="line-160"></a>      <span class='varid'>isIntArg</span> <span class='varid'>v</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlConnectTimeout</span>      <span class='varop'>$</span> <span class='varid'>read</span>    <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-161"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='str'>"--crlf"</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlCRLF</span>                <span class='varop'>$</span> <span class='varid'>isTrue</span>  <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-162"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-d"</span><span class='layout'>,</span> <span class='str'>"--data"</span><span class='keyglyph'>]</span>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlPostFields</span>          <span class='varop'>$</span> <span class='varid'>lines</span>   <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-163"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-e"</span><span class='layout'>,</span> <span class='str'>"--referer"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlReferer</span>                       <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-164"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-H"</span><span class='layout'>,</span> <span class='str'>"--header"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlHttpHeaders</span>         <span class='varop'>$</span> <span class='varid'>lines</span>   <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-165"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='str'>"--ignore-content-length"</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlIgnoreContentLength</span> <span class='varop'>$</span> <span class='varid'>isTrue</span>  <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-166"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-I"</span><span class='layout'>,</span> <span class='str'>"--head"</span><span class='keyglyph'>]</span>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlNoBody</span>              <span class='varop'>$</span> <span class='varid'>isTrue</span>  <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-167"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-L"</span><span class='layout'>,</span> <span class='str'>"--location"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlFollowLocation</span>      <span class='varop'>$</span> <span class='varid'>isTrue</span>  <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-168"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='str'>"--max-filesize"</span>
+<a name="line-169"></a>      <span class='varop'>&amp;&amp;</span>
+<a name="line-170"></a>      <span class='varid'>isIntArg</span> <span class='varid'>v</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlMaxFileSizeLarge</span>    <span class='varop'>$</span> <span class='varid'>read</span>    <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-171"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-m"</span><span class='layout'>,</span> <span class='str'>"--max-time"</span><span class='keyglyph'>]</span>
+<a name="line-172"></a>      <span class='varop'>&amp;&amp;</span>
+<a name="line-173"></a>      <span class='varid'>isIntArg</span> <span class='varid'>v</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlTimeoutMS</span>           <span class='varop'>$</span> <span class='varid'>read</span>    <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-174"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-n"</span><span class='layout'>,</span> <span class='str'>"--netrc"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlNetrcFile</span>                     <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-175"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-R"</span><span class='layout'>,</span> <span class='str'>"--remote-time"</span><span class='keyglyph'>]</span>  <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlFiletime</span>            <span class='varop'>$</span> <span class='varid'>isTrue</span>  <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-176"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-u"</span><span class='layout'>,</span> <span class='str'>"--user"</span><span class='keyglyph'>]</span>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlUserPwd</span>                       <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-177"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-U"</span><span class='layout'>,</span> <span class='str'>"--proxy-user"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlProxyUserPwd</span>                  <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-178"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-x"</span><span class='layout'>,</span> <span class='str'>"--proxy"</span><span class='keyglyph'>]</span>        <span class='keyglyph'>=</span>  <span class='varid'>proxyOptions</span>
+<a name="line-179"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-X"</span><span class='layout'>,</span> <span class='str'>"--request"</span><span class='keyglyph'>]</span>      <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlCustomRequest</span>                 <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-180"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-y"</span><span class='layout'>,</span> <span class='str'>"--speed-time"</span><span class='keyglyph'>]</span>
+<a name="line-181"></a>      <span class='varop'>&amp;&amp;</span>
+<a name="line-182"></a>      <span class='varid'>isIntArg</span> <span class='varid'>v</span>                        <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlLowSpeedTime</span>        <span class='varop'>$</span> <span class='varid'>read</span>    <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-183"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-Y"</span><span class='layout'>,</span> <span class='str'>"--speed-limit"</span><span class='keyglyph'>]</span>
+<a name="line-184"></a>      <span class='varop'>&amp;&amp;</span>
+<a name="line-185"></a>      <span class='varid'>isIntArg</span> <span class='varid'>v</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlLowSpeed</span>            <span class='varop'>$</span> <span class='varid'>read</span>    <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-186"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-z"</span><span class='layout'>,</span> <span class='str'>"--time-cond"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span>  <span class='varid'>ifModifiedOptions</span>
+<a name="line-187"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='str'>"--max-redirs"</span>
+<a name="line-188"></a>      <span class='varop'>&amp;&amp;</span>
+<a name="line-189"></a>      <span class='varid'>isIntArg</span> <span class='varid'>v</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlMaxRedirs</span>           <span class='varop'>$</span> <span class='varid'>read</span>    <span class='varid'>v</span><span class='keyglyph'>]</span>
+<a name="line-190"></a>    <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"-0"</span><span class='layout'>,</span> <span class='str'>"--http1.0"</span><span class='keyglyph'>]</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlHttpVersion</span>       <span class='conid'>HttpVersion10</span><span class='keyglyph'>]</span>
+<a name="line-191"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>				<span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-192"></a>    <span class='keyword'>where</span>
+<a name="line-193"></a>    <span class='varid'>ifModifiedOptions</span>
+<a name="line-194"></a>	<span class='keyglyph'>|</span> <span class='str'>"-"</span> <span class='varop'>`isPrefixOf`</span> <span class='varid'>v</span>
+<a name="line-195"></a>	  <span class='varop'>&amp;&amp;</span>
+<a name="line-196"></a>	  <span class='varid'>isIntArg</span> <span class='varid'>v'</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlTimeCondition</span> <span class='conid'>TimeCondIfUnmodSince</span>
+<a name="line-197"></a>					  <span class='layout'>,</span><span class='conid'>CurlTimeValue</span>           <span class='varop'>$</span> <span class='varid'>read</span>   <span class='varid'>v'</span>
+<a name="line-198"></a>					  <span class='keyglyph'>]</span>
+<a name="line-199"></a>	<span class='keyglyph'>|</span> <span class='varid'>isIntArg</span> <span class='varid'>v</span>			<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>CurlTimeCondition</span> <span class='conid'>TimeCondIfModSince</span>
+<a name="line-200"></a>					  <span class='layout'>,</span><span class='conid'>CurlTimeValue</span>           <span class='varop'>$</span> <span class='varid'>read</span>   <span class='varid'>v'</span>
+<a name="line-201"></a>					  <span class='keyglyph'>]</span>
+<a name="line-202"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-203"></a>	<span class='keyword'>where</span>
+<a name="line-204"></a>	<span class='varid'>v'</span> <span class='keyglyph'>=</span> <span class='varid'>tail</span> <span class='varid'>v</span>
+<a name="line-205"></a>
+<a name="line-206"></a>    <span class='varid'>proxyOptions</span>
+<a name="line-207"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>CurlProxyPort</span> <span class='varid'>pport</span>
+<a name="line-208"></a>	  <span class='layout'>,</span> <span class='conid'>CurlProxy</span>     <span class='varid'>phost</span>
+<a name="line-209"></a>	  <span class='keyglyph'>]</span>
+<a name="line-210"></a>	<span class='keyword'>where</span>
+<a name="line-211"></a>	<span class='varid'>pport</span>
+<a name="line-212"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isIntArg</span> <span class='varid'>ppp</span>	<span class='keyglyph'>=</span> <span class='varid'>read</span> <span class='varid'>v</span>
+<a name="line-213"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='num'>1080</span>
+<a name="line-214"></a>	<span class='layout'>(</span><span class='varid'>phost</span><span class='layout'>,</span> <span class='varid'>pp</span><span class='layout'>)</span> 		<span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span><span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>v</span>
+<a name="line-215"></a>	<span class='varid'>ppp</span>      		<span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>pp</span>
+<a name="line-216"></a>
+<a name="line-217"></a>
+<a name="line-218"></a>
+<a name="line-219"></a><a name="isTrue"></a><span class='definition'>isTrue</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
+<a name="line-220"></a><span class='definition'>isTrue</span> <span class='varid'>s</span>  	<span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varid'>s</span> <span class='varop'>||</span> <span class='varid'>isTrueValue</span> <span class='varid'>s</span>
+<a name="line-221"></a>
+<a name="line-222"></a><a name="isIntArg"></a><span class='definition'>isIntArg</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
+<a name="line-223"></a><span class='definition'>isIntArg</span> <span class='varid'>s</span> 	<span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>all</span> <span class='varid'>isDigit</span> <span class='varid'>s</span>
+<a name="line-224"></a>
+<a name="line-225"></a><a name="curlOptionString"></a><span class='definition'>curlOptionString</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>CurlOption</span><span class='keyglyph'>]</span>
+<a name="line-226"></a><span class='definition'>curlOptionString</span>
+<a name="line-227"></a>    <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>copt</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>opts</span> <span class='varop'>.</span> <span class='varid'>words</span>
+<a name="line-228"></a>    <span class='keyword'>where</span>
+<a name="line-229"></a>    <span class='varid'>opts</span> <span class='varid'>l</span>
+<a name="line-230"></a>	<span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>l</span>			<span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-231"></a>	<span class='keyglyph'>|</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='str'>"-"</span> <span class='varop'>`isPrefixOf`</span> <span class='varid'>k</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>opts</span> <span class='varid'>l1</span>		<span class='comment'>-- k not an option: ignore</span>
+<a name="line-232"></a>	<span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>l1</span>			<span class='keyglyph'>=</span> <span class='varid'>opts</span> <span class='layout'>(</span><span class='varid'>k</span><span class='conop'>:</span><span class='str'>""</span><span class='conop'>:</span><span class='varid'>l1</span><span class='layout'>)</span>	<span class='comment'>-- last option</span>
+<a name="line-233"></a>	<span class='keyglyph'>|</span> <span class='str'>"-"</span> <span class='varop'>`isPrefixOf`</span> <span class='varid'>v</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span> <span class='str'>""</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>opts</span> <span class='layout'>(</span><span class='varid'>v</span><span class='conop'>:</span><span class='varid'>l</span><span class='layout'>)</span>	<span class='comment'>-- k option without arg</span>
+<a name="line-234"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>opts</span> <span class='varid'>l2</span>	<span class='comment'>-- k with value</span>
+<a name="line-235"></a>	<span class='keyword'>where</span>
+<a name="line-236"></a>	<span class='layout'>(</span><span class='varid'>k</span><span class='conop'>:</span><span class='varid'>l1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>l</span>
+<a name="line-237"></a>	<span class='layout'>(</span><span class='varid'>v</span><span class='conop'>:</span><span class='varid'>l2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>l1</span>
+<a name="line-238"></a>
+<a name="line-239"></a><span class='comment'>-- ------------------------------------------------------------</span>
+</pre></body>
+</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPNative.html b/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPNative.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-IO-GetHTTPNative.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- GET for native http access</span>
-<a name="line-4"></a><span class='comment'>--</span>
-<a name="line-5"></a><span class='comment'>-- Version : $Id: GetHTTPNative.hs,v 1.2 2005/04/14 12:52:52 hxml Exp $</span>
-<a name="line-6"></a>
-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetHTTPNative</span>
-<a name="line-8"></a>    <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetHTTPNative</span>
-<a name="line-9"></a>    <span class='layout'>)</span>
-<a name="line-10"></a>
-<a name="line-11"></a><span class='keyword'>where</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>			<span class='layout'>(</span> <span class='varid'>stringTrim</span> <span class='layout'>)</span>
-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerUtil</span>	<span class='layout'>(</span> <span class='varid'>parseContentType</span> <span class='layout'>)</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>		<span class='layout'>(</span> <span class='varid'>parse</span> <span class='layout'>)</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>	<span class='layout'>(</span> <span class='varid'>fromJust</span>
-<a name="line-20"></a>			<span class='layout'>)</span>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>	<span class='layout'>(</span> <span class='varid'>hPutStrLn</span>
-<a name="line-22"></a>			<span class='layout'>,</span> <span class='varid'>stderr</span>
-<a name="line-23"></a>			<span class='layout'>)</span>
-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>	<span class='layout'>(</span> <span class='varid'>ioeGetErrorString</span>
-<a name="line-25"></a>			<span class='layout'>,</span> <span class='varid'>try</span>
-<a name="line-26"></a>			<span class='layout'>)</span>
-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>Browser</span>	<span class='layout'>(</span> <span class='conid'>Proxy</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>
-<a name="line-28"></a>			<span class='layout'>,</span> <span class='varid'>browse</span>
-<a name="line-29"></a>			<span class='layout'>,</span> <span class='varid'>defaultGETRequest</span>
-<a name="line-30"></a>			<span class='layout'>,</span> <span class='varid'>request</span>
-<a name="line-31"></a>			<span class='layout'>,</span> <span class='varid'>setOutHandler</span>
-<a name="line-32"></a>			<span class='layout'>,</span> <span class='varid'>setErrHandler</span>
-<a name="line-33"></a>			<span class='layout'>,</span> <span class='varid'>setProxy</span>
-<a name="line-34"></a>			<span class='layout'>)</span>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>HTTP</span>	<span class='layout'>(</span> <span class='conid'>Header</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>
-<a name="line-36"></a>			<span class='layout'>,</span> <span class='conid'>HeaderName</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>
-<a name="line-37"></a>			<span class='layout'>,</span> <span class='conid'>Response</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>
-<a name="line-38"></a>			<span class='layout'>,</span> <span class='varid'>httpVersion</span>
-<a name="line-39"></a>			<span class='layout'>)</span>
-<a name="line-40"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>Socket</span>	<span class='layout'>(</span> <span class='varid'>withSocketsDo</span>
-<a name="line-41"></a>			<span class='layout'>)</span>
-<a name="line-42"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>	<span class='layout'>(</span> <span class='conid'>URI</span>
-<a name="line-43"></a>			<span class='layout'>,</span> <span class='varid'>parseURIReference</span>
-<a name="line-44"></a>			<span class='layout'>)</span>
-<a name="line-45"></a>
-<a name="line-46"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-47"></a><span class='comment'>--</span>
-<a name="line-48"></a><span class='comment'>-- the native http protocol handler</span>
-<a name="line-49"></a>
-<a name="line-50"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-51"></a><span class='comment'>--</span>
-<a name="line-52"></a><span class='comment'>-- the http protocol handler, haskell implementation</span>
-<a name="line-53"></a>
-<a name="line-54"></a><a name="getCont"></a><span class='definition'>getCont</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-55"></a><span class='definition'>getCont</span> <span class='varid'>uri</span> <span class='varid'>proxy</span>
-<a name="line-56"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-57"></a>      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>getHttp</span> <span class='conid'>False</span> <span class='varid'>uri1</span> <span class='varid'>proxy</span><span class='layout'>)</span>
-<a name="line-58"></a>      <span class='varid'>either</span> <span class='varid'>processError</span> <span class='varid'>processResponse</span> <span class='varid'>res</span>
-<a name="line-59"></a>    <span class='keyword'>where</span>
-<a name="line-60"></a>    <span class='varid'>uri1</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='layout'>(</span><span class='varid'>parseURIReference</span> <span class='varid'>uri</span><span class='layout'>)</span>
-<a name="line-61"></a>
-<a name="line-62"></a>    <span class='varid'>processError</span> <span class='varid'>e</span>
-<a name="line-63"></a>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"http error when requesting URI "</span>
-<a name="line-64"></a>			  <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-65"></a>			  <span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-66"></a>			  <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>
-<a name="line-67"></a>			  <span class='varop'>++</span> <span class='str'>" (perhaps server does not understand HTTP/1.1) "</span>
-<a name="line-68"></a>			<span class='layout'>)</span>
-<a name="line-69"></a>
-<a name="line-70"></a>    <span class='varid'>processResponse</span> <span class='varid'>response</span>
-<a name="line-71"></a>	<span class='keyglyph'>|</span> <span class='varid'>st</span> <span class='varop'>&gt;=</span> <span class='num'>200</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>st</span> <span class='varop'>&lt;</span> <span class='num'>300</span>
-<a name="line-72"></a>	    <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>Right</span> <span class='layout'>(</span><span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-73"></a>
-<a name="line-74"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-75"></a>	    <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"http error when accessing URI "</span>
-<a name="line-76"></a>			      <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-77"></a>			      <span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-78"></a>			      <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>st</span>
-<a name="line-79"></a>			      <span class='varop'>++</span> <span class='str'>" "</span>
-<a name="line-80"></a>			      <span class='varop'>++</span> <span class='varid'>rspReason</span> <span class='varid'>response</span>
-<a name="line-81"></a>			    <span class='layout'>)</span>
-<a name="line-82"></a>	<span class='keyword'>where</span>
-<a name="line-83"></a>	<span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>convertResponseHeaders</span> <span class='varid'>response</span>
-<a name="line-84"></a>	<span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>rspBody</span> <span class='varid'>response</span>
-<a name="line-85"></a>	<span class='varid'>st</span> <span class='keyglyph'>=</span> <span class='varid'>convertResponseStatus</span> <span class='layout'>(</span><span class='varid'>rspCode</span> <span class='varid'>response</span><span class='layout'>)</span>
-<a name="line-86"></a>
-<a name="line-87"></a>    <span class='varid'>getHttp</span>		<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='conid'>Response</span>
-<a name="line-88"></a>    <span class='varid'>getHttp</span> <span class='varid'>trc'</span> <span class='varid'>uri'</span> <span class='varid'>proxy'</span>
-<a name="line-89"></a>	<span class='keyglyph'>=</span> <span class='varid'>withSocketsDo</span> <span class='varop'>$</span>
-<a name="line-90"></a>	  <span class='varid'>browse</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-91"></a>		   <span class='varid'>setOutHandler</span> <span class='layout'>(</span><span class='varid'>trcFct</span><span class='layout'>)</span>
-<a name="line-92"></a>		   <span class='varid'>setErrHandler</span> <span class='layout'>(</span><span class='varid'>trcFct</span><span class='layout'>)</span>
-<a name="line-93"></a>
-<a name="line-94"></a>		   <span class='varid'>setProxy'</span> <span class='varid'>proxy'</span>
-<a name="line-95"></a>		   <span class='layout'>(</span><span class='sel'>_ruri</span><span class='layout'>,</span> <span class='varid'>rsp</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>request</span> <span class='varid'>rq</span>
-<a name="line-96"></a>		   <span class='varid'>return</span> <span class='varid'>rsp</span>
-<a name="line-97"></a>		 <span class='layout'>)</span>
-<a name="line-98"></a>	<span class='keyword'>where</span>
-<a name="line-99"></a>	<span class='varid'>trcFct</span> <span class='varid'>s</span>
-<a name="line-100"></a>	    <span class='keyglyph'>|</span> <span class='varid'>trc'</span>
-<a name="line-101"></a>		<span class='keyglyph'>=</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='str'>"-- (5) http: "</span> <span class='varop'>++</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-102"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-103"></a>		<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-104"></a>
-<a name="line-105"></a>	<span class='varid'>rq</span> <span class='keyglyph'>=</span> <span class='varid'>defaultGETRequest</span> <span class='varid'>uri'</span>
-<a name="line-106"></a>	
-<a name="line-107"></a>	<span class='varid'>setProxy'</span> <span class='str'>""</span>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-108"></a>	<span class='varid'>setProxy'</span> <span class='varid'>p</span>	<span class='keyglyph'>=</span> <span class='varid'>setProxy</span> <span class='layout'>(</span><span class='conid'>Proxy</span> <span class='varid'>p</span> <span class='conid'>Nothing</span><span class='layout'>)</span>
-<a name="line-109"></a>
-<a name="line-110"></a>    <span class='varid'>convertResponseStatus</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span>
-<a name="line-111"></a>    <span class='varid'>convertResponseStatus</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-112"></a>	<span class='keyglyph'>=</span> <span class='num'>100</span> <span class='varop'>*</span> <span class='varid'>a</span> <span class='varop'>+</span> <span class='num'>10</span> <span class='varop'>*</span> <span class='varid'>b</span> <span class='varop'>+</span> <span class='varid'>c</span>
-<a name="line-113"></a>
-<a name="line-114"></a>    <span class='varid'>convertResponseHeaders</span>	<span class='keyglyph'>::</span> <span class='conid'>Response</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-115"></a>    <span class='varid'>convertResponseHeaders</span> <span class='varid'>r'</span>
-<a name="line-116"></a>	<span class='keyglyph'>=</span> <span class='varid'>cvResponseCode</span> <span class='layout'>(</span><span class='varid'>rspCode</span> <span class='varid'>r'</span><span class='layout'>)</span>
-<a name="line-117"></a>	  <span class='varop'>++</span>
-<a name="line-118"></a>	  <span class='varid'>cvResponseReason</span> <span class='layout'>(</span><span class='varid'>rspReason</span> <span class='varid'>r'</span><span class='layout'>)</span>
-<a name="line-119"></a>          <span class='varop'>++</span>
-<a name="line-120"></a>	  <span class='varid'>cvResponseHeaders</span> <span class='layout'>(</span><span class='varid'>rspHeaders</span> <span class='varid'>r'</span><span class='layout'>)</span>
-<a name="line-121"></a>	<span class='keyword'>where</span>
-<a name="line-122"></a>	<span class='varid'>cvResponseCode</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-123"></a>	<span class='varid'>cvResponseCode</span> <span class='varid'>st'</span>
-<a name="line-124"></a>	    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>transferStatus</span><span class='layout'>,</span>	<span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>convertResponseStatus</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-125"></a>	      <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>transferVersion</span><span class='layout'>,</span>	<span class='varid'>httpVersion</span><span class='layout'>)</span>
-<a name="line-126"></a>	      <span class='keyglyph'>]</span>
-<a name="line-127"></a>
-<a name="line-128"></a>	<span class='varid'>cvResponseReason</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-129"></a>	<span class='varid'>cvResponseReason</span> <span class='varid'>r''</span>
-<a name="line-130"></a>	    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>transferMessage</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>stringTrim</span> <span class='varid'>r''</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>]</span>
-<a name="line-131"></a>
-<a name="line-132"></a>	<span class='varid'>cvResponseHeaders</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Header</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-133"></a>	<span class='varid'>cvResponseHeaders</span>
-<a name="line-134"></a>	    <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>cvResponseHeader</span>
-<a name="line-135"></a>
-<a name="line-136"></a>	<span class='varid'>cvResponseHeader</span>	<span class='keyglyph'>::</span> <span class='conid'>Header</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-137"></a>	<span class='varid'>cvResponseHeader</span> <span class='layout'>(</span><span class='conid'>Header</span> <span class='varid'>name</span> <span class='varid'>value</span><span class='layout'>)</span>
-<a name="line-138"></a>	    <span class='keyglyph'>|</span> <span class='varid'>name</span> <span class='varop'>==</span> <span class='conid'>HdrContentType</span>
-<a name="line-139"></a>		<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>parse</span> <span class='varid'>parseContentType</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='conid'>HdrContentType</span><span class='layout'>)</span> <span class='varid'>value</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-140"></a>		    <span class='conid'>Right</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>res</span>
-<a name="line-141"></a>		    <span class='conid'>Left</span>  <span class='keyword'>_</span>   <span class='keyglyph'>-&gt;</span> <span class='conid'>[]</span>
-<a name="line-142"></a>		  <span class='layout'>)</span>
-<a name="line-143"></a>                  <span class='varop'>++</span>
-<a name="line-144"></a>		  <span class='varid'>addHttpAttr</span>
-<a name="line-145"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-146"></a>		<span class='keyglyph'>=</span> <span class='varid'>addHttpAttr</span>
-<a name="line-147"></a>	    <span class='keyword'>where</span>
-<a name="line-148"></a>	    <span class='varid'>addHttpAttr</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>value</span><span class='layout'>)</span> <span class='keyglyph'>]</span>
-<a name="line-149"></a>
-<a name="line-150"></a>
-<a name="line-151"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-DTDProcessing.html b/doc/hdoc/src/Text-XML-HXT-Parser-DTDProcessing.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-DTDProcessing.html
+++ /dev/null
@@ -1,942 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a>
-<a name="line-3"></a><span class='comment'>{- |
-<a name="line-4"></a>   Module     : Text.XML.HXT.Parser.DTDProcessing
-<a name="line-5"></a>   Copyright  : Copyright (C) 2005 Uwe Schmidt
-<a name="line-6"></a>   License    : MIT
-<a name="line-7"></a>
-<a name="line-8"></a>   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
-<a name="line-9"></a>   Stability  : experimental
-<a name="line-10"></a>   Portability: portable
-<a name="line-11"></a>   Version    : $Id: DTDProcessing.hs,v 1.15 2006/11/12 14:53:00 hxml Exp $
-<a name="line-12"></a>
-<a name="line-13"></a>   DTD processing function for
-<a name="line-14"></a>   including external parts of a DTD
-<a name="line-15"></a>   parameter entity substitution and general entity substitution
-<a name="line-16"></a>
-<a name="line-17"></a>-}</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>
-<a name="line-22"></a>    <span class='layout'>(</span> <span class='varid'>getWellformedDoc</span>
-<a name="line-23"></a>    <span class='layout'>,</span> <span class='varid'>checkWellformedDoc</span>
-<a name="line-24"></a>    <span class='layout'>,</span> <span class='varid'>processDTD</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>processGeneralEntities</span>
-<a name="line-26"></a>    <span class='layout'>)</span>
-<a name="line-27"></a><span class='keyword'>where</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-32"></a>    <span class='layout'>(</span> <span class='varid'>traceTree</span>
-<a name="line-33"></a>    <span class='layout'>,</span> <span class='varid'>traceSource</span>
-<a name="line-34"></a>    <span class='layout'>,</span> <span class='varid'>traceMsg</span>
-<a name="line-35"></a>    <span class='layout'>)</span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>
-<a name="line-38"></a>    <span class='layout'>(</span> <span class='varid'>parseXmlDoc</span>
-<a name="line-39"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlDTDPart</span>
-<a name="line-40"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlAttrValue</span>
-<a name="line-41"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlGeneralEntityValue</span>
-<a name="line-42"></a>    <span class='layout'>)</span>
-<a name="line-43"></a>
-<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlDTDParser</span>
-<a name="line-45"></a>    <span class='layout'>(</span> <span class='varid'>parseXmlDTDdecl</span>
-<a name="line-46"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlDTDdeclPart</span>
-<a name="line-47"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlDTDEntityValue</span>
-<a name="line-48"></a>    <span class='layout'>)</span>
-<a name="line-49"></a>
-<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>
-<a name="line-51"></a>    <span class='layout'>(</span> <span class='varid'>getXmlContents</span>
-<a name="line-52"></a>    <span class='layout'>,</span> <span class='varid'>getXmlEntityContents</span>
-<a name="line-53"></a>    <span class='layout'>,</span> <span class='varid'>runInLocalURIContext</span>
-<a name="line-54"></a>    <span class='layout'>,</span> <span class='varid'>runInNewURIContext</span>
-<a name="line-55"></a>    <span class='layout'>,</span> <span class='varid'>getBaseURI</span>
-<a name="line-56"></a>    <span class='layout'>,</span> <span class='varid'>setBaseURI</span>
-<a name="line-57"></a>    <span class='layout'>,</span> <span class='varid'>getAbsolutURI</span>
-<a name="line-58"></a>    <span class='layout'>,</span> <span class='varid'>isStandaloneDocument</span>
-<a name="line-59"></a>    <span class='layout'>)</span>
-<a name="line-60"></a>
-<a name="line-61"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>
-<a name="line-62"></a>    <span class='layout'>(</span> <span class='varid'>transfCharRef</span>
-<a name="line-63"></a>    <span class='layout'>,</span> <span class='varid'>transfAllCharRef</span>
-<a name="line-64"></a>    <span class='layout'>)</span>
-<a name="line-65"></a>
-<a name="line-66"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-67"></a>
-<a name="line-68"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-69"></a>
-<a name="line-70"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>
-<a name="line-71"></a>    <span class='layout'>(</span> <span class='conid'>Map</span>
-<a name="line-72"></a>    <span class='layout'>,</span> <span class='varid'>empty</span>
-<a name="line-73"></a>    <span class='layout'>,</span> <span class='varid'>lookup</span>
-<a name="line-74"></a>    <span class='layout'>,</span> <span class='varid'>insert</span>
-<a name="line-75"></a>    <span class='comment'>-- , foldWithKey</span>
-<a name="line-76"></a>    <span class='layout'>)</span>
-<a name="line-77"></a>
-<a name="line-78"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-79"></a><span class='comment'>--</span>
-<a name="line-80"></a><span class='comment'>-- the "main" building blocks</span>
-<a name="line-81"></a>
-<a name="line-82"></a><span class='comment'>-- |</span>
-<a name="line-83"></a><span class='comment'>-- monadic filter for reading, parsing and checking a wellformed document.</span>
-<a name="line-84"></a><span class='comment'>-- the input tree must consist of a root node with a source attribute</span>
-<a name="line-85"></a><span class='comment'>-- in its attribute list.</span>
-<a name="line-86"></a><span class='comment'>--</span>
-<a name="line-87"></a><span class='comment'>-- All attributes from the document root are copied into the system state,</span>
-<a name="line-88"></a><span class='comment'>-- and may be queried by the monadic filters, e.g. trace options.</span>
-<a name="line-89"></a><span class='comment'>--</span>
-<a name="line-90"></a><span class='comment'>-- Result is the single element list containing the well-formed document tree</span>
-<a name="line-91"></a><span class='comment'>-- or, in case of errors, the document root with an empty list as children</span>
-<a name="line-92"></a><span class='comment'>-- and attributes 'a_status' and 'a_module' for error level and the module,</span>
-<a name="line-93"></a><span class='comment'>-- where the error occured.</span>
-<a name="line-94"></a><span class='comment'>--</span>
-<a name="line-95"></a><span class='comment'>-- this is a shortcut for 'getXmlContents' .\&gt;\&gt; 'checkWellformedDoc'</span>
-<a name="line-96"></a><span class='comment'>--</span>
-<a name="line-97"></a><span class='comment'>-- example for a main program:</span>
-<a name="line-98"></a><span class='comment'>--</span>
-<a name="line-99"></a><span class='comment'>-- @</span>
-<a name="line-100"></a><span class='comment'>-- main =</span>
-<a name="line-101"></a><span class='comment'>--   run\' \$</span>
-<a name="line-102"></a><span class='comment'>--   do</span>
-<a name="line-103"></a><span class='comment'>--   res  \&lt;- getWellformedDoc \$ newDocument \"myfile.xml\"</span>
-<a name="line-104"></a><span class='comment'>--   ...</span>
-<a name="line-105"></a><span class='comment'>-- @</span>
-<a name="line-106"></a>
-<a name="line-107"></a><a name="getWellformedDoc"></a><span class='definition'>getWellformedDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-108"></a><span class='definition'>getWellformedDoc</span>
-<a name="line-109"></a>    <span class='keyglyph'>=</span> <span class='varid'>setSystemParams</span>
-<a name="line-110"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-111"></a>      <span class='varid'>getXmlContents</span>
-<a name="line-112"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-113"></a>      <span class='varid'>checkWellformedDoc</span>
-<a name="line-114"></a>
-<a name="line-115"></a><span class='comment'>-- |</span>
-<a name="line-116"></a><span class='comment'>-- parses a text node with 'parseXmlDoc', processes the DTD and general entities</span>
-<a name="line-117"></a><span class='comment'>-- and transforms all char references into characters</span>
-<a name="line-118"></a>
-<a name="line-119"></a><a name="checkWellformedDoc"></a><span class='definition'>checkWellformedDoc</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-120"></a><span class='definition'>checkWellformedDoc</span>
-<a name="line-121"></a>    <span class='keyglyph'>=</span> <span class='varid'>parseXmlDoc</span>
-<a name="line-122"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-123"></a>      <span class='varid'>processDTD</span>
-<a name="line-124"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-125"></a>      <span class='varid'>processGeneralEntities</span>
-<a name="line-126"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-127"></a>      <span class='varid'>liftMf</span> <span class='varid'>transfAllCharRef</span>
-<a name="line-128"></a>
-<a name="line-129"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-130"></a><span class='comment'>--</span>
-<a name="line-131"></a>
-<a name="line-132"></a><a name="RecList"></a><span class='keyword'>type</span> <span class='conid'>RecList</span>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>
-<a name="line-133"></a>
-<a name="line-134"></a><a name="DTDState"></a><span class='keyword'>type</span> <span class='conid'>DTDState</span> <span class='varid'>res</span>	<span class='keyglyph'>=</span> <span class='conid'>XState</span> <span class='conid'>PeEnv</span> <span class='varid'>res</span>
-<a name="line-135"></a>
-<a name="line-136"></a><a name="DTDStateFilter"></a><span class='keyword'>type</span> <span class='conid'>DTDStateFilter</span>	<span class='keyglyph'>=</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDState</span> <span class='conid'>XmlTrees</span>
-<a name="line-137"></a>
-<a name="line-138"></a><a name="DTDPart"></a><span class='keyword'>data</span> <span class='conid'>DTDPart</span>		<span class='keyglyph'>=</span> <span class='conid'>Internal</span>
-<a name="line-139"></a>			<span class='keyglyph'>|</span> <span class='conid'>External</span>
-<a name="line-140"></a>			  <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>)</span>
-<a name="line-141"></a>
-<a name="line-142"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-143"></a>
-<a name="line-144"></a><a name="PeEnv"></a><span class='keyword'>type</span> <span class='conid'>PeEnv</span>		<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>
-<a name="line-145"></a>
-<a name="line-146"></a><a name="emptyPeEnv"></a><span class='definition'>emptyPeEnv</span>	<span class='keyglyph'>::</span> <span class='conid'>PeEnv</span>
-<a name="line-147"></a><span class='definition'>emptyPeEnv</span>	<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span>
-<a name="line-148"></a>
-<a name="line-149"></a><a name="lookupPeEnv"></a><span class='definition'>lookupPeEnv</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PeEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>
-<a name="line-150"></a><span class='definition'>lookupPeEnv</span>	<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span>
-<a name="line-151"></a>
-<a name="line-152"></a><a name="addPeEntry"></a><span class='definition'>addPeEntry</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PeEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PeEnv</span>
-<a name="line-153"></a><span class='definition'>addPeEntry</span>	<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span>
-<a name="line-154"></a>
-<a name="line-155"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-156"></a>
-<a name="line-157"></a><span class='comment'>-- |</span>
-<a name="line-158"></a><span class='comment'>-- a filter for DTD processing</span>
-<a name="line-159"></a><span class='comment'>--</span>
-<a name="line-160"></a><span class='comment'>-- inclusion of external parts of DTD,</span>
-<a name="line-161"></a><span class='comment'>-- parameter entity substitution</span>
-<a name="line-162"></a><span class='comment'>-- conditional section evaluation</span>
-<a name="line-163"></a><span class='comment'>--</span>
-<a name="line-164"></a><span class='comment'>-- input tree must represent a complete document including root node</span>
-<a name="line-165"></a>
-<a name="line-166"></a><a name="processDTD"></a><span class='definition'>processDTD</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-167"></a><span class='definition'>processDTD</span>
-<a name="line-168"></a>    <span class='keyglyph'>=</span> <span class='varid'>runInLocalURIContext</span>
-<a name="line-169"></a>         <span class='layout'>(</span> <span class='varid'>processRoot</span>
-<a name="line-170"></a>	   <span class='varop'>.&gt;&gt;</span>
-<a name="line-171"></a>	   <span class='varid'>traceTree</span>
-<a name="line-172"></a>	   <span class='varop'>.&gt;&gt;</span>
-<a name="line-173"></a>	   <span class='varid'>traceSource</span>
-<a name="line-174"></a>	 <span class='layout'>)</span>
-<a name="line-175"></a>      <span class='varop'>`whenM`</span> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>.&gt;</span> <span class='varid'>getChildren</span> <span class='layout'>)</span>
-<a name="line-176"></a>      <span class='keyword'>where</span>
-<a name="line-177"></a>
-<a name="line-178"></a>      <span class='varid'>processRoot</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-179"></a>      <span class='varid'>processRoot</span> <span class='varid'>t</span>
-<a name="line-180"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-181"></a>	    <span class='varid'>sequence_</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>setSysParamTree</span> <span class='varid'>a</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>toTreel</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>t</span>
-<a name="line-182"></a>	    <span class='varid'>setSysParam</span> <span class='varid'>a_standalone</span> <span class='str'>""</span>
-<a name="line-183"></a>	    <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"processDTD: process parameter entities"</span><span class='layout'>)</span>
-<a name="line-184"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-185"></a>	      <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>modifyChildren</span> <span class='varid'>addDoctype</span><span class='layout'>)</span>
-<a name="line-186"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-187"></a>	      <span class='varid'>processChildrenM</span> <span class='varid'>substParamEntities</span>
-<a name="line-188"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-189"></a>	      <span class='varid'>checkResult</span> <span class='str'>"in XML DTD processing"</span>
-<a name="line-190"></a>	      <span class='layout'>)</span> <span class='varop'>`whenM`</span> <span class='varid'>statusOk</span>
-<a name="line-191"></a>	      <span class='varop'>$</span> <span class='varid'>t</span>
-<a name="line-192"></a>
-<a name="line-193"></a>      <span class='comment'>-- Adds an empty DOCTYPE node to document. Needed for documents without a DTD.</span>
-<a name="line-194"></a>      <span class='comment'>-- Otherwise processor can not substitute predefined entities. If an xml declaration</span>
-<a name="line-195"></a>      <span class='comment'>-- is present, the node is inserted after this node.</span>
-<a name="line-196"></a>      <span class='varid'>addDoctype</span> <span class='keyglyph'>::</span> <span class='conid'>XmlSFilter</span>
-<a name="line-197"></a>      <span class='varid'>addDoctype</span> <span class='varid'>docChilds</span>
-<a name="line-198"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>doctype</span>
-<a name="line-199"></a>            <span class='keyword'>then</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>xmlDecl</span>
-<a name="line-200"></a>                 <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='varid'>mkXDTDTree</span> <span class='conid'>DOCTYPE</span> <span class='conid'>[]</span> <span class='conid'>[]</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='varid'>docChilds</span>
-<a name="line-201"></a>                 <span class='keyword'>else</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>docChilds</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='keyglyph'>[</span><span class='varid'>mkXDTDTree</span> <span class='conid'>DOCTYPE</span> <span class='conid'>[]</span> <span class='conid'>[]</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>docChilds</span><span class='layout'>)</span>
-<a name="line-202"></a>            <span class='keyword'>else</span> <span class='varid'>docChilds</span>
-<a name="line-203"></a>            <span class='keyword'>where</span>
-<a name="line-204"></a>            <span class='varid'>doctype</span> <span class='keyglyph'>=</span> <span class='varid'>isDoctype</span> <span class='varop'>$$</span> <span class='varid'>docChilds</span>
-<a name="line-205"></a>            <span class='varid'>xmlDecl</span> <span class='keyglyph'>=</span> <span class='varid'>isPi</span> <span class='varid'>t_xml</span> <span class='varop'>$$</span> <span class='varid'>isXPi</span> <span class='varop'>$$</span> <span class='varid'>docChilds</span>
-<a name="line-206"></a>
-<a name="line-207"></a>
-<a name="line-208"></a><a name="substParamEntities"></a><span class='definition'>substParamEntities</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-209"></a><span class='definition'>substParamEntities</span>
-<a name="line-210"></a>    <span class='keyglyph'>=</span> <span class='varid'>processParamEntities</span>
-<a name="line-211"></a>      <span class='varop'>`whenM`</span>
-<a name="line-212"></a>      <span class='varid'>isDoctype</span>
-<a name="line-213"></a>      <span class='keyword'>where</span>
-<a name="line-214"></a>
-<a name="line-215"></a>      <span class='varid'>processParamEntities</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-216"></a>      <span class='varid'>processParamEntities</span> <span class='varid'>t'</span>
-<a name="line-217"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-218"></a>	    <span class='layout'>(</span><span class='varid'>dtdPre</span><span class='layout'>,</span> <span class='varid'>envPre</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>processPredef</span>
-<a name="line-219"></a>
-<a name="line-220"></a>	    <span class='comment'>-- process internal part of DTD with initial empty env for parameter entities</span>
-<a name="line-221"></a>	    <span class='layout'>(</span><span class='varid'>dtdInt</span><span class='layout'>,</span> <span class='varid'>envInt</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>processInt</span> <span class='varid'>envPre</span> <span class='varid'>t'</span>
-<a name="line-222"></a>
-<a name="line-223"></a>	    <span class='comment'>-- process external part of DTD with resulting env from internal DTD</span>
-<a name="line-224"></a>	    <span class='varid'>dtdExt</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>runInLocalURIContext</span> <span class='layout'>(</span><span class='varid'>processExt</span> <span class='varid'>envInt</span><span class='layout'>)</span> <span class='varid'>t'</span>
-<a name="line-225"></a>
-<a name="line-226"></a>	    <span class='comment'>-- merge predefined, internal and external part</span>
-<a name="line-227"></a>	    <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: merge internal and external DTD parts"</span>
-<a name="line-228"></a>	    <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>foldl1</span> <span class='varid'>mergeDTDs</span> <span class='keyglyph'>[</span><span class='varid'>dtdPre</span><span class='layout'>,</span> <span class='varid'>dtdInt</span><span class='layout'>,</span> <span class='varid'>dtdExt</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='varid'>t'</span><span class='layout'>)</span>
-<a name="line-229"></a>
-<a name="line-230"></a>      <span class='varid'>processPredef</span>
-<a name="line-231"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-232"></a>	    <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: substitute predefined entities"</span>
-<a name="line-233"></a>	    <span class='varid'>chain'</span> <span class='varid'>emptyPeEnv</span> <span class='layout'>(</span><span class='varid'>substParamEntity</span> <span class='conid'>Internal</span> <span class='varop'>$$&lt;</span> <span class='varid'>predefDTDPart</span><span class='layout'>)</span>
-<a name="line-234"></a>
-<a name="line-235"></a>      <span class='varid'>processInt</span> <span class='varid'>env'</span> <span class='varid'>n'</span>
-<a name="line-236"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-237"></a>	    <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: substitute parameter entities in internal DTD part"</span>
-<a name="line-238"></a>	    <span class='varid'>chain'</span> <span class='varid'>env'</span> <span class='layout'>(</span><span class='varid'>substParamEntity</span> <span class='conid'>Internal</span> <span class='varop'>$$&lt;</span> <span class='varid'>getChildren</span> <span class='varid'>n'</span><span class='layout'>)</span>
-<a name="line-239"></a>
-<a name="line-240"></a>      <span class='varid'>processExt</span> <span class='varid'>env'</span> <span class='varid'>n'</span>
-<a name="line-241"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-242"></a>	    <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: process external part of DTD"</span>
-<a name="line-243"></a>            <span class='varid'>extDtd</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>processExternalDTD</span> <span class='varid'>n'</span>
-<a name="line-244"></a>	    <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: substitute parameter entities in external DTD part"</span>
-<a name="line-245"></a>	    <span class='varid'>chain</span> <span class='varid'>env'</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>substParamEntity</span> <span class='conid'>External</span><span class='layout'>)</span> <span class='varop'>$$&lt;</span> <span class='varid'>extDtd</span><span class='layout'>)</span>
-<a name="line-246"></a>
-<a name="line-247"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-248"></a><span class='comment'>-- |</span>
-<a name="line-249"></a><span class='comment'>-- substitute parameter entities</span>
-<a name="line-250"></a><span class='comment'>-- result is the input tree with the list of text nodes as children or an error message</span>
-<a name="line-251"></a>
-<a name="line-252"></a><a name="substPEref'"></a><span class='definition'>substPEref'</span>	<span class='keyglyph'>::</span> <span class='conid'>DTDPart</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>PeEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-253"></a>
-<a name="line-254"></a><span class='definition'>substPEref'</span> <span class='varid'>loc</span> <span class='varid'>env</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-255"></a>    <span class='keyglyph'>|</span> <span class='varid'>isInternalRef</span>	<span class='keyglyph'>=</span> <span class='varid'>xerr</span> <span class='layout'>(</span><span class='str'>"a parameter entity reference of "</span> <span class='varop'>++</span> <span class='varid'>peName'</span> <span class='varop'>++</span> <span class='str'>" occurs in the internal subset of the DTD"</span><span class='layout'>)</span>
-<a name="line-256"></a>
-<a name="line-257"></a>    <span class='keyglyph'>|</span> <span class='varid'>isUndefinedRef</span>	<span class='keyglyph'>=</span> <span class='varid'>xerr</span> <span class='layout'>(</span><span class='str'>"parameter entity "</span> <span class='varop'>++</span> <span class='varid'>peName'</span> <span class='varop'>++</span> <span class='str'>" not found (forward reference?)"</span><span class='layout'>)</span>
-<a name="line-258"></a>
-<a name="line-259"></a>    <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>baseUri</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>setChildren</span> <span class='varid'>peContent</span> <span class='varid'>n</span><span class='keyglyph'>]</span>
-<a name="line-260"></a>
-<a name="line-261"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_url</span><span class='layout'>,</span><span class='varid'>baseUri</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>peContent</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-262"></a>    <span class='keyword'>where</span>
-<a name="line-263"></a>    <span class='varid'>peName</span>		<span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>
-<a name="line-264"></a>    <span class='varid'>peName'</span>		<span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varid'>peName</span>
-<a name="line-265"></a>    <span class='varid'>peVal</span>		<span class='keyglyph'>=</span> <span class='varid'>lookupPeEnv</span> <span class='varid'>peName</span> <span class='varid'>env</span>
-<a name="line-266"></a>    <span class='varid'>isInternalRef</span>	<span class='keyglyph'>=</span> <span class='varid'>loc</span> <span class='varop'>==</span> <span class='conid'>Internal</span>
-<a name="line-267"></a>    <span class='varid'>isUndefinedRef</span>	<span class='keyglyph'>=</span> <span class='varid'>isNothing</span> <span class='varid'>peVal</span>
-<a name="line-268"></a>
-<a name="line-269"></a>    <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>peAl</span><span class='layout'>)</span> <span class='varid'>peContent</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varid'>peVal</span>
-<a name="line-270"></a>    <span class='varid'>baseUri</span>		<span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_url</span> <span class='varid'>peAl</span>
-<a name="line-271"></a>
-<a name="line-272"></a>    <span class='comment'>-- peContent		= getChildren $ fromJust peVal</span>
-<a name="line-273"></a>
-<a name="line-274"></a><span class='definition'>substPEref'</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='varid'>n</span>
-<a name="line-275"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>
-<a name="line-276"></a>
-<a name="line-277"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-278"></a>
-<a name="line-279"></a><span class='comment'>{-
-<a name="line-280"></a>dumpPE	:: DTDStateFilter
-<a name="line-281"></a>dumpPE t
-<a name="line-282"></a>    = do
-<a name="line-283"></a>      env &lt;- getState
-<a name="line-284"></a>      ( traceMsg 2 ("dumpPE: parameter entity environment\n" ++ M.foldWithKey showPE "" env)
-<a name="line-285"></a>	.&gt;&gt;
-<a name="line-286"></a>	thisM ) t
-<a name="line-287"></a>    where
-<a name="line-288"></a>    showPE k v b = k ++ "\t" ++ show v ++ "\n" ++ b
-<a name="line-289"></a>-}</span>
-<a name="line-290"></a>
-<a name="line-291"></a><a name="traceDTD"></a><span class='definition'>traceDTD</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-292"></a><span class='definition'>traceDTD</span> <span class='varid'>msg</span>	<span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>4</span> <span class='varid'>msg</span> <span class='varop'>.&gt;&gt;</span> <span class='varid'>traceTree</span>
-<a name="line-293"></a>
-<a name="line-294"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-295"></a>
-<a name="line-296"></a><a name="getExternalParamEntityValue"></a><span class='definition'>getExternalParamEntityValue</span>	<span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-297"></a><span class='definition'>getExternalParamEntityValue</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>
-<a name="line-298"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-299"></a>      <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='layout'>(</span> <span class='varid'>getXmlEntityContents</span>
-<a name="line-300"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-301"></a>	      <span class='varid'>liftMf</span> <span class='varid'>getChildren</span>
-<a name="line-302"></a>	    <span class='layout'>)</span>
-<a name="line-303"></a>	    <span class='varop'>$</span> <span class='varid'>newDocument'</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_source</span><span class='layout'>,</span> <span class='varid'>sysVal</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-304"></a>      <span class='varid'>base</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getBaseURI</span>
-<a name="line-305"></a>      <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>rl</span>
-<a name="line-306"></a>	 <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"illegal external parameter entity value for entity %"</span> <span class='varop'>++</span> <span class='varid'>peName</span> <span class='varop'>++</span><span class='str'>";"</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-307"></a>	 <span class='keyword'>else</span> <span class='varid'>thisM</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_url</span><span class='layout'>,</span> <span class='varid'>base</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>rl</span><span class='layout'>)</span>
-<a name="line-308"></a>    <span class='keyword'>where</span>
-<a name="line-309"></a>    <span class='varid'>sysVal</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>k_system</span> <span class='varid'>al</span>
-<a name="line-310"></a>    <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>   <span class='varid'>al</span>
-<a name="line-311"></a>
-<a name="line-312"></a><span class='definition'>getExternalParamEntityValue</span> <span class='varid'>n</span>
-<a name="line-313"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"getExternalParamEntityValue: illegal argument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-314"></a>
-<a name="line-315"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-316"></a>
-<a name="line-317"></a><span class='comment'>-- |</span>
-<a name="line-318"></a><span class='comment'>-- the dtd parameter entity substitution filter</span>
-<a name="line-319"></a>
-<a name="line-320"></a><a name="substParamEntity"></a><span class='definition'>substParamEntity</span>	<span class='keyglyph'>::</span> <span class='conid'>DTDPart</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-321"></a>
-<a name="line-322"></a><span class='definition'>substParamEntity</span> <span class='varid'>loc</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>xn</span> <span class='sel'>_cs</span><span class='layout'>)</span>
-<a name="line-323"></a>    <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>ENTITY</span> <span class='varid'>xn</span>					<span class='comment'>-- ENITITY and parameter ENTITY decl</span>
-<a name="line-324"></a>	<span class='keyglyph'>=</span> <span class='varid'>traceDTD</span> <span class='layout'>(</span><span class='str'>"ENTITY declaration before DTD declaration parsing"</span><span class='layout'>)</span>
-<a name="line-325"></a>	  <span class='varop'>.&gt;&gt;</span>
-<a name="line-326"></a>	  <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>substPeRefsInDTDdecl</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-327"></a>          <span class='varop'>.&gt;&gt;</span>
-<a name="line-328"></a>	  <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDdecl</span>
-<a name="line-329"></a>          <span class='varop'>.&gt;&gt;</span>
-<a name="line-330"></a>	  <span class='varid'>substRefsInEntityValue</span>
-<a name="line-331"></a>          <span class='varop'>.&gt;&gt;</span>
-<a name="line-332"></a>	  <span class='varid'>processEntityDecl</span>
-<a name="line-333"></a>          <span class='varop'>.&gt;&gt;</span>
-<a name="line-334"></a>          <span class='varid'>traceDTD</span> <span class='layout'>(</span><span class='str'>"ENTITY declaration after DTD declaration parsing"</span><span class='layout'>)</span>
-<a name="line-335"></a>          <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-336"></a>
-<a name="line-337"></a>    <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>PEREF</span> <span class='varid'>xn</span>					<span class='comment'>-- parameter entity ref in DTD</span>
-<a name="line-338"></a>	<span class='keyglyph'>=</span> <span class='varid'>substPeRefsInDTDpart</span> <span class='conid'>[]</span> <span class='varid'>n</span>
-<a name="line-339"></a>
-<a name="line-340"></a>    <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>ELEMENT</span> <span class='varid'>xn</span>					<span class='comment'>-- ELEMENT, ATTLIST, NOTATION</span>
-<a name="line-341"></a>      <span class='varop'>||</span>
-<a name="line-342"></a>      <span class='varid'>isDTDElemNode</span> <span class='conid'>ATTLIST</span> <span class='varid'>xn</span>
-<a name="line-343"></a>      <span class='varop'>||</span>
-<a name="line-344"></a>      <span class='varid'>isDTDElemNode</span> <span class='conid'>NOTATION</span> <span class='varid'>xn</span>
-<a name="line-345"></a>	<span class='keyglyph'>=</span> <span class='varid'>traceDTD</span>  <span class='str'>"DTD declaration before PE substitution"</span>
-<a name="line-346"></a>	  <span class='varop'>.&gt;&gt;</span>
-<a name="line-347"></a>	  <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>substPeRefsInDTDdecl</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-348"></a>          <span class='varop'>.&gt;&gt;</span>
-<a name="line-349"></a>	  <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDdecl</span>
-<a name="line-350"></a>          <span class='varop'>.&gt;&gt;</span>
-<a name="line-351"></a>	  <span class='varid'>traceDTD</span> <span class='str'>"DTD declaration after DTD declaration parsing"</span>
-<a name="line-352"></a>	  <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-353"></a>
-<a name="line-354"></a>    <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>CONDSECT</span> <span class='varid'>xn</span>					<span class='comment'>-- conditional section</span>
-<a name="line-355"></a>      <span class='varop'>&amp;&amp;</span>
-<a name="line-356"></a>      <span class='varid'>loc</span> <span class='varop'>==</span> <span class='conid'>Internal</span>
-<a name="line-357"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-358"></a>	    <span class='varid'>issueErr</span> <span class='str'>"conditional sections in internal part of the DTD is not allowed"</span> <span class='varid'>n</span>
-<a name="line-359"></a>            <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-360"></a>
-<a name="line-361"></a>    <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>CONDSECT</span> <span class='varid'>xn</span>					<span class='comment'>-- conditional section</span>
-<a name="line-362"></a>      <span class='varop'>&amp;&amp;</span>
-<a name="line-363"></a>      <span class='varid'>loc</span> <span class='varop'>==</span> <span class='conid'>External</span>
-<a name="line-364"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>let</span>
-<a name="line-365"></a>	    <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='keyword'>_</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>xn</span>
-<a name="line-366"></a>	    <span class='varid'>content</span>	<span class='keyglyph'>=</span> <span class='varid'>mkXTextTree</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-367"></a>	    <span class='keyword'>in</span>
-<a name="line-368"></a>	    <span class='varid'>traceDTD</span> <span class='str'>"substParamEntity: process conditional section"</span>
-<a name="line-369"></a>	    <span class='varop'>.&gt;&gt;</span>
-<a name="line-370"></a>	    <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>substPeRefsInCondSect</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-371"></a>            <span class='varop'>.&gt;&gt;</span>
-<a name="line-372"></a>	    <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDdecl</span>
-<a name="line-373"></a>	    <span class='varop'>.&gt;&gt;</span>
-<a name="line-374"></a>            <span class='varid'>evalCond</span> <span class='varid'>content</span>
-<a name="line-375"></a>	    <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-376"></a>
-<a name="line-377"></a>    <span class='keyglyph'>|</span> <span class='varid'>isXCmtNode</span> <span class='varid'>xn</span>						<span class='comment'>-- remove comments</span>
-<a name="line-378"></a>	<span class='keyglyph'>=</span> <span class='varid'>noneM</span> <span class='varid'>n</span>
-<a name="line-379"></a>
-<a name="line-380"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>							<span class='comment'>-- default: keep things unchanged (should not occur)</span>
-<a name="line-381"></a>	<span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n</span>
-<a name="line-382"></a>    <span class='keyword'>where</span>
-<a name="line-383"></a>
-<a name="line-384"></a>    <span class='varid'>processEntityDecl</span>	<span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-385"></a>    <span class='varid'>processEntityDecl</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isExtern</span>
-<a name="line-386"></a>	  <span class='keyword'>then</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-387"></a>		 <span class='varid'>url</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getAbsolutURI</span> <span class='varid'>sysVal</span>			<span class='comment'>-- add the absolute URI</span>
-<a name="line-388"></a>		 <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_url</span><span class='layout'>,</span> <span class='varid'>url</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>
-<a name="line-389"></a>	       <span class='layout'>)</span>
-<a name="line-390"></a>	  <span class='keyword'>else</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>substChildren</span> <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n'</span>
-<a name="line-391"></a>	<span class='keyword'>where</span>
-<a name="line-392"></a>	<span class='varid'>isExtern</span> <span class='keyglyph'>=</span> <span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varid'>al</span>
-<a name="line-393"></a>	<span class='varid'>sysVal</span>   <span class='keyglyph'>=</span> <span class='varid'>lookup1</span>  <span class='varid'>k_system</span> <span class='varid'>al</span>
-<a name="line-394"></a>      
-<a name="line-395"></a>    <span class='varid'>processEntityDecl</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-396"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-397"></a>	  <span class='varid'>env</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getState</span>
-<a name="line-398"></a>	  <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>isJust</span> <span class='varop'>.</span> <span class='varid'>lookupPeEnv</span> <span class='varid'>peName</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>env</span>
-<a name="line-399"></a>	     <span class='keyword'>then</span>
-<a name="line-400"></a>	     <span class='varid'>issueWarn</span> <span class='layout'>(</span><span class='str'>"parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" already defined"</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-401"></a>	     <span class='keyword'>else</span>
-<a name="line-402"></a>	     <span class='layout'>(</span> <span class='varid'>ifM</span> <span class='varid'>isExternalParameterEntity</span>
-<a name="line-403"></a>	           <span class='layout'>(</span> <span class='varid'>runInLocalURIContext</span> <span class='varid'>getExternalParamEntityValue</span> <span class='layout'>)</span>
-<a name="line-404"></a>                   <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>substChildren</span> <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>)</span>
-<a name="line-405"></a>	       <span class='varop'>.&gt;&gt;</span>
-<a name="line-406"></a>	       <span class='varid'>addPE</span> <span class='varid'>peName</span>
-<a name="line-407"></a>	     <span class='layout'>)</span> <span class='varid'>n'</span>
-<a name="line-408"></a>	  <span class='keyword'>where</span>
-<a name="line-409"></a>	  <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-410"></a>
-<a name="line-411"></a>    <span class='varid'>processEntityDecl</span> <span class='varid'>n'</span>
-<a name="line-412"></a>	<span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"processEntityDecl called with wrong argument"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span><span class='layout'>)</span>
-<a name="line-413"></a>
-<a name="line-414"></a>    <span class='varid'>addPE</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-415"></a>    <span class='varid'>addPE</span> <span class='varid'>name</span> <span class='varid'>t</span>
-<a name="line-416"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-417"></a>	  <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"substParamEntity: add entity to env: "</span> <span class='varop'>++</span> <span class='varid'>xshow</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span><span class='layout'>)</span>
-<a name="line-418"></a>	  <span class='varid'>changeState</span> <span class='varop'>$</span> <span class='varid'>addPeEntry</span> <span class='varid'>name</span> <span class='varid'>t</span>
-<a name="line-419"></a>	  <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-420"></a>
-<a name="line-421"></a>    <span class='varid'>substPEref</span>	<span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-422"></a>    <span class='varid'>substPEref</span> <span class='varid'>n'</span>
-<a name="line-423"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-424"></a>	  <span class='varid'>env</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getState</span>
-<a name="line-425"></a>	  <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>substPEref'</span> <span class='varid'>loc</span> <span class='varid'>env</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>
-<a name="line-426"></a>
-<a name="line-427"></a>    <span class='varid'>substPeRefsInValue</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-428"></a>    <span class='varid'>substPeRefsInValue</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>
-<a name="line-429"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>
-<a name="line-430"></a>	    <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in entity value"</span><span class='layout'>)</span>
-<a name="line-431"></a>	    <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>
-<a name="line-432"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-433"></a>		   <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDEntityValue</span>
-<a name="line-434"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-435"></a>		   <span class='varid'>liftF</span> <span class='varid'>transfCharRef</span>
-<a name="line-436"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-437"></a>		   <span class='layout'>(</span> <span class='varid'>substPeRefsInValue</span> <span class='layout'>(</span><span class='varid'>peName</span> <span class='conop'>:</span> <span class='varid'>recList</span><span class='layout'>)</span>
-<a name="line-438"></a>		     <span class='varop'>`whenM`</span>
-<a name="line-439"></a>		     <span class='varid'>isPeRef</span>
-<a name="line-440"></a>		   <span class='layout'>)</span>
-<a name="line-441"></a>		 <span class='layout'>)</span>
-<a name="line-442"></a>	  <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>
-<a name="line-443"></a>	<span class='keyword'>where</span>
-<a name="line-444"></a>	<span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>
-<a name="line-445"></a>
-<a name="line-446"></a>    <span class='varid'>substPeRefsInValue</span> <span class='keyword'>_</span> <span class='varid'>n'</span>
-<a name="line-447"></a>	<span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>
-<a name="line-448"></a>
-<a name="line-449"></a>    <span class='varid'>substRefsInEntityValue</span>	<span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-450"></a>    <span class='varid'>substRefsInEntityValue</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>decl</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>
-<a name="line-451"></a>	<span class='keyglyph'>|</span> <span class='varid'>decl</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>ENTITY</span><span class='layout'>,</span> <span class='conid'>PENTITY</span><span class='keyglyph'>]</span>
-<a name="line-452"></a>	    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varid'>al</span>
-<a name="line-453"></a>		<span class='keyword'>then</span> <span class='varid'>thisM</span>							<span class='comment'>-- externals not yet handled ??? really</span>
-<a name="line-454"></a>		<span class='keyword'>else</span> <span class='varid'>processChildrenM</span> <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='varid'>transfCharRef</span>
-<a name="line-455"></a>					<span class='varop'>.&gt;&gt;</span>
-<a name="line-456"></a>					<span class='varid'>substPeRefsInValue</span> <span class='conid'>[]</span>
-<a name="line-457"></a>				      <span class='layout'>)</span>
-<a name="line-458"></a>	      <span class='layout'>)</span> <span class='varid'>n'</span>
-<a name="line-459"></a>    <span class='varid'>substRefsInEntityValue</span>  <span class='varid'>n'</span>
-<a name="line-460"></a>	<span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"substRefsInEntityValue called with wrong argument"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span><span class='layout'>)</span>
-<a name="line-461"></a>
-<a name="line-462"></a>    <span class='varid'>runInPeContext</span>	<span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-463"></a>    <span class='varid'>runInPeContext</span> <span class='varid'>f</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-464"></a>	<span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>base</span>
-<a name="line-465"></a>	    <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>n'</span>
-<a name="line-466"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-467"></a>	    <span class='keyglyph'>=</span> <span class='varid'>runInNewURIContext</span> <span class='varid'>base</span> <span class='varid'>f</span> <span class='varid'>n'</span>
-<a name="line-468"></a>	<span class='keyword'>where</span>
-<a name="line-469"></a>	<span class='varid'>base</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_url</span> <span class='varid'>al</span>
-<a name="line-470"></a>
-<a name="line-471"></a>    <span class='varid'>runInPeContext</span> <span class='varid'>f</span> <span class='varid'>n'</span>
-<a name="line-472"></a>	<span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>n'</span>
-<a name="line-473"></a>
-<a name="line-474"></a>    <span class='varid'>substPeRefsInDTDdecl</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-475"></a>    <span class='varid'>substPeRefsInDTDdecl</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>
-<a name="line-476"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>
-<a name="line-477"></a>	    <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in DTD declaration"</span><span class='layout'>)</span>
-<a name="line-478"></a>	    <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>
-<a name="line-479"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-480"></a>		   <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDdecl: parseXmlDTDdeclPart"</span>
-<a name="line-481"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-482"></a>		   <span class='layout'>(</span> <span class='varid'>runInPeContext</span>
-<a name="line-483"></a>		     <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span> <span class='varid'>parseXmlDTDdeclPart</span> <span class='layout'>)</span>
-<a name="line-484"></a>		       <span class='varop'>.&gt;&gt;</span>
-<a name="line-485"></a>		       <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDdecl: after parseXmlDTDdeclPart"</span>
-<a name="line-486"></a>		       <span class='varop'>.&gt;&gt;</span>
-<a name="line-487"></a>		       <span class='varid'>processChildrenM</span> <span class='layout'>(</span> <span class='varid'>substPeRefsInDTDdecl</span> <span class='layout'>(</span><span class='varid'>peName</span> <span class='conop'>:</span> <span class='varid'>recList</span><span class='layout'>)</span> <span class='layout'>)</span>
-<a name="line-488"></a>		     <span class='layout'>)</span>
-<a name="line-489"></a>		     <span class='varop'>`whenM`</span>
-<a name="line-490"></a>		     <span class='varid'>isPeRef</span>
-<a name="line-491"></a>		   <span class='layout'>)</span>
-<a name="line-492"></a>		 <span class='layout'>)</span>
-<a name="line-493"></a>	  <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>
-<a name="line-494"></a>	<span class='keyword'>where</span>
-<a name="line-495"></a>	<span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>
-<a name="line-496"></a>
-<a name="line-497"></a>    <span class='varid'>substPeRefsInDTDdecl</span> <span class='keyword'>_</span> <span class='varid'>n'</span>
-<a name="line-498"></a>	<span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>
-<a name="line-499"></a>
-<a name="line-500"></a>    <span class='varid'>substPeRefsInDTDpart</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-501"></a>    <span class='varid'>substPeRefsInDTDpart</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>
-<a name="line-502"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>
-<a name="line-503"></a>	    <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in DTD part"</span><span class='layout'>)</span>
-<a name="line-504"></a>	    <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>
-<a name="line-505"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-506"></a>		   <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDpart: parseXmlDTDPart"</span>
-<a name="line-507"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-508"></a>		   <span class='varid'>runInPeContext</span>
-<a name="line-509"></a>		   <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>.&gt;</span> <span class='varid'>parseXmlDTDPart</span> <span class='layout'>(</span><span class='str'>"parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-510"></a>		     <span class='varop'>.&gt;&gt;</span>
-<a name="line-511"></a>		     <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDdecl: after parseXmlDTDPart"</span>
-<a name="line-512"></a>		     <span class='varop'>.&gt;&gt;</span>
-<a name="line-513"></a>		     <span class='varid'>substParamEntity</span> <span class='varid'>loc</span> <span class='comment'>-- cyclic check not yet done (peName : recList)</span>
-<a name="line-514"></a>		   <span class='layout'>)</span>
-<a name="line-515"></a>		 <span class='layout'>)</span>
-<a name="line-516"></a>	  <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>
-<a name="line-517"></a>	<span class='keyword'>where</span>
-<a name="line-518"></a>	<span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>
-<a name="line-519"></a>
-<a name="line-520"></a>    <span class='varid'>substPeRefsInDTDpart</span> <span class='keyword'>_</span> <span class='varid'>n'</span>
-<a name="line-521"></a>	<span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>
-<a name="line-522"></a>
-<a name="line-523"></a>    <span class='varid'>substPeRefsInCondSect</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-524"></a>    <span class='varid'>substPeRefsInCondSect</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>
-<a name="line-525"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>
-<a name="line-526"></a>	    <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in conditional section"</span><span class='layout'>)</span>
-<a name="line-527"></a>	    <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>
-<a name="line-528"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-529"></a>		   <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInCondSect: parseXmlDTDdeclPart"</span>
-<a name="line-530"></a>		   <span class='varop'>.&gt;&gt;</span>
-<a name="line-531"></a>		   <span class='layout'>(</span> <span class='varid'>runInPeContext</span>
-<a name="line-532"></a>		     <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span> <span class='varid'>parseXmlDTDdeclPart</span> <span class='layout'>)</span>
-<a name="line-533"></a>		       <span class='varop'>.&gt;&gt;</span>
-<a name="line-534"></a>		       <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInCondSect: after parseXmlDTDdeclPart"</span>
-<a name="line-535"></a>		       <span class='varop'>.&gt;&gt;</span>
-<a name="line-536"></a>		       <span class='varid'>processChildrenM</span> <span class='layout'>(</span> <span class='varid'>substPeRefsInCondSect</span> <span class='layout'>(</span><span class='varid'>peName</span> <span class='conop'>:</span> <span class='varid'>recList</span><span class='layout'>)</span> <span class='layout'>)</span>
-<a name="line-537"></a>		     <span class='layout'>)</span>
-<a name="line-538"></a>		     <span class='varop'>`whenM`</span>
-<a name="line-539"></a>		     <span class='varid'>isPeRef</span>
-<a name="line-540"></a>		   <span class='layout'>)</span>
-<a name="line-541"></a>		 <span class='layout'>)</span>
-<a name="line-542"></a>	  <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>
-<a name="line-543"></a>	<span class='keyword'>where</span>
-<a name="line-544"></a>	<span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>
-<a name="line-545"></a>
-<a name="line-546"></a>    <span class='varid'>substPeRefsInCondSect</span> <span class='keyword'>_</span> <span class='varid'>n'</span>
-<a name="line-547"></a>	<span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>
-<a name="line-548"></a>
-<a name="line-549"></a>
-<a name="line-550"></a><a name="evalCond"></a><span class='definition'>evalCond</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>DTDStateFilter</span>
-<a name="line-551"></a><span class='definition'>evalCond</span> <span class='varid'>content</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-552"></a>    <span class='keyglyph'>|</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='varid'>k_include</span>
-<a name="line-553"></a>	<span class='keyglyph'>=</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlDTDPart</span> <span class='str'>"conditional section"</span><span class='layout'>)</span>
-<a name="line-554"></a>	  <span class='varop'>.&gt;&gt;</span>
-<a name="line-555"></a>	  <span class='varid'>traceDTD</span> <span class='str'>"evalCond: DTD part"</span>
-<a name="line-556"></a>	  <span class='varop'>.&gt;&gt;</span>
-<a name="line-557"></a>	  <span class='varid'>substParamEntity</span> <span class='conid'>External</span>
-<a name="line-558"></a>          <span class='varop'>$</span> <span class='varid'>content</span> 
-<a name="line-559"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-560"></a>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-561"></a>    <span class='keyword'>where</span>
-<a name="line-562"></a>    <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>textOfXNode</span> <span class='varid'>n</span>
-<a name="line-563"></a>
-<a name="line-564"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-565"></a>
-<a name="line-566"></a><a name="processExternalDTD"></a><span class='definition'>processExternalDTD</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-567"></a><span class='definition'>processExternalDTD</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_dtd</span><span class='layout'>)</span>
-<a name="line-568"></a>    <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>sysVal</span>
-<a name="line-569"></a>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-570"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-571"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-572"></a>	  <span class='varid'>checkStandalone</span>
-<a name="line-573"></a>	  <span class='varid'>dtdContent</span> <span class='keyglyph'>&lt;-</span> <span class='layout'>(</span> <span class='varid'>getXmlEntityContents</span>
-<a name="line-574"></a>			  <span class='varop'>.&gt;&gt;</span>
-<a name="line-575"></a>			  <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processExternalDTD: parsing DTD part for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sysVal</span><span class='layout'>)</span>
-<a name="line-576"></a>			  <span class='varop'>.&gt;&gt;</span>
-<a name="line-577"></a>			  <span class='varid'>liftMf</span> <span class='varid'>getChildren</span>
-<a name="line-578"></a>			  <span class='varop'>.&gt;&gt;</span>
-<a name="line-579"></a>			  <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlDTDPart</span> <span class='varid'>sysVal</span><span class='layout'>)</span>
-<a name="line-580"></a>			<span class='layout'>)</span>
-<a name="line-581"></a>		       <span class='varop'>$</span> <span class='varid'>newDocument</span> <span class='varid'>sysVal</span>
-<a name="line-582"></a>	  <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"processExternalDTD: parsing DTD part done"</span>
-<a name="line-583"></a>	  <span class='varid'>traceTree</span> <span class='varop'>$</span> <span class='varid'>mkRootTree</span> <span class='conid'>[]</span> <span class='varid'>dtdContent</span>
-<a name="line-584"></a>	  <span class='varid'>return</span> <span class='varid'>dtdContent</span>
-<a name="line-585"></a>    <span class='keyword'>where</span>
-<a name="line-586"></a>    <span class='varid'>sysVal</span>		<span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>k_system</span> <span class='varid'>al</span>
-<a name="line-587"></a>    <span class='varid'>checkStandalone</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-588"></a>			  <span class='sel'>_isAlone</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>isStandaloneDocument</span>
-<a name="line-589"></a>			  <span class='keyword'>if</span> <span class='conid'>False</span> <span class='comment'>-- isAlone</span>
-<a name="line-590"></a>			     <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"external DTD "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sysVal</span> <span class='varop'>++</span> <span class='str'>" specified for standalone document"</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-591"></a>			     <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-592"></a>
-<a name="line-593"></a><span class='definition'>processExternalDTD</span>  <span class='keyword'>_</span>
-<a name="line-594"></a>    <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-595"></a>
-<a name="line-596"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-597"></a><span class='comment'>-- |</span>
-<a name="line-598"></a><span class='comment'>-- merge the external and the internal part of a DTD into one internal part.</span>
-<a name="line-599"></a><span class='comment'>-- parameter entity substitution should be made before applying this filter</span>
-<a name="line-600"></a><span class='comment'>-- internal definitions shadow external ones</span>
-<a name="line-601"></a><span class='comment'>--</span>
-<a name="line-602"></a><span class='comment'>--</span>
-<a name="line-603"></a><span class='comment'>-- preliminary: no real merge is done</span>
-<a name="line-604"></a>
-<a name="line-605"></a><a name="mergeDTDs"></a><span class='definition'>mergeDTDs</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-606"></a><span class='definition'>mergeDTDs</span> <span class='varid'>dtdInt</span> <span class='varid'>dtdExt</span>
-<a name="line-607"></a>    <span class='keyglyph'>=</span> <span class='varid'>dtdInt</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>mergeDTDentry</span> <span class='varid'>dtdInt</span> <span class='varop'>$$</span> <span class='varid'>dtdExt</span><span class='layout'>)</span>
-<a name="line-608"></a>
-<a name="line-609"></a><a name="mergeDTDentry"></a><span class='definition'>mergeDTDentry</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-610"></a><span class='definition'>mergeDTDentry</span> <span class='varid'>dtdPart</span>
-<a name="line-611"></a>    <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>found</span>
-<a name="line-612"></a>      <span class='keyword'>where</span>
-<a name="line-613"></a>      <span class='varid'>filterList</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>filterDTDNode</span> <span class='varid'>dtdPart</span>	<span class='comment'>-- construct the list of filters</span>
-<a name="line-614"></a>      <span class='varid'>found</span>      <span class='keyglyph'>=</span> <span class='varid'>cat</span> <span class='varid'>filterList</span>		<span class='comment'>-- concatenate the filters (set union)</span>
-<a name="line-615"></a>
-<a name="line-616"></a>
-<a name="line-617"></a><a name="filterDTDNode"></a><span class='definition'>filterDTDNode</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-618"></a>
-<a name="line-619"></a><span class='definition'>filterDTDNode</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>dtdElem</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-620"></a>    <span class='keyglyph'>|</span> <span class='varid'>dtdElem</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>ELEMENT</span><span class='layout'>,</span> <span class='conid'>NOTATION</span><span class='layout'>,</span> <span class='conid'>ENTITY</span><span class='keyglyph'>]</span>
-<a name="line-621"></a>	<span class='keyglyph'>=</span> <span class='varid'>filterElement</span>
-<a name="line-622"></a>	  <span class='keyword'>where</span>
-<a name="line-623"></a>	  <span class='varid'>filterElement</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>dtdElem'</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='sel'>_cl'</span><span class='layout'>)</span>
-<a name="line-624"></a>	      <span class='keyglyph'>|</span> <span class='varid'>dtdElem</span> <span class='varop'>==</span> <span class='varid'>dtdElem'</span> <span class='varop'>&amp;&amp;</span>
-<a name="line-625"></a>		<span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varid'>al'</span> <span class='varop'>==</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-626"></a>		  <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>
-<a name="line-627"></a>	      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-628"></a>		  <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-629"></a>	  <span class='varid'>filterElement</span> <span class='keyword'>_</span>
-<a name="line-630"></a>	      <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-631"></a>
-<a name="line-632"></a><span class='definition'>filterDTDNode</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-633"></a>    <span class='keyglyph'>=</span> <span class='varid'>filterAttlist</span>
-<a name="line-634"></a>      <span class='keyword'>where</span>
-<a name="line-635"></a>      <span class='varid'>filterAttlist</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='sel'>_cl'</span><span class='layout'>)</span>
-<a name="line-636"></a>	  <span class='keyglyph'>|</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span>  <span class='varid'>al'</span> <span class='varop'>==</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span>  <span class='varid'>al</span> <span class='varop'>&amp;&amp;</span>
-<a name="line-637"></a>	    <span class='varid'>lookup</span> <span class='varid'>a_value</span> <span class='varid'>al'</span> <span class='varop'>==</span> <span class='varid'>lookup</span> <span class='varid'>a_value</span> <span class='varid'>al</span>
-<a name="line-638"></a>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>
-<a name="line-639"></a>      <span class='varid'>filterAttlist</span> <span class='keyword'>_</span>
-<a name="line-640"></a>	  <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-641"></a>
-<a name="line-642"></a><span class='definition'>filterDTDNode</span> <span class='keyword'>_</span>
-<a name="line-643"></a>    <span class='keyglyph'>=</span>  <span class='varid'>none</span>
-<a name="line-644"></a>
-<a name="line-645"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-646"></a>
-<a name="line-647"></a><a name="predefinedEntities"></a><span class='definition'>predefinedEntities</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-648"></a><span class='definition'>predefinedEntities</span>
-<a name="line-649"></a>    <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='keyglyph'>[</span> <span class='str'>"&lt;!ENTITY lt   '&amp;#38;#60;'&gt;"</span>
-<a name="line-650"></a>	     <span class='layout'>,</span> <span class='str'>"&lt;!ENTITY gt   '&amp;#62;'&gt;"</span>
-<a name="line-651"></a>	     <span class='layout'>,</span> <span class='str'>"&lt;!ENTITY amp  '&amp;#38;#38;'&gt;"</span>
-<a name="line-652"></a>	     <span class='layout'>,</span> <span class='str'>"&lt;!ENTITY apos '&amp;#39;'&gt;"</span>
-<a name="line-653"></a>	     <span class='layout'>,</span> <span class='str'>"&lt;!ENTITY quot '&amp;#34;'&gt;"</span>
-<a name="line-654"></a>	     <span class='keyglyph'>]</span>
-<a name="line-655"></a>
-<a name="line-656"></a><a name="predefDTDPart"></a><span class='definition'>predefDTDPart</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span>
-<a name="line-657"></a><span class='definition'>predefDTDPart</span>
-<a name="line-658"></a>    <span class='keyglyph'>=</span> <span class='varid'>parseXmlDTDPart</span> <span class='str'>"predefined entities"</span> <span class='varop'>$</span> <span class='varid'>mkXTextTree</span> <span class='varid'>predefinedEntities</span>
-<a name="line-659"></a>
-<a name="line-660"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-661"></a><span class='comment'>--</span>
-<a name="line-662"></a><span class='comment'>-- 4.4 XML Processor Treatment of General Entities and References</span>
-<a name="line-663"></a>
-<a name="line-664"></a><a name="GeContext"></a><span class='keyword'>data</span> <span class='conid'>GeContext</span>
-<a name="line-665"></a>    <span class='keyglyph'>=</span> <span class='conid'>ReferenceInContent</span>
-<a name="line-666"></a>    <span class='keyglyph'>|</span> <span class='conid'>ReferenceInAttributeValue</span>
-<a name="line-667"></a>    <span class='keyglyph'>|</span> <span class='conid'>ReferenceInEntityValue</span>
-<a name="line-668"></a>    <span class='comment'>-- or OccursInAttributeValue				-- not used during substitution but during validation</span>
-<a name="line-669"></a>    <span class='comment'>-- or ReferenceInDTD					-- not used: syntax check detects errors</span>
-<a name="line-670"></a>
-<a name="line-671"></a><a name="GeFct"></a><span class='keyword'>type</span> <span class='conid'>GeFct</span>		<span class='keyglyph'>=</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeStateFilter</span>
-<a name="line-672"></a>
-<a name="line-673"></a><a name="GeState"></a><span class='keyword'>type</span> <span class='conid'>GeState</span> <span class='varid'>res</span>	<span class='keyglyph'>=</span> <span class='conid'>XState</span> <span class='conid'>GeEnv</span> <span class='varid'>res</span>
-<a name="line-674"></a>
-<a name="line-675"></a><a name="GeStateFilter"></a><span class='keyword'>type</span> <span class='conid'>GeStateFilter</span>	<span class='keyglyph'>=</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>
-<a name="line-676"></a>
-<a name="line-677"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-678"></a>
-<a name="line-679"></a><a name="GeEnv"></a><span class='keyword'>newtype</span> <span class='conid'>GeEnv</span>	<span class='keyglyph'>=</span> <span class='conid'>GeEnv</span> <span class='layout'>(</span><span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>GeFct</span><span class='layout'>)</span>
-<a name="line-680"></a>
-<a name="line-681"></a><a name="emptyGeEnv"></a><span class='definition'>emptyGeEnv</span>	<span class='keyglyph'>::</span> <span class='conid'>GeEnv</span>
-<a name="line-682"></a><span class='definition'>emptyGeEnv</span>	<span class='keyglyph'>=</span> <span class='conid'>GeEnv</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span>
-<a name="line-683"></a>
-<a name="line-684"></a><a name="lookupGeEnv"></a><span class='definition'>lookupGeEnv</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Maybe</span> <span class='conid'>GeFct</span>
-<a name="line-685"></a><span class='definition'>lookupGeEnv</span> <span class='varid'>k</span> <span class='layout'>(</span><span class='conid'>GeEnv</span> <span class='varid'>env</span><span class='layout'>)</span>
-<a name="line-686"></a>    <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>k</span> <span class='varid'>env</span>
-<a name="line-687"></a>
-<a name="line-688"></a><a name="addGeEntry"></a><span class='definition'>addGeEntry</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeFct</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeEnv</span>
-<a name="line-689"></a><span class='definition'>addGeEntry</span> <span class='varid'>k</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='conid'>GeEnv</span> <span class='varid'>env</span><span class='layout'>)</span>
-<a name="line-690"></a>    <span class='keyglyph'>=</span> <span class='conid'>GeEnv</span> <span class='varop'>$</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span> <span class='varid'>k</span> <span class='varid'>a</span> <span class='varid'>env</span>
-<a name="line-691"></a>
-<a name="line-692"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-693"></a>
-<a name="line-694"></a><span class='comment'>-- |</span>
-<a name="line-695"></a><span class='comment'>-- substitution of general entities</span>
-<a name="line-696"></a><span class='comment'>--</span>
-<a name="line-697"></a><span class='comment'>-- input: a complete document tree including root node</span>
-<a name="line-698"></a>
-<a name="line-699"></a><a name="processGeneralEntities"></a><span class='definition'>processGeneralEntities</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-700"></a><span class='definition'>processGeneralEntities</span>
-<a name="line-701"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"processGeneralEntities: collect and substitute general entities"</span>
-<a name="line-702"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-703"></a>	<span class='varid'>processEntities</span>
-<a name="line-704"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-705"></a>	<span class='varid'>checkResult</span> <span class='str'>"in general entity processing"</span>
-<a name="line-706"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-707"></a>	<span class='varid'>traceTree</span>
-<a name="line-708"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-709"></a>	<span class='varid'>traceSource</span>
-<a name="line-710"></a>      <span class='layout'>)</span>
-<a name="line-711"></a>      <span class='varop'>`whenM`</span> <span class='varid'>statusOk</span>
-<a name="line-712"></a>      <span class='keyword'>where</span>
-<a name="line-713"></a>      <span class='varid'>processEntities</span> <span class='varid'>t'</span>
-<a name="line-714"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-715"></a>	    <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>chain</span> <span class='varid'>initialEnv</span> <span class='layout'>(</span><span class='varid'>processGeneralEntity</span> <span class='conid'>ReferenceInContent</span> <span class='conid'>[]</span> <span class='varop'>$$&lt;</span> <span class='varid'>getChildren</span> <span class='varid'>t'</span><span class='layout'>)</span>
-<a name="line-716"></a>	    <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>replaceChildren</span> <span class='varid'>res</span> <span class='varid'>t'</span>
-<a name="line-717"></a>	    <span class='keyword'>where</span>
-<a name="line-718"></a>	    <span class='varid'>initialEnv</span> <span class='keyglyph'>=</span> <span class='varid'>emptyGeEnv</span>
-<a name="line-719"></a>
-<a name="line-720"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-721"></a>
-<a name="line-722"></a><a name="processGeneralEntity"></a><span class='definition'>processGeneralEntity</span>	<span class='keyglyph'>::</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeStateFilter</span>
-<a name="line-723"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>
-<a name="line-724"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-725"></a>      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varop'>$$&lt;</span> <span class='varid'>dtdPart</span>
-<a name="line-726"></a>      <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>replaceChildren</span> <span class='varid'>res</span> <span class='varid'>n</span>
-<a name="line-727"></a>
-<a name="line-728"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cl</span><span class='layout'>)</span>
-<a name="line-729"></a>    <span class='keyglyph'>|</span> <span class='varid'>isIntern</span>
-<a name="line-730"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-731"></a>	  <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processGeneralEnity: general entity definition for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>
-<a name="line-732"></a>	  <span class='varid'>value</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlGeneralEntityValue</span> <span class='layout'>(</span><span class='str'>"general internal entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>mkXTextTree</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>cl</span><span class='layout'>)</span>
-<a name="line-733"></a>	  <span class='varid'>res</span>   <span class='keyglyph'>&lt;-</span> <span class='varid'>processGeneralEntity</span> <span class='conid'>ReferenceInEntityValue</span> <span class='layout'>(</span><span class='varid'>name</span><span class='conop'>:</span><span class='varid'>rl</span><span class='layout'>)</span> <span class='varop'>$$&lt;</span> <span class='varid'>value</span>
-<a name="line-734"></a>	  <span class='varid'>insertEntity</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substInternal</span> <span class='varid'>res</span><span class='layout'>)</span>
-<a name="line-735"></a>    <span class='keyglyph'>|</span> <span class='varid'>isExtern</span>
-<a name="line-736"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-737"></a>	  <span class='varid'>baseUri</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getBaseURI</span>
-<a name="line-738"></a>	  <span class='varid'>insertEntity</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substExternalParsed1Time</span> <span class='varid'>baseUri</span><span class='layout'>)</span>
-<a name="line-739"></a>
-<a name="line-740"></a>    <span class='keyglyph'>|</span> <span class='varid'>isUnparsed</span>
-<a name="line-741"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-742"></a>	  <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processGeneralEnity: unparsed entity definition for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>
-<a name="line-743"></a>	  <span class='varid'>insertEntity</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substUnparsed</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-744"></a>    <span class='keyword'>where</span>
-<a name="line-745"></a>    <span class='varid'>isUnparsed</span>	<span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='varid'>isIntern</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>not</span> <span class='varid'>isExtern</span>
-<a name="line-746"></a>    <span class='varid'>isExtern</span>	<span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='varid'>isIntern</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>k_ndata</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-747"></a>    <span class='varid'>isIntern</span>	<span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-748"></a>
-<a name="line-749"></a>    <span class='varid'>name</span>	<span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>   <span class='varid'>al</span>
-<a name="line-750"></a>    <span class='comment'>-- sysVal	= lookup1 k_system al</span>
-<a name="line-751"></a>    <span class='varid'>url</span>		<span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_url</span>    <span class='varid'>al</span>		<span class='comment'>-- a_url contains absolut url for k_system</span>
-<a name="line-752"></a>    <span class='varid'>context</span>	<span class='keyglyph'>=</span> <span class='varid'>addEntry</span> <span class='varid'>a_source</span> <span class='varid'>url</span> <span class='varid'>al</span>
-<a name="line-753"></a>
-<a name="line-754"></a>    <span class='varid'>processExternalEntityContents</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>
-<a name="line-755"></a>    <span class='varid'>processExternalEntityContents</span> <span class='varid'>cl'</span>
-<a name="line-756"></a>	<span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>cl'</span>						<span class='comment'>-- reading content did not succeed</span>
-<a name="line-757"></a>	    <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-758"></a>	<span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>txt'</span>						<span class='comment'>-- something weird in entity content</span>
-<a name="line-759"></a>	    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-760"></a>	      <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"illegal external parsed entity value for entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-761"></a>	      <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-762"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>						<span class='comment'>-- o.k.: parse the contents</span>
-<a name="line-763"></a>	    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-764"></a>	      <span class='varid'>res'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlGeneralEntityValue</span> <span class='layout'>(</span><span class='str'>"external parsed entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$$&lt;</span> <span class='varid'>txt'</span>
-<a name="line-765"></a>	      <span class='layout'>(</span> <span class='varid'>traceSource</span>
-<a name="line-766"></a>		<span class='varop'>.&gt;&gt;</span>
-<a name="line-767"></a>		<span class='varid'>traceTree</span> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>mkRootTree</span> <span class='layout'>(</span><span class='varid'>fromAttrl</span> <span class='varid'>context</span><span class='layout'>)</span> <span class='varid'>res'</span>
-<a name="line-768"></a>	      <span class='varid'>return</span> <span class='varid'>res'</span>
-<a name="line-769"></a>	<span class='keyword'>where</span>
-<a name="line-770"></a>	<span class='varid'>txt'</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>.&gt;</span> <span class='varid'>isXText</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>cl'</span>
-<a name="line-771"></a>
-<a name="line-772"></a>    <span class='varid'>insertEntity</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeFct</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>
-<a name="line-773"></a>    <span class='varid'>insertEntity</span> <span class='varid'>name'</span> <span class='varid'>fct'</span>
-<a name="line-774"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-775"></a>	  <span class='varid'>geEnv'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getState</span>
-<a name="line-776"></a>	  <span class='keyword'>case</span> <span class='varid'>lookupGeEnv</span> <span class='varid'>name'</span> <span class='varid'>geEnv'</span> <span class='keyword'>of</span>
-<a name="line-777"></a>	    <span class='conid'>Just</span> <span class='sel'>_fct</span>
-<a name="line-778"></a>		<span class='keyglyph'>-&gt;</span> <span class='keyword'>do</span>
-<a name="line-779"></a>		   <span class='varid'>issueWarn</span> <span class='layout'>(</span><span class='str'>"entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" already defined, repeated definition ignored"</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-780"></a>		   <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-781"></a>            <span class='conid'>Nothing</span>
-<a name="line-782"></a>		<span class='keyglyph'>-&gt;</span> <span class='keyword'>do</span>
-<a name="line-783"></a>		   <span class='varid'>changeState</span> <span class='varop'>$</span> <span class='varid'>addGeEntry</span> <span class='varid'>name'</span> <span class='varid'>fct'</span> 
-<a name="line-784"></a>		   <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n</span>
-<a name="line-785"></a>
-<a name="line-786"></a>    <span class='comment'>-- --------</span>
-<a name="line-787"></a>    <span class='comment'>--</span>
-<a name="line-788"></a>    <span class='comment'>-- 4.4 XML Processor Treatment of Entities and References</span>
-<a name="line-789"></a>
-<a name="line-790"></a>    <span class='varid'>substInternal</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeStateFilter</span>
-<a name="line-791"></a>    <span class='varid'>substInternal</span> <span class='varid'>nl</span> <span class='conid'>ReferenceInContent</span> <span class='varid'>rl'</span> <span class='sel'>_n'</span>
-<a name="line-792"></a>	<span class='keyglyph'>=</span> <span class='varid'>included</span> <span class='varid'>nl</span> <span class='varid'>rl'</span>
-<a name="line-793"></a>
-<a name="line-794"></a>    <span class='varid'>substInternal</span> <span class='varid'>nl</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='varid'>rl'</span> <span class='sel'>_n'</span>
-<a name="line-795"></a>	<span class='keyglyph'>=</span> <span class='varid'>includedInLiteral</span> <span class='varid'>nl</span> <span class='varid'>rl'</span>
-<a name="line-796"></a>
-<a name="line-797"></a>    <span class='varid'>substInternal</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInEntityValue</span> <span class='sel'>_rl</span> <span class='varid'>n'</span>
-<a name="line-798"></a>	<span class='keyglyph'>=</span> <span class='varid'>bypassed</span> <span class='varid'>n'</span>
-<a name="line-799"></a>
-<a name="line-800"></a>    <span class='comment'>-- --------</span>
-<a name="line-801"></a>
-<a name="line-802"></a>    <span class='varid'>substExternalParsed1Time</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeStateFilter</span>
-<a name="line-803"></a>    <span class='varid'>substExternalParsed1Time</span> <span class='varid'>baseUri'</span> <span class='varid'>cx'</span> <span class='varid'>rl'</span> <span class='varid'>n'</span>
-<a name="line-804"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-805"></a>	  <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"substExternalParsed1Time: read and parse external parsed entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>
-<a name="line-806"></a>	  <span class='varid'>res</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>runInLocalURIContext</span> <span class='varid'>getContents'</span> <span class='varop'>$</span> <span class='varid'>newDocument'</span> <span class='varid'>context</span>
-<a name="line-807"></a>	  <span class='varid'>changeState</span> <span class='varop'>$</span> <span class='varid'>addGeEntry</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substExternalParsed</span> <span class='varid'>res</span><span class='layout'>)</span>
-<a name="line-808"></a>	  <span class='varid'>substExternalParsed</span> <span class='varid'>res</span> <span class='varid'>cx'</span> <span class='varid'>rl'</span> <span class='varid'>n'</span> 
-<a name="line-809"></a>	  <span class='keyword'>where</span>
-<a name="line-810"></a>	  <span class='varid'>getContents'</span>	<span class='keyglyph'>::</span> <span class='conid'>GeStateFilter</span>
-<a name="line-811"></a>	  <span class='varid'>getContents'</span> <span class='varid'>t''</span>
-<a name="line-812"></a>	      <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-813"></a>		<span class='varid'>setBaseURI</span> <span class='varid'>baseUri'</span>
-<a name="line-814"></a>		<span class='varid'>rs'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getXmlEntityContents</span> <span class='varid'>t''</span>
-<a name="line-815"></a>		<span class='varid'>processExternalEntityContents</span> <span class='varid'>rs'</span>
-<a name="line-816"></a>
-<a name="line-817"></a>
-<a name="line-818"></a>    <span class='varid'>substExternalParsed</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeStateFilter</span>
-<a name="line-819"></a>    <span class='varid'>substExternalParsed</span>  <span class='varid'>nl</span> <span class='conid'>ReferenceInContent</span> <span class='varid'>rl'</span> <span class='sel'>_n'</span>
-<a name="line-820"></a>	<span class='keyglyph'>=</span> <span class='varid'>includedIfValidating</span> <span class='varid'>nl</span> <span class='varid'>rl'</span>
-<a name="line-821"></a>
-<a name="line-822"></a>    <span class='varid'>substExternalParsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>
-<a name="line-823"></a>	<span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"external parsed general"</span> <span class='str'>"in attribute value"</span>
-<a name="line-824"></a>
-<a name="line-825"></a>    <span class='varid'>substExternalParsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInEntityValue</span> <span class='sel'>_rl</span> <span class='varid'>n'</span>
-<a name="line-826"></a>	<span class='keyglyph'>=</span> <span class='varid'>bypassed</span> <span class='varid'>n'</span>
-<a name="line-827"></a>
-<a name="line-828"></a>    <span class='comment'>-- --------</span>
-<a name="line-829"></a>
-<a name="line-830"></a>    <span class='varid'>substUnparsed</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeStateFilter</span>
-<a name="line-831"></a>    <span class='varid'>substUnparsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInContent</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>
-<a name="line-832"></a>	<span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"unparsed"</span> <span class='str'>"content"</span>
-<a name="line-833"></a>    <span class='varid'>substUnparsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>
-<a name="line-834"></a>	<span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"unparsed"</span> <span class='str'>"attribute value"</span>
-<a name="line-835"></a>    <span class='varid'>substUnparsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInEntityValue</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>
-<a name="line-836"></a>	<span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"unparsed"</span> <span class='str'>"entity value"</span>
-<a name="line-837"></a>
-<a name="line-838"></a>    <span class='comment'>-- --------</span>
-<a name="line-839"></a>							<span class='comment'>-- see XML 1.0 chapter:</span>
-<a name="line-840"></a>
-<a name="line-841"></a>    <span class='varid'>included</span> <span class='varid'>nl</span>	<span class='varid'>rl'</span>					<span class='comment'>-- 4.4.2</span>
-<a name="line-842"></a>	<span class='keyglyph'>=</span> <span class='varid'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='layout'>(</span><span class='varid'>name</span><span class='conop'>:</span><span class='varid'>rl'</span><span class='layout'>)</span> <span class='varop'>$$&lt;</span> <span class='varid'>nl</span>
-<a name="line-843"></a>
-<a name="line-844"></a>    <span class='varid'>includedIfValidating</span>				<span class='comment'>-- 4.4.3</span>
-<a name="line-845"></a>	<span class='keyglyph'>=</span> <span class='varid'>included</span>
-<a name="line-846"></a>
-<a name="line-847"></a>    <span class='varid'>includedInLiteral</span>					<span class='comment'>-- 4.4.5</span>
-<a name="line-848"></a>	<span class='keyglyph'>=</span> <span class='varid'>included</span>
-<a name="line-849"></a>
-<a name="line-850"></a>    <span class='varid'>bypassed</span> <span class='varid'>n'</span>						<span class='comment'>-- 4.4.7</span>
-<a name="line-851"></a>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n'</span>
-<a name="line-852"></a>
-<a name="line-853"></a>    <span class='varid'>forbidden</span> <span class='varid'>msg'</span> <span class='varid'>cx'</span>					<span class='comment'>-- 4.4.4</span>
-<a name="line-854"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-855"></a>	  <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"reference of "</span> <span class='varop'>++</span> <span class='varid'>msg'</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" forbidden in "</span> <span class='varop'>++</span> <span class='varid'>cx'</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-856"></a>          <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-857"></a>
-<a name="line-858"></a>							<span class='comment'>-- normalize default value in ATTLIST</span>
-<a name="line-859"></a><span class='definition'>processGeneralEntity</span> <span class='sel'>_cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>
-<a name="line-860"></a>    <span class='keyglyph'>|</span> <span class='varid'>hasDefaultValue</span>
-<a name="line-861"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-862"></a>	  <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlAttrValue</span> <span class='str'>"default value of attribute "</span><span class='layout'>)</span>
-<a name="line-863"></a>                   <span class='varop'>.&gt;&gt;</span>
-<a name="line-864"></a>		   <span class='varid'>substGeneralEntityInAValue</span> <span class='varid'>rl</span>
-<a name="line-865"></a>		 <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>mkXTextTree</span> <span class='varid'>defaultValue</span>
-<a name="line-866"></a>	  <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>addDTDAttr</span> <span class='varid'>a_default</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-867"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-868"></a>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n</span>
-<a name="line-869"></a>    <span class='keyword'>where</span>
-<a name="line-870"></a>    <span class='varid'>hasDefaultValue</span> <span class='keyglyph'>=</span> <span class='varid'>hasEntry</span>  <span class='varid'>a_default</span> <span class='varid'>al</span>
-<a name="line-871"></a>    <span class='varid'>defaultValue</span>    <span class='keyglyph'>=</span> <span class='varid'>lookup1</span>   <span class='varid'>a_default</span> <span class='varid'>al</span>
-<a name="line-872"></a>
-<a name="line-873"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-874"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-875"></a>      <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processGeneralEnity: entity reference for entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>
-<a name="line-876"></a>      <span class='varid'>trace</span> <span class='num'>3</span> <span class='layout'>(</span><span class='str'>"recursion list = "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rl</span><span class='layout'>)</span>
-<a name="line-877"></a>      <span class='varid'>geEnv</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getState</span>
-<a name="line-878"></a>      <span class='keyword'>case</span> <span class='varid'>lookupGeEnv</span> <span class='varid'>name</span> <span class='varid'>geEnv</span> <span class='keyword'>of</span>
-<a name="line-879"></a>        <span class='conid'>Just</span> <span class='varid'>fct</span>
-<a name="line-880"></a>	  <span class='keyglyph'>-&gt;</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>rl</span>
-<a name="line-881"></a>	     <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-882"></a>		  <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive substitution of general entity reference "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>ref</span> <span class='varop'>++</span> <span class='str'>" not processed"</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-883"></a>		  <span class='varid'>return</span> <span class='varid'>nl</span>
-<a name="line-884"></a>	     <span class='keyword'>else</span> <span class='keyword'>do</span>
-<a name="line-885"></a>		  <span class='varid'>fct</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span>
-<a name="line-886"></a>        <span class='conid'>Nothing</span>
-<a name="line-887"></a>	  <span class='keyglyph'>-&gt;</span> <span class='keyword'>do</span>
-<a name="line-888"></a>	     <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"general entity reference "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>ref</span> <span class='varop'>++</span> <span class='str'>" not processed, no definition found, (forward reference?)"</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-889"></a>	     <span class='varid'>return</span> <span class='varid'>nl</span>
-<a name="line-890"></a>      <span class='keyword'>where</span>
-<a name="line-891"></a>      <span class='varid'>nl</span>  <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='varid'>n</span>
-<a name="line-892"></a>      <span class='varid'>ref</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varid'>nl</span>
-<a name="line-893"></a>
-<a name="line-894"></a>
-<a name="line-895"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='sel'>_tagName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cl</span><span class='layout'>)</span>
-<a name="line-896"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-897"></a>      <span class='varid'>al'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>substGeneralEntityInAttr</span> <span class='varid'>rl</span> <span class='varop'>$$&lt;</span> <span class='varid'>al</span>
-<a name="line-898"></a>      <span class='varid'>cl'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span>  <span class='varop'>$$&lt;</span> <span class='varid'>cl</span>
-<a name="line-899"></a>      <span class='varid'>return</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varid'>replaceAttrl</span> <span class='varid'>al'</span> <span class='varop'>.&gt;</span> <span class='varid'>replaceChildren</span> <span class='varid'>cl'</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-900"></a>
-<a name="line-901"></a><span class='definition'>processGeneralEntity</span> <span class='sel'>_cx</span> <span class='sel'>_rl</span> <span class='varid'>n</span>
-<a name="line-902"></a>    <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n</span>
-<a name="line-903"></a>
-<a name="line-904"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-905"></a>
-<a name="line-906"></a><a name="substGeneralEntityInAttr"></a><span class='definition'>substGeneralEntityInAttr</span>	<span class='keyglyph'>::</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>
-<a name="line-907"></a><span class='definition'>substGeneralEntityInAttr</span> <span class='varid'>rl</span> <span class='varid'>a</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>aValue</span><span class='layout'>)</span>
-<a name="line-908"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-909"></a>      <span class='varid'>nv</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>substGeneralEntityInAValue</span> <span class='varid'>rl</span> <span class='varop'>$$&lt;</span> <span class='varid'>aValue</span>
-<a name="line-910"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='varid'>nv</span> <span class='varid'>a</span><span class='layout'>)</span>
-<a name="line-911"></a>
-<a name="line-912"></a><span class='definition'>substGeneralEntityInAttr</span> <span class='keyword'>_</span> <span class='keyword'>_</span>
-<a name="line-913"></a>    <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-914"></a>
-<a name="line-915"></a><a name="substGeneralEntityInAValue"></a><span class='definition'>substGeneralEntityInAValue</span>	<span class='keyglyph'>::</span> <span class='conid'>RecList</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>GeStateFilter</span>
-<a name="line-916"></a><span class='definition'>substGeneralEntityInAValue</span> <span class='varid'>rl</span>
-<a name="line-917"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processGeneralEntity</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='varid'>rl</span>
-<a name="line-918"></a>	<span class='varop'>`whenM`</span>
-<a name="line-919"></a>	<span class='varid'>isXEntityRef</span>
-<a name="line-920"></a>      <span class='layout'>)</span>
-<a name="line-921"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-922"></a>      <span class='varid'>liftMf</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>modifyText</span> <span class='varid'>normalizeWhiteSpace</span> <span class='varop'>`when`</span> <span class='varid'>isXText</span><span class='layout'>)</span>
-<a name="line-923"></a>	      <span class='varop'>.&gt;</span>
-<a name="line-924"></a>	      <span class='layout'>(</span><span class='varid'>transfCharRef</span> <span class='varop'>`when`</span> <span class='varid'>isXCharRef</span><span class='layout'>)</span>
-<a name="line-925"></a>	    <span class='layout'>)</span>
-<a name="line-926"></a>      <span class='keyword'>where</span>
-<a name="line-927"></a>      <span class='varid'>normalizeWhiteSpace</span>
-<a name="line-928"></a>	  <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>c</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>if</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>"\n\t\r"</span> <span class='keyword'>then</span> <span class='chr'>' '</span> <span class='keyword'>else</span> <span class='varid'>c</span> <span class='layout'>)</span>
-<a name="line-929"></a>
-<a name="line-930"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-931"></a>
-<a name="line-932"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-DefaultURI.html b/doc/hdoc/src/Text-XML-HXT-Parser-DefaultURI.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-DefaultURI.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- defaut uri computation</span>
-<a name="line-4"></a><span class='comment'>-- this routine is platform dependent</span>
-<a name="line-5"></a><span class='comment'>-- and must be exchanged when porting the toolbox e.g. to windows</span>
-<a name="line-6"></a><span class='comment'>--</span>
-<a name="line-7"></a><span class='comment'>-- Version : $Id: DefaultURI.hs,v 1.4 2006/03/02 10:13:57 hxml Exp $</span>
-<a name="line-8"></a>
-<a name="line-9"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DefaultURI</span>
-<a name="line-10"></a>    <span class='layout'>(</span> <span class='varid'>setDefaultURI</span>
-<a name="line-11"></a>    <span class='layout'>)</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='keyword'>where</span>
-<a name="line-14"></a>
-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>
-<a name="line-20"></a>    <span class='layout'>(</span> <span class='varid'>getCurrentDirectory</span>
-<a name="line-21"></a>    <span class='layout'>)</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-24"></a>    <span class='layout'>(</span> <span class='varid'>escapeURIChar</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>isUnescapedInURI</span>
-<a name="line-26"></a>    <span class='layout'>)</span>
-<a name="line-27"></a>
-<a name="line-28"></a><a name="setDefaultURI"></a><span class='definition'>setDefaultURI</span>   <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-29"></a><span class='definition'>setDefaultURI</span>
-<a name="line-30"></a>     <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-31"></a>       <span class='varid'>wd</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varid'>getCurrentDirectory</span>
-<a name="line-32"></a>       <span class='varid'>setSysParam</span> <span class='varid'>transferDefaultURI</span> <span class='layout'>(</span><span class='str'>"file://"</span> <span class='varop'>++</span> <span class='varid'>normalize</span> <span class='varid'>wd</span> <span class='varop'>++</span> <span class='str'>"/"</span><span class='layout'>)</span>
-<a name="line-33"></a>
-<a name="line-34"></a>       <span class='keyword'>where</span>
-<a name="line-35"></a>
-<a name="line-36"></a>       <span class='comment'>-- under Windows getCurrentDirectory returns something like: "c:\path\to\file"</span>
-<a name="line-37"></a>       <span class='comment'>-- backslaches are not allowed in URIs and paths must start with a /</span>
-<a name="line-38"></a>       <span class='comment'>-- so this is transformed into "/c:/path/to/file"</span>
-<a name="line-39"></a>
-<a name="line-40"></a>       <span class='varid'>normalize</span> <span class='varid'>wd'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-41"></a>	   <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>
-<a name="line-42"></a>	       <span class='keyglyph'>=</span> <span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>concatMap</span> <span class='varid'>win32ToUriChar</span> <span class='varid'>wd'</span>
-<a name="line-43"></a>       <span class='varid'>normalize</span> <span class='varid'>wd'</span>
-<a name="line-44"></a>	   <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>wd'</span>
-<a name="line-45"></a>				 
-<a name="line-46"></a>       <span class='varid'>win32ToUriChar</span> <span class='chr'>'\\'</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span>
-<a name="line-47"></a>       <span class='varid'>win32ToUriChar</span> <span class='varid'>c</span>    <span class='keyglyph'>=</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>
-<a name="line-48"></a>
-<a name="line-49"></a>       <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>  <span class='keyglyph'>=</span> <span class='varid'>escapeURIChar</span> <span class='varid'>isUnescapedInURI</span> <span class='varid'>c</span>   <span class='comment'>-- from Network.URI</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-HtmlParser.html b/doc/hdoc/src/Text-XML-HXT-Parser-HtmlParser.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-HtmlParser.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a>
-<a name="line-3"></a><span class='comment'>{- |
-<a name="line-4"></a>   Module     : Text.XML.HXT.Parser.HtmlParser
-<a name="line-5"></a>   Copyright  : Copyright (C) 2005 Uwe Schmidt
-<a name="line-6"></a>   License    : MIT
-<a name="line-7"></a>
-<a name="line-8"></a>   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
-<a name="line-9"></a>   Stability  : stable
-<a name="line-10"></a>   Portability: portable
-<a name="line-11"></a>
-<a name="line-12"></a>   This parser tries to interprete everything as HTML
-<a name="line-13"></a>   no errors are emitted during parsing. If something looks
-<a name="line-14"></a>   weired, warning messages are inserted in the document tree.
-<a name="line-15"></a>  
-<a name="line-16"></a>   Module contains state filter for easy parsing and error handling
-<a name="line-17"></a>   real work is done in 'Text.XML.HXT.Parser.HtmlParsec'
-<a name="line-18"></a>
-<a name="line-19"></a>-}</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>
-<a name="line-24"></a>    <span class='layout'>(</span> <span class='varid'>getHtmlDoc</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>parseHtmlDoc</span>
-<a name="line-26"></a>    <span class='layout'>,</span> <span class='varid'>runHtmlParser</span>
-<a name="line-27"></a>    <span class='layout'>,</span> <span class='varid'>substHtmlEntities</span>
-<a name="line-28"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span>
-<a name="line-29"></a>    <span class='layout'>)</span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class='keyword'>where</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>
-<a name="line-38"></a>    <span class='layout'>(</span> <span class='varid'>getXmlContents</span>
-<a name="line-39"></a>    <span class='layout'>)</span>
-<a name="line-40"></a>
-<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-42"></a>    <span class='layout'>(</span> <span class='varid'>traceTree</span>
-<a name="line-43"></a>    <span class='layout'>,</span> <span class='varid'>traceSource</span>
-<a name="line-44"></a>    <span class='layout'>,</span> <span class='varid'>traceMsg</span>
-<a name="line-45"></a>    <span class='layout'>)</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XhtmlEntities</span>
-<a name="line-48"></a>    <span class='layout'>(</span> <span class='varid'>xhtmlEntities</span>
-<a name="line-49"></a>    <span class='layout'>)</span>
-<a name="line-50"></a>
-<a name="line-51"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-52"></a>
-<a name="line-53"></a><span class='comment'>-- |</span>
-<a name="line-54"></a><span class='comment'>-- read a document and parse it with 'parseHtmlDoc'. The main entry point of this module</span>
-<a name="line-55"></a><span class='comment'>--</span>
-<a name="line-56"></a><span class='comment'>-- The input tree must be a root tree like in '	Text.XML.HXT.Parser.MainFunctions.getXmlDoc'. The content is read with 'Text.XML.HXT.Parser.XmlInput.getXmlContents',</span>
-<a name="line-57"></a><span class='comment'>-- is parsed with 'parseHtmlDoc' and canonicalized (char refs are substituted in content and attributes,</span>
-<a name="line-58"></a><span class='comment'>-- but comment is preserved)</span>
-<a name="line-59"></a><span class='comment'>--</span>
-<a name="line-60"></a><span class='comment'>-- see also : 'Text.XML.HXT.Parser.DTDProcessing.getWellformedDoc'</span>
-<a name="line-61"></a>
-<a name="line-62"></a><a name="getHtmlDoc"></a><span class='definition'>getHtmlDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-63"></a><span class='definition'>getHtmlDoc</span>
-<a name="line-64"></a>    <span class='keyglyph'>=</span> <span class='varid'>setSystemParams</span>
-<a name="line-65"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-66"></a>      <span class='varid'>getXmlContents</span>
-<a name="line-67"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-68"></a>      <span class='varid'>parseHtmlDoc</span>
-<a name="line-69"></a>
-<a name="line-70"></a><span class='comment'>-- | The HTML parsing filter</span>
-<a name="line-71"></a><span class='comment'>--</span>
-<a name="line-72"></a><span class='comment'>-- The input is parsed with 'runHtmlParser', everything is interpreted as HTML,</span>
-<a name="line-73"></a><span class='comment'>-- if errors ocuur, the parser will try to do some meaningfull action and continues</span>
-<a name="line-74"></a><span class='comment'>-- parsing. Afterwards the entitiy references for defined for XHTML are resovled,</span>
-<a name="line-75"></a><span class='comment'>-- any unresolved reference is transformed into plain text.</span>
-<a name="line-76"></a><span class='comment'>--</span>
-<a name="line-77"></a><span class='comment'>-- Error messages</span>
-<a name="line-78"></a><span class='comment'>-- during parsing and entity resolving are added as warning nodes into the resulting tree.</span>
-<a name="line-79"></a><span class='comment'>--</span>
-<a name="line-80"></a><span class='comment'>-- The warnings are issued, if the 1. parameter noWarnings is set to True,</span>
-<a name="line-81"></a><span class='comment'>-- afterwards all are removed from the resulting tree.</span>
-<a name="line-82"></a>
-<a name="line-83"></a><a name="parseHtmlDoc"></a><span class='definition'>parseHtmlDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-84"></a><span class='definition'>parseHtmlDoc</span>
-<a name="line-85"></a>    <span class='keyglyph'>=</span> <span class='varid'>parseDoc</span>
-<a name="line-86"></a>      <span class='varop'>`whenM`</span> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>.&gt;</span> <span class='varid'>getChildren</span> <span class='varop'>.&gt;</span> <span class='varid'>isXText</span> <span class='layout'>)</span>
-<a name="line-87"></a>      <span class='keyword'>where</span>
-<a name="line-88"></a>      <span class='varid'>parseDoc</span> <span class='varid'>t'</span>
-<a name="line-89"></a>	  <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"parseHtmlDoc: parse HTML document "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>loc</span><span class='layout'>)</span>
-<a name="line-90"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-91"></a>	      <span class='varid'>runHtmlParser</span>
-<a name="line-92"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-93"></a>	      <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>processTopDown</span> <span class='varid'>substHtmlEntities</span><span class='layout'>)</span>
-<a name="line-94"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-95"></a>	      <span class='varid'>removeWarnings</span>
-<a name="line-96"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-97"></a>	      <span class='varid'>traceTree</span>
-<a name="line-98"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-99"></a>	      <span class='varid'>traceSource</span>
-<a name="line-100"></a>              <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t'</span>
-<a name="line-101"></a>	  <span class='keyword'>where</span>
-<a name="line-102"></a>	  <span class='varid'>loc</span>    <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>t'</span>			<span class='comment'>-- get document source uri</span>
-<a name="line-103"></a>
-<a name="line-104"></a>      <span class='varid'>removeWarnings</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-105"></a>      <span class='varid'>removeWarnings</span> <span class='varid'>t'</span>
-<a name="line-106"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>let</span>
-<a name="line-107"></a>	    <span class='varid'>noWarnings</span>  <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasOption</span> <span class='varid'>a_issue_warnings</span><span class='layout'>)</span> <span class='varid'>t'</span><span class='layout'>)</span>
-<a name="line-108"></a>	    <span class='varid'>selWarnings</span> <span class='keyglyph'>=</span> <span class='varid'>deep</span>
-<a name="line-109"></a>			  <span class='layout'>(</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isWarning</span> <span class='conop'>:-&gt;</span> <span class='varid'>this</span>
-<a name="line-110"></a>				   <span class='layout'>,</span> <span class='varid'>isXTag</span>    <span class='conop'>:-&gt;</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>.&gt;</span> <span class='varid'>selWarnings</span><span class='layout'>)</span>
-<a name="line-111"></a>				   <span class='keyglyph'>]</span>
-<a name="line-112"></a>			  <span class='layout'>)</span>
-<a name="line-113"></a>	    <span class='varid'>remWarnings</span> <span class='keyglyph'>=</span> <span class='varid'>processTopDown</span>
-<a name="line-114"></a>			  <span class='layout'>(</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isWarning</span> <span class='conop'>:-&gt;</span> <span class='varid'>none</span>
-<a name="line-115"></a>				   <span class='layout'>,</span> <span class='varid'>isXTag</span>    <span class='conop'>:-&gt;</span> <span class='layout'>(</span><span class='varid'>processAttrl</span> <span class='layout'>(</span><span class='varid'>remWarnings</span> <span class='varop'>$$</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-116"></a>				   <span class='layout'>,</span> <span class='varid'>this</span>      <span class='conop'>:-&gt;</span> <span class='varid'>this</span>
-<a name="line-117"></a>				   <span class='keyglyph'>]</span>
-<a name="line-118"></a>			  <span class='layout'>)</span>
-<a name="line-119"></a>	    <span class='varid'>warnings</span> <span class='keyglyph'>=</span> <span class='varid'>selWarnings</span> <span class='varid'>t'</span>
-<a name="line-120"></a>	    <span class='keyword'>in</span> <span class='keyword'>do</span> 
-<a name="line-121"></a>	       <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>warnings</span>
-<a name="line-122"></a>		  <span class='keyword'>then</span> <span class='varid'>thisM</span> <span class='varid'>t'</span>
-<a name="line-123"></a>		  <span class='keyword'>else</span> <span class='keyword'>do</span>
-<a name="line-124"></a>		       <span class='keyword'>if</span> <span class='varid'>noWarnings</span>
-<a name="line-125"></a>			  <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-126"></a>			  <span class='keyword'>else</span> <span class='keyword'>do</span>
-<a name="line-127"></a>			       <span class='varid'>issueError</span> <span class='varop'>$$&lt;</span> <span class='varid'>warnings</span>
-<a name="line-128"></a>		       <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>remWarnings</span> <span class='varid'>t'</span><span class='layout'>)</span>
-<a name="line-129"></a>
-<a name="line-130"></a><span class='comment'>-- | The pure HTML parser, usually called via 'parseHtmlDoc'.</span>
-<a name="line-131"></a><span class='comment'>--</span>
-<a name="line-132"></a>
-<a name="line-133"></a><a name="runHtmlParser"></a><span class='definition'>runHtmlParser</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-134"></a><span class='definition'>runHtmlParser</span> <span class='varid'>t</span>
-<a name="line-135"></a>    <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>errs</span>
-<a name="line-136"></a>      <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-137"></a>	   <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='varid'>res</span> <span class='varid'>t</span><span class='layout'>)</span>
-<a name="line-138"></a>      <span class='keyword'>else</span> <span class='keyword'>do</span>
-<a name="line-139"></a>	   <span class='varid'>issueError</span> <span class='varop'>$$&lt;</span> <span class='varid'>errs</span>
-<a name="line-140"></a>	   <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_err</span> <span class='str'>"parsing HTML"</span> <span class='varid'>t</span><span class='layout'>)</span>
-<a name="line-141"></a>      <span class='keyword'>where</span>
-<a name="line-142"></a>      <span class='varid'>res</span>  <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varop'>.&gt;</span> <span class='varid'>parseHtmlText</span> <span class='varid'>loc</span> <span class='varop'>$</span> <span class='varid'>t</span>
-<a name="line-143"></a>      <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>isXError</span> <span class='varop'>.&gt;</span> <span class='varid'>neg</span> <span class='varid'>isWarning</span> <span class='varop'>$$</span> <span class='varid'>res</span>
-<a name="line-144"></a>      <span class='varid'>loc</span>  <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>t</span>
-<a name="line-145"></a>
-<a name="line-146"></a>
-<a name="line-147"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-148"></a><span class='comment'>--</span>
-<a name="line-149"></a><span class='comment'>-- XHTML entities</span>
-<a name="line-150"></a>
-<a name="line-151"></a><a name="substHtmlEntities"></a><span class='definition'>substHtmlEntities</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-152"></a><span class='definition'>substHtmlEntities</span>
-<a name="line-153"></a>    <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isXEntityRef</span>	<span class='conop'>:-&gt;</span> <span class='varid'>substEntity</span>
-<a name="line-154"></a>	     <span class='layout'>,</span> <span class='varid'>isXTag</span>		<span class='conop'>:-&gt;</span> <span class='varid'>processAttr</span> <span class='layout'>(</span><span class='varid'>processChildren</span> <span class='varid'>substHtmlEntities</span><span class='layout'>)</span>
-<a name="line-155"></a>	     <span class='layout'>,</span> <span class='varid'>this</span>		<span class='conop'>:-&gt;</span> <span class='varid'>this</span>
-<a name="line-156"></a>	     <span class='keyglyph'>]</span>
-<a name="line-157"></a>      <span class='keyword'>where</span>
-<a name="line-158"></a>      <span class='varid'>substEntity</span> <span class='varid'>t'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>en</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-159"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>en</span> <span class='varid'>xhtmlEntities</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-160"></a>	    <span class='conid'>Just</span> <span class='varid'>i</span>
-<a name="line-161"></a>		<span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='varid'>mkXCharRefTree</span> <span class='varid'>i</span><span class='keyglyph'>]</span>
-<a name="line-162"></a>	    <span class='conid'>Nothing</span>
-<a name="line-163"></a>		<span class='keyglyph'>-&gt;</span> <span class='varid'>xwarn</span> <span class='layout'>(</span><span class='str'>"no XHTML entity found for reference: \"&amp;"</span> <span class='varop'>++</span> <span class='varid'>en</span> <span class='varop'>++</span> <span class='str'>";\""</span><span class='layout'>)</span>
-<a name="line-164"></a>		   <span class='varop'>++</span>
-<a name="line-165"></a>		   <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='keyglyph'>[</span><span class='varid'>t'</span><span class='keyglyph'>]</span><span class='layout'>)</span>
-<a name="line-166"></a>
-<a name="line-167"></a>      <span class='varid'>substEntity</span> <span class='keyword'>_</span>
-<a name="line-168"></a>	  <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='str'>"substHtmlEntities: illegal argument"</span>
-<a name="line-169"></a>
-<a name="line-170"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-MainFunctions.html b/doc/hdoc/src/Text-XML-HXT-Parser-MainFunctions.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-MainFunctions.html
+++ /dev/null
@@ -1,468 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- Simple parse functions.</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- Version : $Id: MainFunctions.hs,v 1.2 2004/11/20 16:53:15 hxml Exp $</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>--</span>
-<a name="line-7"></a><span class='comment'>-- the main building blocks for an application.</span>
-<a name="line-8"></a><span class='comment'>-- this module exports complex filters and functions for</span>
-<a name="line-9"></a><span class='comment'>-- common tasks for input and parsing, output and option handling.</span>
-<a name="line-10"></a><span class='comment'>--</span>
-<a name="line-11"></a>
-<a name="line-12"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>MainFunctions</span>
-<a name="line-13"></a>    <span class='layout'>(</span> <span class='varid'>getXmlDocument</span>
-<a name="line-14"></a>    <span class='layout'>,</span> <span class='varid'>putXmlDocument</span>
-<a name="line-15"></a>
-<a name="line-16"></a>    <span class='layout'>,</span> <span class='varid'>parseDocument</span>
-<a name="line-17"></a>    <span class='layout'>,</span> <span class='varid'>writeDocument</span>
-<a name="line-18"></a>    <span class='layout'>)</span>
-<a name="line-19"></a><span class='keyword'>where</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>
-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>
-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>
-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>
-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='comment'>-- |</span>
-<a name="line-36"></a><span class='comment'>-- convenient function for reading a XML document without</span>
-<a name="line-37"></a><span class='comment'>-- dealing with state monads, error messages collection and other details</span>
-<a name="line-38"></a><span class='comment'>--</span>
-<a name="line-39"></a><span class='comment'>-- getXmlDocument calls 'parseDocument' with the list of parsing options</span>
-<a name="line-40"></a><span class='comment'>-- and an url or filename as document source.</span>
-<a name="line-41"></a><span class='comment'>--</span>
-<a name="line-42"></a><span class='comment'>-- result is a triple</span>
-<a name="line-43"></a><span class='comment'>--</span>
-<a name="line-44"></a><span class='comment'>-- * the resulting document tree with a root node containing all</span>
-<a name="line-45"></a><span class='comment'>--   meta info about the document (options, status info, http header, ...)</span>
-<a name="line-46"></a><span class='comment'>--</span>
-<a name="line-47"></a><span class='comment'>-- - the list of errors and warnings</span>
-<a name="line-48"></a><span class='comment'>--</span>
-<a name="line-49"></a><span class='comment'>-- - the error level: one of 'c_ok', 'c_warn', 'c_err', 'c_fatal'</span>
-<a name="line-50"></a><span class='comment'>--</span>
-<a name="line-51"></a><span class='comment'>-- example for input (see also example in 'putXmlDocument' and example in 'writeDocument')</span>
-<a name="line-52"></a><span class='comment'>--</span>
-<a name="line-53"></a><span class='comment'>-- &gt; main :: IO ()</span>
-<a name="line-54"></a><span class='comment'>-- &gt; main</span>
-<a name="line-55"></a><span class='comment'>-- &gt;   = do</span>
-<a name="line-56"></a><span class='comment'>-- &gt;     (res, errs, rc) &lt;- getXmlDocument [] "test.xml"</span>
-<a name="line-57"></a><span class='comment'>-- &gt;     if rc &gt;= c_err</span>
-<a name="line-58"></a><span class='comment'>-- &gt;       then issueErrors errs</span>
-<a name="line-59"></a><span class='comment'>-- &gt;       else processTree res</span>
-<a name="line-60"></a><span class='comment'>-- &gt;</span>
-<a name="line-61"></a><span class='comment'>-- &gt; issueErrors :: XmlTrees -&gt; IO ()</span>
-<a name="line-62"></a><span class='comment'>-- &gt;</span>
-<a name="line-63"></a><span class='comment'>-- &gt; processTree :: XmlTree  -&gt; IO ()</span>
-<a name="line-64"></a><span class='comment'>--</span>
-<a name="line-65"></a><span class='comment'>-- for options see 'parseDocument', 'a_collect_errors' is set implicitly</span>
-<a name="line-66"></a>
-<a name="line-67"></a><a name="getXmlDocument"></a><span class='definition'>getXmlDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>XmlTree</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>
-<a name="line-68"></a><span class='definition'>getXmlDocument</span> <span class='varid'>options</span> <span class='varid'>url</span>
-<a name="line-69"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-70"></a>      <span class='keyword'>let</span> <span class='varid'>options'</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_collect_errors</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span>		<span class='comment'>-- collect errors</span>
-<a name="line-71"></a>		     <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_issue_errors</span><span class='layout'>,</span>   <span class='varid'>v_0</span><span class='layout'>)</span>		<span class='comment'>-- but don't issue</span>
-<a name="line-72"></a>		     <span class='keyglyph'>]</span>					<span class='comment'>-- can be overwritten by supporting other values in options</span>
-<a name="line-73"></a>	             <span class='varop'>++</span>
-<a name="line-74"></a>		     <span class='varid'>options</span>
-<a name="line-75"></a>		     <span class='varop'>++</span>
-<a name="line-76"></a>		     <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_source</span><span class='layout'>,</span> <span class='varid'>url</span><span class='layout'>)</span>			<span class='comment'>-- set the source url</span>
-<a name="line-77"></a>		     <span class='keyglyph'>]</span>
-<a name="line-78"></a>      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>run'</span> <span class='varop'>$</span> <span class='varid'>parseDocument</span> <span class='varid'>options'</span> <span class='varid'>emptyRoot</span>
-<a name="line-79"></a>      <span class='keyword'>let</span> <span class='varid'>root</span> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varid'>res</span>
-<a name="line-80"></a>      <span class='keyword'>let</span> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>tail</span> <span class='varid'>res</span>
-<a name="line-81"></a>      <span class='keyword'>let</span> <span class='varid'>elvl</span> <span class='keyglyph'>=</span> <span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>root</span>
-<a name="line-82"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>root</span><span class='layout'>,</span> <span class='varid'>errs</span><span class='layout'>,</span> <span class='varid'>elvl</span><span class='layout'>)</span>
-<a name="line-83"></a>
-<a name="line-84"></a>
-<a name="line-85"></a><span class='comment'>-- |</span>
-<a name="line-86"></a><span class='comment'>-- the inverse operation to 'getXmlDocument'</span>
-<a name="line-87"></a><span class='comment'>--</span>
-<a name="line-88"></a><span class='comment'>-- writes a complete document tree to a file, writing can be</span>
-<a name="line-89"></a><span class='comment'>-- controlled by options, the real work is done with filter 'writeDocument'.</span>
-<a name="line-90"></a><span class='comment'>-- useful options are the options of 'writeDocument'.</span>
-<a name="line-91"></a><span class='comment'>--</span>
-<a name="line-92"></a><span class='comment'>-- result is a pair: 1.part is a list of error messages, 2. part is the return code,</span>
-<a name="line-93"></a><span class='comment'>-- the status info of the write filter</span>
-<a name="line-94"></a><span class='comment'>--</span>
-<a name="line-95"></a><span class='comment'>-- this filter is useful, when processing XML in an arbitray context in the IO monad</span>
-<a name="line-96"></a><span class='comment'>--</span>
-<a name="line-97"></a><span class='comment'>-- an example main program for such an application is:</span>
-<a name="line-98"></a><span class='comment'>--</span>
-<a name="line-99"></a><span class='comment'>-- &gt; main :: IO ()</span>
-<a name="line-100"></a><span class='comment'>-- &gt; main</span>
-<a name="line-101"></a><span class='comment'>-- &gt;   = do</span>
-<a name="line-102"></a><span class='comment'>-- &gt;     (input, readErrs, rc) &lt;- getXmlDocument [...] "test.xml"</span>
-<a name="line-103"></a><span class='comment'>-- &gt;     if rc &gt;= c_err</span>
-<a name="line-104"></a><span class='comment'>-- &gt;       then issueErrors readErrs</span>
-<a name="line-105"></a><span class='comment'>-- &gt;       else processTree input</span>
-<a name="line-106"></a><span class='comment'>-- &gt;</span>
-<a name="line-107"></a><span class='comment'>-- &gt; processTree :: XmlTree -&gt; IO ()</span>
-<a name="line-108"></a><span class='comment'>-- &gt; processTree t</span>
-<a name="line-109"></a><span class='comment'>-- &gt;   = let res = computeNewTree input</span>
-<a name="line-110"></a><span class='comment'>-- &gt;     in do</span>
-<a name="line-111"></a><span class='comment'>-- &gt;        (writeErrs, rc2) &lt;- putXmlDocument [...] "out.xml" res</span>
-<a name="line-112"></a><span class='comment'>-- &gt;        if rc2 &gt;= c_err</span>
-<a name="line-113"></a><span class='comment'>-- &gt;          then issueErrors writeErrs</span>
-<a name="line-114"></a><span class='comment'>-- &gt;          else return ()</span>
-<a name="line-115"></a><span class='comment'>-- &gt;</span>
-<a name="line-116"></a><span class='comment'>-- &gt; issueErrors :: XmlTrees -&gt; IO ()</span>
-<a name="line-117"></a><span class='comment'>-- &gt;</span>
-<a name="line-118"></a><span class='comment'>-- &gt; computeNewTree :: XmlTree -&gt; XmlTree</span>
-<a name="line-119"></a>
-<a name="line-120"></a>
-<a name="line-121"></a><a name="putXmlDocument"></a><span class='definition'>putXmlDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>
-<a name="line-122"></a><span class='definition'>putXmlDocument</span> <span class='varid'>options</span> <span class='varid'>fileName</span> <span class='varid'>t</span>
-<a name="line-123"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-124"></a>      <span class='keyword'>let</span> <span class='varid'>options'</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_collect_errors</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span>		<span class='comment'>-- collect errors</span>
-<a name="line-125"></a>		     <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_issue_errors</span><span class='layout'>,</span>   <span class='varid'>v_0</span><span class='layout'>)</span>		<span class='comment'>-- but don't issue</span>
-<a name="line-126"></a>		     <span class='keyglyph'>]</span>					<span class='comment'>-- can be overwritten by supporting other values in options</span>
-<a name="line-127"></a>	             <span class='varop'>++</span>
-<a name="line-128"></a>		     <span class='varid'>options</span>
-<a name="line-129"></a>		     <span class='varop'>++</span>
-<a name="line-130"></a>		     <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_output_file</span><span class='layout'>,</span> <span class='varid'>fileName</span><span class='layout'>)</span>	<span class='comment'>-- set the source url</span>
-<a name="line-131"></a>		     <span class='keyglyph'>]</span>
-<a name="line-132"></a>      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>run'</span> <span class='varop'>$</span> <span class='varid'>writeDocument</span> <span class='varid'>options'</span> <span class='varid'>t</span>
-<a name="line-133"></a>      <span class='keyword'>let</span> <span class='varid'>root</span> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varid'>res</span>
-<a name="line-134"></a>      <span class='keyword'>let</span> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>tail</span> <span class='varid'>res</span>
-<a name="line-135"></a>      <span class='keyword'>let</span> <span class='varid'>elvl</span> <span class='keyglyph'>=</span> <span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>root</span>
-<a name="line-136"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>errs</span><span class='layout'>,</span> <span class='varid'>elvl</span><span class='layout'>)</span>
-<a name="line-137"></a>
-<a name="line-138"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-139"></a>
-<a name="line-140"></a><span class='comment'>-- |</span>
-<a name="line-141"></a><span class='comment'>-- the main parsing filter</span>
-<a name="line-142"></a><span class='comment'>--</span>
-<a name="line-143"></a><span class='comment'>-- this filter can be configured by an option list, a list of</span>
-<a name="line-144"></a><span class='comment'>-- option name, option value pairs.</span>
-<a name="line-145"></a><span class='comment'>-- the input tree must be a possibly empty document root tree.</span>
-<a name="line-146"></a><span class='comment'>-- all the options are stored as attributes in this root node to control processing.</span>
-<a name="line-147"></a><span class='comment'>--</span>
-<a name="line-148"></a><span class='comment'>-- available options:</span>
-<a name="line-149"></a><span class='comment'>--</span>
-<a name="line-150"></a><span class='comment'>-- * 'a_parse_html': use HTML parser, else use XML parser (default)</span>
-<a name="line-151"></a><span class='comment'>--</span>
-<a name="line-152"></a><span class='comment'>-- - 'a_validate' : validate document (default), else skip validation</span>
-<a name="line-153"></a><span class='comment'>--</span>
-<a name="line-154"></a><span class='comment'>-- - 'a_check_namespaces' : check namespaces, else skip namespace processing (default)</span>
-<a name="line-155"></a><span class='comment'>--</span>
-<a name="line-156"></a><span class='comment'>-- - 'a_canonicalize' : canonicalize document (default), else skip canonicalization</span>
-<a name="line-157"></a><span class='comment'>--</span>
-<a name="line-158"></a><span class='comment'>-- - 'a_preserve_comment' : preserve comments during canonicalization, else remove comments (default)</span>
-<a name="line-159"></a><span class='comment'>--</span>
-<a name="line-160"></a><span class='comment'>-- - 'a_remove_whitespace' : remove all whitespace, used for document indentation, else skip this step (default)</span>
-<a name="line-161"></a><span class='comment'>--</span>
-<a name="line-162"></a><span class='comment'>-- - 'a_indent' : indent document by inserting whitespace, else skip this step (default)</span>
-<a name="line-163"></a><span class='comment'>--</span>
-<a name="line-164"></a><span class='comment'>-- - 'a_issue_warnings' : issue warnings, when parsing HTML (default), else ignore HTML parser warnings</span>
-<a name="line-165"></a><span class='comment'>--</span>
-<a name="line-166"></a><span class='comment'>-- - 'a_issue_errors' : issue all error messages on stderr (default), or ignore all error messages</span>
-<a name="line-167"></a><span class='comment'>--</span>
-<a name="line-168"></a><span class='comment'>-- - 'a_collect_errors' : all error messages are collected during processing and appended to the result document</span>
-<a name="line-169"></a><span class='comment'>-- 			  for further processing within the calling modules</span>
-<a name="line-170"></a><span class='comment'>--</span>
-<a name="line-171"></a><span class='comment'>-- - 'a_trace' : trace level: values: 0 -4</span>
-<a name="line-172"></a><span class='comment'>--</span>
-<a name="line-173"></a><span class='comment'>-- - 'a_proxy' : proxy for http access, e.g. www-cache:3128</span>
-<a name="line-174"></a><span class='comment'>--</span>
-<a name="line-175"></a><span class='comment'>-- - 'a_use_curl' : for http access via external programm curl, default is native HTTP access</span>
-<a name="line-176"></a><span class='comment'>--</span>
-<a name="line-177"></a><span class='comment'>-- - 'a_options_curl' : more options for external program curl</span>
-<a name="line-178"></a><span class='comment'>--</span>
-<a name="line-179"></a><span class='comment'>-- - 'a_source' : the document source url</span>
-<a name="line-180"></a><span class='comment'>--</span>
-<a name="line-181"></a><span class='comment'>-- - 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', ...)</span>
-<a name="line-182"></a><span class='comment'>--</span>
-<a name="line-183"></a><span class='comment'>-- examples:</span>
-<a name="line-184"></a><span class='comment'>--</span>
-<a name="line-185"></a><span class='comment'>-- &gt; parseDocument [ (a_source,   "test.xml")</span>
-<a name="line-186"></a><span class='comment'>-- &gt;               , (a_validate, "0")</span>
-<a name="line-187"></a><span class='comment'>-- &gt;               , (a_encoding, isoLatin1)</span>
-<a name="line-188"></a><span class='comment'>-- &gt;               ] emptyRoot</span>
-<a name="line-189"></a><span class='comment'>--</span>
-<a name="line-190"></a><span class='comment'>-- reads document \"test.xml\" without validation and default encoding 'isoLatin1'</span>
-<a name="line-191"></a><span class='comment'>--</span>
-<a name="line-192"></a><span class='comment'>-- &gt; parseDocument [ (a_source,         "<a href="http://www.haskell.org/">http://www.haskell.org/</a>")</span>
-<a name="line-193"></a><span class='comment'>-- &gt;               , (a_parse_html,     "1")</span>
-<a name="line-194"></a><span class='comment'>-- &gt;               , (a_proxy,          "www-cache:3128")</span>
-<a name="line-195"></a><span class='comment'>-- &gt;               , (a_curl,           "1")</span>
-<a name="line-196"></a><span class='comment'>-- &gt;               , (a_issue_warnings, "0")</span>
-<a name="line-197"></a><span class='comment'>-- &gt;               ] emptyRoot</span>
-<a name="line-198"></a><span class='comment'>--</span>
-<a name="line-199"></a><span class='comment'>-- reads Haskell homepage with HTML parser ignoring any warnings and with http access via external program curl and proxy \"www-cache\" at port 3128</span>
-<a name="line-200"></a><span class='comment'>--</span>
-<a name="line-201"></a><span class='comment'>-- &gt; parseDocument [ (a_source,            "<a href="http://www.w3c.org/">http://www.w3c.org/</a>")</span>
-<a name="line-202"></a><span class='comment'>-- &gt;               , (a_parse_html,        "0")                       -- default</span>
-<a name="line-203"></a><span class='comment'>-- &gt;               , (a_validate,          "1")                       -- default</span>
-<a name="line-204"></a><span class='comment'>-- &gt;               , (a_check_namespace,   "1")</span>
-<a name="line-205"></a><span class='comment'>-- &gt;               , (a_remove_whitespace, "1")</span>
-<a name="line-206"></a><span class='comment'>-- &gt;               , (a_trace,             "2")</span>
-<a name="line-207"></a><span class='comment'>-- &gt;               ] emptyRoot</span>
-<a name="line-208"></a><span class='comment'>--</span>
-<a name="line-209"></a><span class='comment'>-- read w3c home page, validate and chech namespaces, remove whitespace between tags, trace activities with level 2</span>
-<a name="line-210"></a><span class='comment'>--</span>
-<a name="line-211"></a><span class='comment'>-- &gt; parseDocument [ (a_source,   "test.xml")</span>
-<a name="line-212"></a><span class='comment'>-- &gt;               , (a_validate,        "1")</span>
-<a name="line-213"></a><span class='comment'>-- &gt;               , (a_check_namespace, "1")</span>
-<a name="line-214"></a><span class='comment'>-- &gt;               , (a_collect_errors,  "1")</span>
-<a name="line-215"></a><span class='comment'>-- &gt;               , (a_issue_errors,    "0")</span>
-<a name="line-216"></a><span class='comment'>-- &gt;               ] emptyRoot</span>
-<a name="line-217"></a><span class='comment'>--</span>
-<a name="line-218"></a><span class='comment'>-- reads file \"test.xml\", validates it, checks namespaces, does not issue any erros</span>
-<a name="line-219"></a><span class='comment'>-- but collects errors and appends the list of errors to the single element list for the document.</span>
-<a name="line-220"></a><span class='comment'>-- this enables the calling application to define own error handlers.</span>
-<a name="line-221"></a>
-<a name="line-222"></a><a name="parseDocument"></a><span class='definition'>parseDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-223"></a><span class='definition'>parseDocument</span> <span class='varid'>userOptions</span>
-<a name="line-224"></a>    <span class='keyglyph'>=</span> <span class='varid'>processDocument</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>
-<a name="line-225"></a>      <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"parseDocument: options added, start processing"</span>
-<a name="line-226"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-227"></a>	<span class='varid'>traceTree</span>
-<a name="line-228"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-229"></a>	<span class='varid'>getXmlContents</span>					<span class='comment'>-- get the content as text</span>
-<a name="line-230"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-231"></a>	<span class='varid'>choiceM</span>						<span class='comment'>-- select parser</span>
-<a name="line-232"></a>	<span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_html</span>
-<a name="line-233"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>parseHtmlDoc</span>			<span class='comment'>-- parse everything as HTML</span>
-<a name="line-234"></a>	<span class='layout'>,</span> <span class='varid'>this</span>
-<a name="line-235"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>checkWellformedDoc</span>			<span class='comment'>-- parse XML and process entities</span>
-<a name="line-236"></a>	            <span class='varop'>.&gt;&gt;</span>
-<a name="line-237"></a>                    <span class='layout'>(</span> <span class='varid'>getValidatedDoc</span>			<span class='comment'>-- validate</span>
-<a name="line-238"></a>		      <span class='varop'>`whenM`</span>
-<a name="line-239"></a>		      <span class='varid'>hasOption</span> <span class='varid'>a_validate</span>
-<a name="line-240"></a>		    <span class='layout'>)</span>
-<a name="line-241"></a>	<span class='keyglyph'>]</span>
-<a name="line-242"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-243"></a>	<span class='layout'>(</span> <span class='varid'>propagateAndValidateNamespaces</span>			<span class='comment'>-- namespace processing</span>
-<a name="line-244"></a>	  <span class='varop'>`whenM`</span>
-<a name="line-245"></a>	  <span class='varid'>hasOption</span> <span class='varid'>a_check_namespaces</span>
-<a name="line-246"></a>	<span class='layout'>)</span>
-<a name="line-247"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-248"></a>	<span class='varid'>liftMf</span>						<span class='comment'>-- canonicalization</span>
-<a name="line-249"></a>	<span class='layout'>(</span> <span class='varid'>choice</span>
-<a name="line-250"></a>	  <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_preserve_comment</span>		<span class='comment'>-- don't remove comments (in XPath required)</span>
-<a name="line-251"></a> 	  	<span class='conop'>:-&gt;</span> <span class='varid'>canonicalizeForXPath</span>
-<a name="line-252"></a>	  <span class='layout'>,</span> <span class='varid'>this</span>
-<a name="line-253"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>canonicalizeAllNodes</span>		<span class='comment'>-- do normal canonicaliazion</span>
-<a name="line-254"></a>	  <span class='keyglyph'>]</span>
-<a name="line-255"></a>	  <span class='varop'>`when`</span>
-<a name="line-256"></a>	  <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span>			<span class='comment'>-- caconicalization can be switched off</span>
-<a name="line-257"></a>	<span class='layout'>)</span>
-<a name="line-258"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-259"></a>	<span class='varid'>liftMf</span>
-<a name="line-260"></a>	<span class='layout'>(</span> <span class='varid'>removeDocWhiteSpace</span>				<span class='comment'>-- remove all whitespace between tags</span>
-<a name="line-261"></a>	  <span class='varop'>`when`</span>
-<a name="line-262"></a>	  <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span>
-<a name="line-263"></a>	<span class='layout'>)</span>
-<a name="line-264"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-265"></a>	<span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"parseDocument: document processed"</span>	<span class='comment'>-- trace output</span>
-<a name="line-266"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-267"></a>	<span class='varid'>traceSource</span>
-<a name="line-268"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-269"></a>	<span class='varid'>traceTree</span>
-<a name="line-270"></a>      <span class='layout'>)</span>
-<a name="line-271"></a>    <span class='keyword'>where</span>
-<a name="line-272"></a>    <span class='varid'>defaultOptions</span>
-<a name="line-273"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>a_parse_html</span><span class='layout'>,</span>		<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-274"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_validate</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-275"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_issue_errors</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-276"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_issue_warnings</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-277"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_check_namespaces</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-278"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_canonicalize</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-279"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-280"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-281"></a>	  <span class='keyglyph'>]</span>
-<a name="line-282"></a>
-<a name="line-283"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-284"></a>
-<a name="line-285"></a><a name="addOptions"></a><span class='definition'>addOptions</span>		<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-286"></a><span class='definition'>addOptions</span>
-<a name="line-287"></a>    <span class='keyglyph'>=</span> <span class='varid'>seqF</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>addAttr</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='layout'>)</span>
-<a name="line-288"></a>
-<a name="line-289"></a><a name="addDefaultOptions"></a><span class='definition'>addDefaultOptions</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-290"></a><span class='definition'>addDefaultOptions</span>
-<a name="line-291"></a>    <span class='keyglyph'>=</span> <span class='varid'>seqF</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>addAttr</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='varop'>`whenNot`</span> <span class='varid'>hasAttr</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-292"></a>
-<a name="line-293"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-294"></a>
-<a name="line-295"></a><span class='comment'>-- |</span>
-<a name="line-296"></a><span class='comment'>-- the main filter for writing documents</span>
-<a name="line-297"></a><span class='comment'>--</span>
-<a name="line-298"></a><span class='comment'>-- this filter can be configured by an option list like 'getXmlDocument'</span>
-<a name="line-299"></a><span class='comment'>--</span>
-<a name="line-300"></a><span class='comment'>-- available options are</span>
-<a name="line-301"></a><span class='comment'>--</span>
-<a name="line-302"></a><span class='comment'>-- * 'a_indent' : indent document for readability, (default: no indentation)</span>
-<a name="line-303"></a><span class='comment'>--</span>
-<a name="line-304"></a><span class='comment'>-- - 'a_remove_whitespace' : remove all redundant whitespace for shorten text (default: no removal)</span>
-<a name="line-305"></a><span class='comment'>--</span>
-<a name="line-306"></a><span class='comment'>-- - 'a_output_file' : destination file for document, default is \"-\" for stdout</span>
-<a name="line-307"></a><span class='comment'>--</span>
-<a name="line-308"></a><span class='comment'>-- - 'a_output_encoding' : encoding of document, default is 'a_encoding' or 'utf8'</span>
-<a name="line-309"></a><span class='comment'>--</span>
-<a name="line-310"></a><span class='comment'>-- - 'a_output_xml' : (default) issue XML: quote special XML chars \&gt;,\&lt;,\",\',&amp;</span>
-<a name="line-311"></a><span class='comment'>--                    add XML processing instruction</span>
-<a name="line-312"></a><span class='comment'>--                    and encode document with respect to 'a_output_encoding',</span>
-<a name="line-313"></a><span class='comment'>--                    if explizitly switched of, the plain text is issued, this is useful</span>
-<a name="line-314"></a><span class='comment'>--                    for non XML output, e.g. generated Haskell code, LaTex, Java, ...</span>
-<a name="line-315"></a><span class='comment'>--</span>
-<a name="line-316"></a><span class='comment'>-- - 'a_show_tree' : show tree representation of document (for debugging)</span>
-<a name="line-317"></a><span class='comment'>--</span>
-<a name="line-318"></a><span class='comment'>-- - 'a_show_haskell' : show Haskell representaion of document (for debugging)</span>
-<a name="line-319"></a><span class='comment'>--</span>
-<a name="line-320"></a><span class='comment'>-- - 'a_issue_errors', 'a_collect_errors' : see 'parseDocument'</span>
-<a name="line-321"></a><span class='comment'>--</span>
-<a name="line-322"></a><span class='comment'>--  a typical main program running in the XmlState monad</span>
-<a name="line-323"></a><span class='comment'>--  has the following structure:</span>
-<a name="line-324"></a><span class='comment'>--</span>
-<a name="line-325"></a><span class='comment'>-- &gt;</span>
-<a name="line-326"></a><span class='comment'>-- &gt; main :: IO ()</span>
-<a name="line-327"></a><span class='comment'>-- &gt; main</span>
-<a name="line-328"></a><span class='comment'>-- &gt;     = do</span>
-<a name="line-329"></a><span class='comment'>-- &gt;       argv &lt;- getArgs                                              -- get the commandline arguments</span>
-<a name="line-330"></a><span class='comment'>-- &gt;       (inp, outp, options) &lt;- cmdlineOpts argv                     -- and evaluate them, return a key-value list</span>
-<a name="line-331"></a><span class='comment'>-- &gt;                                                                    -- and input and output</span>
-<a name="line-332"></a><span class='comment'>-- &gt;       res  &lt;- run' $ application inp outp options $ emptyRoot      -- run the application</span>
-<a name="line-333"></a><span class='comment'>-- &gt; </span>
-<a name="line-334"></a><span class='comment'>-- &gt;       exitWith (if null res</span>
-<a name="line-335"></a><span class='comment'>-- &gt;                 then ExitFailure (-1)</span>
-<a name="line-336"></a><span class='comment'>-- &gt;                 else exitSuccess</span>
-<a name="line-337"></a><span class='comment'>-- &gt;                )</span>
-<a name="line-338"></a><span class='comment'>-- &gt;</span>
-<a name="line-339"></a><span class='comment'>-- &gt; application :: String -&gt; String -&gt; Attributes -&gt; XmlStateFilter ()</span>
-<a name="line-340"></a><span class='comment'>-- &gt; application inp outp al</span>
-<a name="line-341"></a><span class='comment'>-- &gt;   = parseDocument (al ++ [(a_source, inp)])                        -- set options and source</span>
-<a name="line-342"></a><span class='comment'>-- &gt;     .&gt;&gt;                                                            -- and parse document</span>
-<a name="line-343"></a><span class='comment'>-- &gt;     processDocument                                                -- the hard work</span>
-<a name="line-344"></a><span class='comment'>-- &gt;     .&gt;&gt;</span>
-<a name="line-345"></a><span class='comment'>-- &gt;     writeDocument [(a_output_file, outp)]                          -- issue results</span>
-<a name="line-346"></a><span class='comment'>-- &gt;     .&gt;&gt;</span>
-<a name="line-347"></a><span class='comment'>-- &gt;     checkStatus                                                    -- check errors</span>
-<a name="line-348"></a><span class='comment'>-- &gt;</span>
-<a name="line-349"></a>
-<a name="line-350"></a>
-<a name="line-351"></a><a name="writeDocument"></a><span class='definition'>writeDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-352"></a><span class='definition'>writeDocument</span> <span class='varid'>userOptions</span>
-<a name="line-353"></a>    <span class='keyglyph'>=</span> <span class='varid'>processDocument</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>
-<a name="line-354"></a>      <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"writeDocument: options added, start processing"</span>
-<a name="line-355"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-356"></a>	<span class='varid'>liftMf</span>
-<a name="line-357"></a>	<span class='layout'>(</span> <span class='varid'>choice</span>
-<a name="line-358"></a>	  <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_indent</span>			<span class='conop'>:-&gt;</span> <span class='varid'>indentDoc</span>			<span class='comment'>-- document indentation</span>
-<a name="line-359"></a>	  <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span>	<span class='conop'>:-&gt;</span> <span class='varid'>removeDocWhiteSpace</span>		<span class='comment'>-- remove all whitespace between tags</span>
-<a name="line-360"></a>	  <span class='layout'>,</span> <span class='varid'>this</span>				<span class='conop'>:-&gt;</span> <span class='varid'>this</span>
-<a name="line-361"></a>	  <span class='keyglyph'>]</span>
-<a name="line-362"></a>	<span class='layout'>)</span>
-<a name="line-363"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-364"></a>	<span class='varid'>liftMf</span>
-<a name="line-365"></a>	<span class='layout'>(</span> <span class='varid'>choice</span>
-<a name="line-366"></a>	  <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_tree</span>	<span class='conop'>:-&gt;</span> <span class='varid'>treeRepOfXmlDoc</span>
-<a name="line-367"></a>	  <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_haskell</span>	<span class='conop'>:-&gt;</span> <span class='varid'>haskellRepOfXmlDoc</span>
-<a name="line-368"></a>	  <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_output_xml</span>	<span class='conop'>:-&gt;</span> <span class='layout'>(</span> <span class='varid'>escapeXmlDoc</span>		<span class='comment'>-- escape lt, gt, amp, quot, </span>
-<a name="line-369"></a>					      <span class='varop'>.&gt;</span>
-<a name="line-370"></a>					      <span class='varid'>addXmlPiToDoc</span>		<span class='comment'>-- add &lt;?xml ... &gt; pi</span>
-<a name="line-371"></a>					      <span class='varop'>.&gt;</span>
-<a name="line-372"></a>					      <span class='varid'>unparseXmlDoc</span>		<span class='comment'>-- convert doc into text with respect to output encoding</span>
-<a name="line-373"></a>					    <span class='layout'>)</span>
-<a name="line-374"></a>	  <span class='layout'>,</span> <span class='varid'>this</span>			<span class='conop'>:-&gt;</span> <span class='varid'>this</span>
-<a name="line-375"></a>	  <span class='keyglyph'>]</span>
-<a name="line-376"></a>	<span class='layout'>)</span>
-<a name="line-377"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-378"></a>	<span class='varid'>writeXmlDoc</span>
-<a name="line-379"></a>	<span class='varop'>.&gt;&gt;</span>
-<a name="line-380"></a>	<span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"writeDocument: finished"</span>
-<a name="line-381"></a>      <span class='layout'>)</span>
-<a name="line-382"></a>    <span class='keyword'>where</span>
-<a name="line-383"></a>    <span class='varid'>defaultOptions</span>
-<a name="line-384"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>a_output_file</span><span class='layout'>,</span>		<span class='str'>"-"</span> <span class='layout'>)</span>
-<a name="line-385"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_indent</span><span class='layout'>,</span>			<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-386"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>	<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-387"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_output_xml</span><span class='layout'>,</span>		<span class='varid'>v_1</span> <span class='layout'>)</span>
-<a name="line-388"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_output_encoding</span><span class='layout'>,</span>       <span class='varid'>utf8</span> <span class='layout'>)</span>
-<a name="line-389"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_show_tree</span><span class='layout'>,</span>		<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-390"></a>	  <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_show_haskell</span><span class='layout'>,</span>		<span class='varid'>v_0</span> <span class='layout'>)</span>
-<a name="line-391"></a>	  <span class='keyglyph'>]</span>
-<a name="line-392"></a>
-<a name="line-393"></a><a name="writeXmlDoc"></a><span class='definition'>writeXmlDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-394"></a><span class='definition'>writeXmlDoc</span> <span class='varid'>t'</span>
-<a name="line-395"></a>    <span class='keyglyph'>=</span> <span class='varid'>put</span> <span class='varid'>t'</span>
-<a name="line-396"></a>    <span class='keyword'>where</span>
-<a name="line-397"></a>    <span class='varid'>put</span>
-<a name="line-398"></a>	<span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>fn</span> <span class='varop'>||</span> <span class='varid'>fn</span> <span class='varop'>==</span> <span class='str'>"-"</span>	<span class='keyglyph'>=</span> <span class='varid'>putXmlDoc</span>
-<a name="line-399"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='varid'>putXmlDocToFile</span> <span class='varid'>fn</span>
-<a name="line-400"></a>
-<a name="line-401"></a>    <span class='varid'>fn</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getValue</span> <span class='varid'>a_output_file</span> <span class='varop'>$</span> <span class='varid'>t'</span>
-<a name="line-402"></a>
-<a name="line-403"></a>
-<a name="line-404"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-405"></a><span class='comment'>--</span>
-<a name="line-406"></a>
-<a name="line-407"></a><span class='comment'>-- |</span>
-<a name="line-408"></a><span class='comment'>-- wrapper filter for running a monadic filter</span>
-<a name="line-409"></a><span class='comment'>-- controlled by common options</span>
-<a name="line-410"></a><span class='comment'>--</span>
-<a name="line-411"></a><span class='comment'>-- input tree must be a complete document</span>
-<a name="line-412"></a><span class='comment'>-- parameters and default parameters can be used to contol</span>
-<a name="line-413"></a><span class='comment'>-- the filer and common tasks like error message handling</span>
-<a name="line-414"></a>
-<a name="line-415"></a><a name="processDocument"></a><span class='definition'>processDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-416"></a><span class='definition'>processDocument</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span> <span class='varid'>processFilter</span>
-<a name="line-417"></a>    <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>isRoot</span>
-<a name="line-418"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-419"></a>      <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addOptions</span> <span class='varid'>userOptions</span>
-<a name="line-420"></a>	      <span class='varop'>.&gt;</span>
-<a name="line-421"></a>	      <span class='varid'>addOptions</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_status</span><span class='layout'>,</span> <span class='varid'>show</span> <span class='varid'>c_ok</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-422"></a>	     <span class='layout'>)</span>
-<a name="line-423"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-424"></a>      <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addDefaultOptions</span> <span class='varid'>defaultOptions</span><span class='layout'>)</span>
-<a name="line-425"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-426"></a>      <span class='varid'>setSystemParams</span>							<span class='comment'>-- store options in system state</span>
-<a name="line-427"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-428"></a>      <span class='varid'>choiceM</span>
-<a name="line-429"></a>      <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_propagate_errors</span>					<span class='comment'>-- error handling is set by calling environment</span>
-<a name="line-430"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>thisM</span>
-<a name="line-431"></a>
-<a name="line-432"></a>      <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_collect_errors</span>
-<a name="line-433"></a>	<span class='varop'>.&gt;</span>
-<a name="line-434"></a>	<span class='varid'>hasOption</span> <span class='varid'>a_issue_errors</span>
-<a name="line-435"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>setSysErrorHandler</span> <span class='layout'>(</span><span class='varid'>errorMsgLogging</span><span class='varop'>.&gt;&gt;</span> <span class='varid'>errorMsgToStderr</span><span class='layout'>)</span>	<span class='layout'>)</span>
-<a name="line-436"></a>
-<a name="line-437"></a>      <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_collect_errors</span>
-<a name="line-438"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>setSysErrorHandler</span> <span class='varid'>errorMsgLogging</span>	<span class='layout'>)</span>
-<a name="line-439"></a>
-<a name="line-440"></a>      <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_issue_errors</span>
-<a name="line-441"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>setSysErrorHandler</span> <span class='varid'>errorMsgToStderr</span>	<span class='layout'>)</span>
-<a name="line-442"></a>
-<a name="line-443"></a>      <span class='layout'>,</span> <span class='varid'>this</span>
-<a name="line-444"></a>		<span class='conop'>:-&gt;</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>setSysErrorHandler</span> <span class='varid'>noneM</span>		<span class='layout'>)</span>
-<a name="line-445"></a>      <span class='keyglyph'>]</span>
-<a name="line-446"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-447"></a>      <span class='varid'>processFilter</span>
-<a name="line-448"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-449"></a>      <span class='layout'>(</span> <span class='varid'>thisM</span>
-<a name="line-450"></a>        <span class='varop'>+++&gt;&gt;</span>
-<a name="line-451"></a>	<span class='layout'>(</span> <span class='varid'>hasOption</span> <span class='varid'>a_collect_errors</span>
-<a name="line-452"></a>          <span class='varop'>`guardsM`</span>
-<a name="line-453"></a>	  <span class='varid'>getErrorMsg</span>
-<a name="line-454"></a>	<span class='layout'>)</span>
-<a name="line-455"></a>      <span class='layout'>)</span>
-<a name="line-456"></a>
-<a name="line-457"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-458"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandler.html b/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandler.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandler.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- protocol handler functions</span>
-<a name="line-4"></a><span class='comment'>-- configuration file</span>
-<a name="line-5"></a><span class='comment'>-- real handler is generated with cpp</span>
-<a name="line-6"></a><span class='comment'>--</span>
-<a name="line-7"></a><span class='comment'>-- Version : $Id: ProtocolHandler.hs,v 1.4 2006/03/03 14:20:17 hxml Exp $</span>
-<a name="line-8"></a>
-<a name="line-9"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandler</span>
-<a name="line-10"></a>    <span class='layout'>(</span> <span class='varid'>getProtocolHandler</span>
-<a name="line-11"></a>    <span class='layout'>)</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='keyword'>where</span>
-<a name="line-14"></a>
-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-18"></a><span class='comment'>--</span>
-<a name="line-19"></a><span class='comment'>-- file io and network</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-22"></a>    <span class='layout'>(</span> <span class='varid'>fromMaybe</span>
-<a name="line-23"></a>    <span class='layout'>)</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-26"></a>    <span class='layout'>(</span> <span class='conid'>URI</span>
-<a name="line-27"></a>    <span class='layout'>,</span> <span class='varid'>uriScheme</span>
-<a name="line-28"></a>    <span class='layout'>)</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerFile</span>
-<a name="line-31"></a>    <span class='layout'>(</span> <span class='varid'>getFileContents</span>
-<a name="line-32"></a>    <span class='layout'>)</span>
-<a name="line-33"></a>
-<a name="line-34"></a>
-<a name="line-35"></a>
-<a name="line-36"></a>
-<a name="line-37"></a>
-<a name="line-38"></a>
-<a name="line-39"></a>
-<a name="line-40"></a>
-<a name="line-41"></a>
-<a name="line-42"></a>
-<a name="line-43"></a>
-<a name="line-44"></a>
-<a name="line-45"></a>
-<a name="line-46"></a>
-<a name="line-47"></a>
-<a name="line-48"></a>
-<a name="line-49"></a>
-<a name="line-50"></a>
-<a name="line-51"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNativeOrCurl</span>
-<a name="line-52"></a>    <span class='layout'>(</span> <span class='varid'>getHttpContentsNativeOrWithCurl</span>
-<a name="line-53"></a>    <span class='layout'>)</span>
-<a name="line-54"></a>
-<a name="line-55"></a>
-<a name="line-56"></a>
-<a name="line-57"></a>
-<a name="line-58"></a>
-<a name="line-59"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-60"></a><span class='comment'>--</span>
-<a name="line-61"></a>
-<a name="line-62"></a><a name="getProtocolHandler"></a><span class='definition'>getProtocolHandler</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span><span class='layout'>)</span>
-<a name="line-63"></a><span class='definition'>getProtocolHandler</span> <span class='varid'>proto</span>
-<a name="line-64"></a>    <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>getUnsupported</span> <span class='varid'>handler</span>
-<a name="line-65"></a>      <span class='keyword'>where</span>
-<a name="line-66"></a>      <span class='varid'>handler</span>  <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='varid'>proto</span> <span class='varid'>protocolHandler</span>
-<a name="line-67"></a>
-<a name="line-68"></a><span class='comment'>--</span>
-<a name="line-69"></a><span class='comment'>-- the fall back protocol handler</span>
-<a name="line-70"></a>
-<a name="line-71"></a><a name="getUnsupported"></a><span class='definition'>getUnsupported</span>	<span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-72"></a><span class='definition'>getUnsupported</span> <span class='varid'>uri</span>
-<a name="line-73"></a>    <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='layout'>(</span> <span class='str'>"unsupported protocol "</span>
-<a name="line-74"></a>		 <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>uriScheme</span> <span class='varid'>uri</span><span class='layout'>)</span>
-<a name="line-75"></a>		 <span class='varop'>++</span> <span class='str'>" in URI: "</span>
-<a name="line-76"></a>		 <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-77"></a>	       <span class='layout'>)</span>
-<a name="line-78"></a>
-<a name="line-79"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-80"></a><span class='comment'>--</span>
-<a name="line-81"></a><span class='comment'>-- the table of potocol handlers</span>
-<a name="line-82"></a><span class='comment'>-- looked up in getProtocolHandler</span>
-<a name="line-83"></a>
-<a name="line-84"></a><a name="protocolHandler"></a><span class='definition'>protocolHandler</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-85"></a><span class='definition'>protocolHandler</span>
-<a name="line-86"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='str'>"file"</span><span class='layout'>,</span> <span class='varid'>getFileContents</span><span class='layout'>)</span>
-<a name="line-87"></a>      <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"http"</span><span class='layout'>,</span>
-<a name="line-88"></a>
-<a name="line-89"></a>
-<a name="line-90"></a>
-<a name="line-91"></a>
-<a name="line-92"></a>
-<a name="line-93"></a>
-<a name="line-94"></a>
-<a name="line-95"></a>
-<a name="line-96"></a>
-<a name="line-97"></a>
-<a name="line-98"></a>
-<a name="line-99"></a>
-<a name="line-100"></a>
-<a name="line-101"></a>
-<a name="line-102"></a>
-<a name="line-103"></a>
-<a name="line-104"></a>
-<a name="line-105"></a>	 <span class='varid'>getHttpContentsNativeOrWithCurl</span>
-<a name="line-106"></a>
-<a name="line-107"></a>
-<a name="line-108"></a>
-<a name="line-109"></a>
-<a name="line-110"></a>	<span class='layout'>)</span>
-<a name="line-111"></a>      <span class='keyglyph'>]</span>
-<a name="line-112"></a>
-<a name="line-113"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-114"></a>
-<a name="line-115"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerFile.html b/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerFile.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerFile.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- protocol handler function for file protocol</span>
-<a name="line-4"></a><span class='comment'>-- implemented as filer</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>-- Version : $Id: ProtocolHandlerFile.hs,v 1.5 2006/03/03 14:20:17 hxml Exp $</span>
-<a name="line-7"></a>
-<a name="line-8"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerFile</span>
-<a name="line-9"></a>    <span class='layout'>(</span> <span class='varid'>getFileContents</span>
-<a name="line-10"></a>    <span class='layout'>)</span>
-<a name="line-11"></a>
-<a name="line-12"></a><span class='keyword'>where</span>
-<a name="line-13"></a>
-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-15"></a>
-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-17"></a>
-<a name="line-18"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>
-<a name="line-19"></a>    <span class='layout'>(</span> <span class='varid'>doesFileExist</span>
-<a name="line-20"></a>    <span class='layout'>,</span> <span class='varid'>getPermissions</span>
-<a name="line-21"></a>    <span class='layout'>,</span> <span class='varid'>readable</span>
-<a name="line-22"></a>    <span class='layout'>)</span>
-<a name="line-23"></a>
-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-25"></a>    <span class='layout'>(</span> <span class='conid'>URI</span>
-<a name="line-26"></a>    <span class='layout'>,</span> <span class='varid'>unEscapeString</span>
-<a name="line-27"></a>    <span class='layout'>,</span> <span class='varid'>uriPath</span>
-<a name="line-28"></a>    <span class='layout'>)</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-34"></a><span class='comment'>--</span>
-<a name="line-35"></a><span class='comment'>-- the file protocol handler</span>
-<a name="line-36"></a>
-<a name="line-37"></a><a name="getFileContents"></a><span class='definition'>getFileContents</span>	<span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-38"></a><span class='definition'>getFileContents</span> <span class='varid'>uri</span> <span class='varid'>n</span>
-<a name="line-39"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-40"></a>      <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"getFileContent: reading file "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span><span class='layout'>)</span>
-<a name="line-41"></a>      <span class='varid'>exists</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>doesFileExist</span> <span class='varid'>source</span>
-<a name="line-42"></a>      <span class='keyword'>if</span> <span class='varid'>exists</span>
-<a name="line-43"></a>	 <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-44"></a>	      <span class='varid'>perm</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>getPermissions</span> <span class='varid'>source</span>
-<a name="line-45"></a>	      <span class='keyword'>if</span> <span class='varid'>readable</span> <span class='varid'>perm</span>
-<a name="line-46"></a>		 <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-47"></a>		      <span class='varid'>h</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='varid'>openFile</span> <span class='varid'>source</span> <span class='conid'>ReadMode</span> <span class='layout'>)</span>
-<a name="line-48"></a>		      <span class='keyword'>case</span> <span class='varid'>h</span> <span class='keyword'>of</span>
-<a name="line-49"></a>			     <span class='conid'>Left</span> <span class='varid'>e</span>
-<a name="line-50"></a>				 <span class='keyglyph'>-&gt;</span> <span class='varid'>readErr</span> <span class='layout'>(</span> <span class='str'>"system error when reading file "</span>
-<a name="line-51"></a>					      <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span>
-<a name="line-52"></a>					      <span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-53"></a>					      <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>
-<a name="line-54"></a>					    <span class='layout'>)</span>
-<a name="line-55"></a>			     <span class='conid'>Right</span> <span class='varid'>h'</span>
-<a name="line-56"></a>				 <span class='keyglyph'>-&gt;</span> <span class='keyword'>do</span>
-<a name="line-57"></a>				    <span class='varid'>c</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hGetContents</span> <span class='varid'>h'</span>
-<a name="line-58"></a>				    <span class='varid'>return</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>addAttrInt</span> <span class='varid'>transferStatus</span> <span class='num'>200</span>
-<a name="line-59"></a>					       <span class='varop'>.&gt;</span>
-<a name="line-60"></a>					       <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>
-<a name="line-61"></a>					       <span class='varop'>.&gt;</span>
-<a name="line-62"></a>					       <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-63"></a>					     <span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-64"></a>					   <span class='layout'>)</span>
-<a name="line-65"></a>
-<a name="line-66"></a>		 <span class='keyword'>else</span> <span class='varid'>readErr</span> <span class='layout'>(</span><span class='str'>"file "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span> <span class='varop'>++</span> <span class='str'>" not readable"</span><span class='layout'>)</span>
-<a name="line-67"></a>         <span class='keyword'>else</span> <span class='varid'>readErr</span> <span class='layout'>(</span><span class='str'>"file "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span> <span class='varop'>++</span> <span class='str'>" not found"</span><span class='layout'>)</span>
-<a name="line-68"></a>    <span class='keyword'>where</span>
-<a name="line-69"></a>    <span class='varid'>source</span>	<span class='keyglyph'>=</span> <span class='varid'>fileUriPath</span> <span class='varop'>.</span> <span class='varid'>unEscapeString</span> <span class='varop'>.</span> <span class='varid'>uriPath</span> <span class='varop'>$</span> <span class='varid'>uri</span>
-<a name="line-70"></a>    <span class='varid'>readErr</span> <span class='varid'>msg</span>	<span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='varid'>msg</span> <span class='varid'>n</span>
-<a name="line-71"></a>
-<a name="line-72"></a>    <span class='comment'>-- remove leading / if file starts with windows drive letter, e.g. /c:/windows -&gt; c:/windows</span>
-<a name="line-73"></a>    <span class='varid'>fileUriPath</span> <span class='layout'>(</span><span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>file</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='sel'>_more</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-74"></a>	<span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>
-<a name="line-75"></a>	    <span class='keyglyph'>=</span> <span class='varid'>file</span>
-<a name="line-76"></a>    <span class='varid'>fileUriPath</span> <span class='varid'>file</span>
-<a name="line-77"></a>	<span class='keyglyph'>=</span> <span class='varid'>file</span>
-<a name="line-78"></a>
-<a name="line-79"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html b/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html
+++ /dev/null
@@ -1,204 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- protocol handler functions for native http access</span>
-<a name="line-4"></a><span class='comment'>--</span>
-<a name="line-5"></a><span class='comment'>-- Version : $Id: ProtocolHandlerHttpCurl.hs,v 1.3 2005/04/14 12:52:53 hxml Exp $</span>
-<a name="line-6"></a>
-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpCurl</span>
-<a name="line-8"></a>    <span class='layout'>(</span> <span class='varid'>getHttpContentsWithCurl</span>
-<a name="line-9"></a>    <span class='layout'>)</span>
-<a name="line-10"></a>
-<a name="line-11"></a><span class='keyword'>where</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-14"></a>
-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerUtil</span>
-<a name="line-18"></a>    <span class='layout'>(</span> <span class='varid'>parseContentType</span>
-<a name="line-19"></a>    <span class='layout'>)</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>
-<a name="line-22"></a>    <span class='layout'>(</span> <span class='conid'>Parser</span>
-<a name="line-23"></a>    <span class='layout'>,</span> <span class='varid'>parse</span>
-<a name="line-24"></a>    <span class='layout'>,</span> <span class='varid'>anyChar</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>char</span>
-<a name="line-26"></a>    <span class='layout'>,</span> <span class='varid'>digit</span>
-<a name="line-27"></a>    <span class='layout'>,</span> <span class='varid'>getInput</span>
-<a name="line-28"></a>    <span class='layout'>,</span> <span class='varid'>many1</span>
-<a name="line-29"></a>    <span class='layout'>,</span> <span class='varid'>manyTill</span>
-<a name="line-30"></a>    <span class='layout'>,</span> <span class='varid'>spaces</span>
-<a name="line-31"></a>    <span class='layout'>,</span> <span class='varid'>string</span>
-<a name="line-32"></a>    <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>&lt;|&gt;</span><span class='layout'>)</span>
-<a name="line-33"></a>    <span class='layout'>)</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>
-<a name="line-36"></a>    <span class='layout'>(</span> <span class='varid'>try</span>
-<a name="line-37"></a>    <span class='layout'>)</span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-40"></a>    <span class='layout'>(</span> <span class='conid'>URI</span>
-<a name="line-41"></a>    <span class='layout'>)</span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>PipeOpen</span>
-<a name="line-44"></a>    <span class='layout'>(</span> <span class='varid'>popen</span>
-<a name="line-45"></a>    <span class='layout'>)</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>
-<a name="line-48"></a>    <span class='layout'>(</span> <span class='varid'>toLower</span>
-<a name="line-49"></a>    <span class='layout'>)</span>
-<a name="line-50"></a>
-<a name="line-51"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-52"></a><span class='comment'>--</span>
-<a name="line-53"></a><span class='comment'>-- the http protocol handler implemented by calling external program curl</span>
-<a name="line-54"></a>
-<a name="line-55"></a><a name="getHttpContentsWithCurl"></a><span class='definition'>getHttpContentsWithCurl</span>	<span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-56"></a><span class='definition'>getHttpContentsWithCurl</span> <span class='varid'>uri</span> <span class='varid'>n</span>
-<a name="line-57"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-58"></a>      <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: reading from URL "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span> <span class='layout'>)</span>
-<a name="line-59"></a>
-<a name="line-60"></a>      <span class='varid'>proxy</span>       <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_proxy</span>
-<a name="line-61"></a>      <span class='varid'>curlOptions</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_options_curl</span>
-<a name="line-62"></a>
-<a name="line-63"></a>      <span class='keyword'>let</span> <span class='varid'>allArgs</span> <span class='keyglyph'>=</span> <span class='varid'>args</span> <span class='varop'>++</span> <span class='varid'>proxyArgs</span> <span class='varid'>proxy</span> <span class='varop'>++</span> <span class='varid'>words</span> <span class='varid'>curlOptions</span>
-<a name="line-64"></a>
-<a name="line-65"></a>      <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: running "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>unwords</span> <span class='layout'>(</span><span class='varid'>cmd</span> <span class='conop'>:</span> <span class='varid'>allArgs</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>)</span>
-<a name="line-66"></a>
-<a name="line-67"></a>      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>errs</span><span class='layout'>,</span> <span class='varid'>rc</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>popen</span> <span class='varid'>cmd</span> <span class='varid'>allArgs</span>
-<a name="line-68"></a>
-<a name="line-69"></a>      <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: PID:    "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rc</span>   <span class='layout'>)</span>
-<a name="line-70"></a>      <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: stdin:  "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>res</span>  <span class='layout'>)</span>
-<a name="line-71"></a>      <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: stderr: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>errs</span> <span class='layout'>)</span>
-<a name="line-72"></a>
-<a name="line-73"></a>      <span class='keyword'>if</span> <span class='varid'>rc</span> <span class='varop'>/=</span> <span class='num'>0</span>
-<a name="line-74"></a>	 <span class='keyword'>then</span> <span class='varid'>addFatal</span> <span class='layout'>(</span> <span class='str'>"http error when requesting URI (rc="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rc</span> <span class='varop'>++</span> <span class='str'>") "</span>
-<a name="line-75"></a>			 <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-76"></a>			 <span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-77"></a>			 <span class='varop'>++</span> <span class='varid'>errs</span>
-<a name="line-78"></a>		       <span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-79"></a>	 <span class='keyword'>else</span> <span class='keyword'>let</span>
-<a name="line-80"></a>	      <span class='layout'>(</span><span class='varid'>st</span><span class='layout'>,</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parseResponse</span> <span class='varid'>res</span>
-<a name="line-81"></a>	      <span class='keyword'>in</span>
-<a name="line-82"></a>	      <span class='varid'>liftMf</span> <span class='layout'>(</span> <span class='varid'>addAttrl</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-83"></a>		       <span class='varop'>.&gt;</span>
-<a name="line-84"></a>		       <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>contents</span><span class='layout'>)</span>
-<a name="line-85"></a>		     <span class='layout'>)</span>
-<a name="line-86"></a>	      <span class='varop'>.&gt;&gt;</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>st</span> <span class='varop'>&gt;=</span> <span class='num'>200</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>st</span> <span class='varop'>&lt;</span> <span class='num'>300</span>
-<a name="line-87"></a>		    <span class='keyword'>then</span> <span class='varid'>thisM</span>
-<a name="line-88"></a>		    <span class='keyword'>else</span>
-<a name="line-89"></a>		    <span class='varid'>addFatal</span> <span class='layout'>(</span> <span class='str'>"http error when accessing URI "</span>
-<a name="line-90"></a>			       <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-91"></a>			       <span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-92"></a>			       <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>st</span>
-<a name="line-93"></a>			       <span class='varop'>++</span> <span class='str'>" "</span>
-<a name="line-94"></a>			       <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>transferMessage</span> <span class='varop'>$</span> <span class='varid'>newRoot</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-95"></a>			     <span class='layout'>)</span>
-<a name="line-96"></a>		  <span class='layout'>)</span>
-<a name="line-97"></a>	      <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-98"></a>    <span class='keyword'>where</span>
-<a name="line-99"></a>    <span class='varid'>cmd</span>  <span class='keyglyph'>=</span> <span class='str'>"curl"</span>
-<a name="line-100"></a>    <span class='varid'>args</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='str'>"--silent"</span>
-<a name="line-101"></a>	   <span class='layout'>,</span> <span class='str'>"--show-error"</span>
-<a name="line-102"></a>	   <span class='layout'>,</span> <span class='str'>"--dump-header"</span><span class='layout'>,</span> <span class='str'>"-"</span>
-<a name="line-103"></a>	   <span class='layout'>,</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-104"></a>	   <span class='keyglyph'>]</span>
-<a name="line-105"></a>    <span class='varid'>proxyArgs</span> <span class='str'>""</span>
-<a name="line-106"></a>	<span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-107"></a>    <span class='varid'>proxyArgs</span> <span class='varid'>prx</span>
-<a name="line-108"></a>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='str'>"--proxy"</span><span class='layout'>,</span> <span class='varid'>prx</span> <span class='keyglyph'>]</span>
-<a name="line-109"></a>
-<a name="line-110"></a><a name="parseResponse"></a><span class='definition'>parseResponse</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>
-<a name="line-111"></a><span class='definition'>parseResponse</span> <span class='varid'>inp</span>
-<a name="line-112"></a>    <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>parse</span> <span class='varid'>parseHttpResponse</span> <span class='str'>"HTTP Header"</span> <span class='varid'>inp</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-113"></a>      <span class='conid'>Right</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>res</span>
-<a name="line-114"></a>      <span class='conid'>Left</span>  <span class='keyword'>_</span>   <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='num'>999</span><span class='layout'>,</span> <span class='varid'>xattr</span> <span class='varid'>transferMessage</span> <span class='str'>"illegal HTTP response"</span><span class='layout'>,</span> <span class='varid'>inp</span><span class='layout'>)</span>
-<a name="line-115"></a>
-<a name="line-116"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-117"></a><span class='comment'>--</span>
-<a name="line-118"></a><span class='comment'>-- parsers for HTTP response</span>
-<a name="line-119"></a>
-<a name="line-120"></a><a name="parseHttpResponse"></a><span class='definition'>parseHttpResponse</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>
-<a name="line-121"></a><span class='definition'>parseHttpResponse</span>
-<a name="line-122"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-123"></a>      <span class='varid'>allResponses</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span>
-<a name="line-124"></a>		      <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-125"></a>			<span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parseResp</span>
-<a name="line-126"></a>			<span class='varid'>rhs</span>      <span class='keyglyph'>&lt;-</span> <span class='varid'>parseHeaders</span>
-<a name="line-127"></a>			<span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>,</span> <span class='varid'>rhs</span><span class='layout'>)</span>
-<a name="line-128"></a>		      <span class='layout'>)</span>
-<a name="line-129"></a>      <span class='keyword'>let</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>,</span> <span class='varid'>rhs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>last</span> <span class='varid'>allResponses</span>
-<a name="line-130"></a>      <span class='varid'>content</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>getInput</span>
-<a name="line-131"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span> <span class='varop'>++</span> <span class='varid'>rhs</span><span class='layout'>,</span> <span class='varid'>content</span><span class='layout'>)</span>
-<a name="line-132"></a>    <span class='keyword'>where</span>
-<a name="line-133"></a>
-<a name="line-134"></a>    <span class='varid'>crlf</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
-<a name="line-135"></a>    <span class='varid'>crlf</span>
-<a name="line-136"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-137"></a>	  <span class='layout'>(</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span><span class='varop'>.</span><span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>string</span> <span class='str'>"\r\n"</span><span class='layout'>)</span> <span class='varop'>&lt;|&gt;</span> <span class='varid'>string</span> <span class='str'>"\n"</span> <span class='layout'>)</span>
-<a name="line-138"></a>	  <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-139"></a>
-<a name="line-140"></a>    <span class='varid'>parseResp</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>
-<a name="line-141"></a>    <span class='varid'>parseResp</span>
-<a name="line-142"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-143"></a>	  <span class='varid'>vers</span> <span class='keyglyph'>&lt;-</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-144"></a>		    <span class='varid'>http</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>string</span> <span class='str'>"HTTP/"</span>
-<a name="line-145"></a>		    <span class='varid'>mav</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>
-<a name="line-146"></a>		    <span class='varid'>char</span> <span class='chr'>'.'</span>
-<a name="line-147"></a>		    <span class='varid'>miv</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>
-<a name="line-148"></a>		    <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>http</span> <span class='varop'>++</span> <span class='varid'>mav</span> <span class='varop'>++</span> <span class='str'>"."</span> <span class='varop'>++</span> <span class='varid'>miv</span><span class='layout'>)</span>
-<a name="line-149"></a>		  <span class='layout'>)</span>
-<a name="line-150"></a>	  <span class='varid'>spaces</span>
-<a name="line-151"></a>	  <span class='varid'>ds</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>
-<a name="line-152"></a>	  <span class='varid'>spaces</span>
-<a name="line-153"></a>	  <span class='varid'>reason</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='varid'>crlf</span>
-<a name="line-154"></a>	  <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>read</span> <span class='varid'>ds</span><span class='layout'>,</span>
-<a name="line-155"></a>		   <span class='varid'>xattr</span> <span class='varid'>transferMessage</span> <span class='varid'>reason</span> <span class='varop'>++</span> <span class='varid'>xattr</span> <span class='varid'>transferVersion</span> <span class='varid'>vers</span>
-<a name="line-156"></a>		 <span class='layout'>)</span>
-<a name="line-157"></a>
-<a name="line-158"></a>    <span class='varid'>parseHeaders</span>	<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
-<a name="line-159"></a>    <span class='varid'>parseHeaders</span>
-<a name="line-160"></a>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-161"></a>	    <span class='varid'>crlf</span>
-<a name="line-162"></a>	    <span class='varid'>return</span> <span class='conid'>[]</span>
-<a name="line-163"></a>	  <span class='layout'>)</span>
-<a name="line-164"></a>	  <span class='varop'>&lt;|&gt;</span>
-<a name="line-165"></a>	  <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-166"></a>	    <span class='varid'>header1</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parse1Header</span>
-<a name="line-167"></a>	    <span class='varid'>rest</span>    <span class='keyglyph'>&lt;-</span> <span class='varid'>parseHeaders</span>
-<a name="line-168"></a>	    <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>header1</span> <span class='varop'>++</span> <span class='varid'>rest</span>
-<a name="line-169"></a>	  <span class='layout'>)</span>
-<a name="line-170"></a>	  <span class='varop'>&lt;|&gt;</span>
-<a name="line-171"></a>	  <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-172"></a>	    <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>xattr</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='str'>"IllegalHeaders"</span><span class='layout'>)</span> <span class='str'>""</span>
-<a name="line-173"></a>	  <span class='layout'>)</span>
-<a name="line-174"></a>
-<a name="line-175"></a>    <span class='varid'>parse1Header</span>	<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
-<a name="line-176"></a>    <span class='varid'>parse1Header</span>
-<a name="line-177"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-178"></a>	  <span class='varid'>header</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='layout'>(</span><span class='varid'>char</span> <span class='chr'>':'</span><span class='layout'>)</span>
-<a name="line-179"></a>	  <span class='varid'>spaces</span>
-<a name="line-180"></a>	  <span class='varid'>value</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='varid'>crlf</span>
-<a name="line-181"></a>	  <span class='keyword'>let</span> <span class='varid'>ct</span> <span class='keyglyph'>=</span> <span class='varid'>parseCT</span> <span class='varid'>header</span> <span class='varid'>value</span>
-<a name="line-182"></a>	  <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>ct</span> <span class='varop'>++</span> <span class='varid'>xattr</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='varid'>header</span><span class='layout'>)</span> <span class='varid'>value</span>
-<a name="line-183"></a>	<span class='keyword'>where</span>
-<a name="line-184"></a>	<span class='varid'>parseCT</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-185"></a>	<span class='varid'>parseCT</span> <span class='varid'>h</span> <span class='varid'>v</span>
-<a name="line-186"></a>	    <span class='keyglyph'>|</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varid'>h</span> <span class='varop'>==</span> <span class='str'>"content-type"</span>
-<a name="line-187"></a>		<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>parse</span> <span class='varid'>parseContentType</span> <span class='varid'>h</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-188"></a>		    <span class='conid'>Right</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>xattr</span><span class='layout'>)</span> <span class='varid'>res</span>
-<a name="line-189"></a>		    <span class='conid'>Left</span>  <span class='keyword'>_</span>   <span class='keyglyph'>-&gt;</span> <span class='conid'>[]</span>
-<a name="line-190"></a>		  <span class='layout'>)</span>
-<a name="line-191"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-192"></a>		<span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-193"></a>
-<a name="line-194"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html b/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- protocol handler functions for native http access</span>
-<a name="line-4"></a><span class='comment'>--</span>
-<a name="line-5"></a><span class='comment'>-- Version : $Id: ProtocolHandlerHttpNative.hs,v 1.3 2005/04/14 12:52:53 hxml Exp $</span>
-<a name="line-6"></a>
-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNative</span>
-<a name="line-8"></a>    <span class='layout'>(</span> <span class='varid'>getHttpContentsWithHttp</span>
-<a name="line-9"></a>    <span class='layout'>)</span>
-<a name="line-10"></a>
-<a name="line-11"></a><span class='keyword'>where</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-14"></a>
-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerUtil</span>
-<a name="line-18"></a>    <span class='layout'>(</span> <span class='varid'>parseContentType</span>
-<a name="line-19"></a>    <span class='layout'>)</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>
-<a name="line-22"></a>    <span class='layout'>(</span> <span class='varid'>stringTrim</span>
-<a name="line-23"></a>    <span class='layout'>)</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>
-<a name="line-26"></a>    <span class='layout'>(</span> <span class='varid'>parse</span>
-<a name="line-27"></a>    <span class='layout'>)</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-33"></a>    <span class='layout'>(</span> <span class='conid'>URI</span>
-<a name="line-34"></a>    <span class='layout'>)</span>
-<a name="line-35"></a>
-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>Socket</span>
-<a name="line-37"></a>    <span class='layout'>(</span> <span class='varid'>withSocketsDo</span>
-<a name="line-38"></a>    <span class='layout'>)</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>HTTP</span>		<span class='comment'>-- http modules</span>
-<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>Browser</span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-44"></a><span class='comment'>--</span>
-<a name="line-45"></a><span class='comment'>-- the native http protocol handler</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-48"></a><span class='comment'>--</span>
-<a name="line-49"></a><span class='comment'>-- the http protocol handler, haskell implementation</span>
-<a name="line-50"></a>
-<a name="line-51"></a><a name="getHttpContentsWithHttp"></a><span class='definition'>getHttpContentsWithHttp</span>	<span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-52"></a><span class='definition'>getHttpContentsWithHttp</span> <span class='varid'>uri</span> <span class='varid'>n</span>
-<a name="line-53"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-54"></a>      <span class='varid'>traceLevel</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getTraceLevel</span>
-<a name="line-55"></a>      <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"getHttpContent: reading from URL "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span>
-<a name="line-56"></a>      <span class='varid'>proxy</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_proxy</span>
-<a name="line-57"></a>      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>io</span> <span class='varop'>$</span>  <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>getHttp</span> <span class='varid'>traceLevel</span> <span class='varid'>uri</span> <span class='varid'>proxy</span><span class='layout'>)</span>
-<a name="line-58"></a>      <span class='keyword'>case</span> <span class='varid'>res</span> <span class='keyword'>of</span>
-<a name="line-59"></a>	       <span class='conid'>Left</span> <span class='varid'>e</span>
-<a name="line-60"></a>		   <span class='keyglyph'>-&gt;</span> <span class='varid'>readErr</span> <span class='layout'>(</span> <span class='str'>"http error when requesting URI "</span>
-<a name="line-61"></a>				<span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>
-<a name="line-62"></a>				<span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-63"></a>				<span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>
-<a name="line-64"></a>				<span class='varop'>++</span> <span class='str'>" (perhaps server does not understand HTTP/1.1) "</span>
-<a name="line-65"></a>			      <span class='layout'>)</span>
-<a name="line-66"></a>	       <span class='conid'>Right</span> <span class='varid'>response</span>
-<a name="line-67"></a>		   <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span>
-<a name="line-68"></a>		      <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>convertResponseHeaders</span> <span class='varid'>response</span>
-<a name="line-69"></a>		      <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='layout'>(</span><span class='varid'>rspBody</span> <span class='varid'>response</span><span class='layout'>)</span>
-<a name="line-70"></a>		      <span class='varid'>st</span> <span class='keyglyph'>=</span> <span class='varid'>convertResponseStatus</span> <span class='layout'>(</span><span class='varid'>rspCode</span> <span class='varid'>response</span><span class='layout'>)</span>
-<a name="line-71"></a>		      <span class='keyword'>in</span>
-<a name="line-72"></a>		      <span class='keyword'>if</span> <span class='varid'>st</span> <span class='varop'>&gt;=</span> <span class='num'>200</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>st</span> <span class='varop'>&lt;</span> <span class='num'>300</span>
-<a name="line-73"></a>			 <span class='keyword'>then</span>
-<a name="line-74"></a>			 <span class='varid'>return</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varid'>addAttrl</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>.&gt;</span> <span class='varid'>replaceChildren</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-75"></a>			 <span class='keyword'>else</span> 
-<a name="line-76"></a>			 <span class='varid'>readErr</span> <span class='layout'>(</span> <span class='str'>"http error when accessing URI "</span>
-<a name="line-77"></a>				   <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span>
-<a name="line-78"></a>				   <span class='varop'>++</span> <span class='str'>": "</span>
-<a name="line-79"></a>				   <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>st</span>
-<a name="line-80"></a>				   <span class='varop'>++</span> <span class='str'>" "</span>
-<a name="line-81"></a>				   <span class='varop'>++</span> <span class='varid'>rspReason</span> <span class='varid'>response</span>
-<a name="line-82"></a>				 <span class='layout'>)</span>
-<a name="line-83"></a>    <span class='keyword'>where</span>
-<a name="line-84"></a>    <span class='varid'>readErr</span> <span class='varid'>msg</span>	<span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='varid'>msg</span> <span class='varid'>n</span>
-<a name="line-85"></a>
-<a name="line-86"></a>    <span class='varid'>getHttp</span>		<span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IO</span> <span class='conid'>Response</span>
-<a name="line-87"></a>    <span class='varid'>getHttp</span> <span class='varid'>trc'</span> <span class='varid'>uri'</span> <span class='varid'>proxy'</span>
-<a name="line-88"></a>	<span class='keyglyph'>=</span> <span class='varid'>withSocketsDo</span> <span class='varop'>$</span>
-<a name="line-89"></a>	  <span class='varid'>browse</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-90"></a>		   <span class='varid'>setOutHandler</span> <span class='layout'>(</span><span class='varid'>trcFct</span><span class='layout'>)</span>
-<a name="line-91"></a>		   <span class='varid'>setErrHandler</span> <span class='layout'>(</span><span class='varid'>trcFct</span><span class='layout'>)</span>
-<a name="line-92"></a>
-<a name="line-93"></a>		   <span class='varid'>setProxy'</span> <span class='varid'>proxy'</span>
-<a name="line-94"></a>		   <span class='layout'>(</span><span class='sel'>_ruri</span><span class='layout'>,</span> <span class='varid'>rsp</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>request</span> <span class='varid'>rq</span>
-<a name="line-95"></a>		   <span class='varid'>return</span> <span class='varid'>rsp</span>
-<a name="line-96"></a>		 <span class='layout'>)</span>
-<a name="line-97"></a>	<span class='keyword'>where</span>
-<a name="line-98"></a>	<span class='varid'>trcFct</span> <span class='varid'>s</span>
-<a name="line-99"></a>	    <span class='keyglyph'>|</span> <span class='varid'>trc'</span> <span class='varop'>&gt;=</span> <span class='num'>5</span>
-<a name="line-100"></a>		<span class='keyglyph'>=</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='str'>"-- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>trc'</span> <span class='varop'>++</span> <span class='str'>") http: "</span> <span class='varop'>++</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-101"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-102"></a>		<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-103"></a>
-<a name="line-104"></a>	<span class='varid'>rq</span> <span class='keyglyph'>=</span> <span class='varid'>defaultGETRequest</span> <span class='varid'>uri'</span>
-<a name="line-105"></a>	
-<a name="line-106"></a>	<span class='varid'>setProxy'</span> <span class='str'>""</span>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-107"></a>	<span class='varid'>setProxy'</span> <span class='varid'>p</span>	<span class='keyglyph'>=</span> <span class='varid'>setProxy</span> <span class='layout'>(</span><span class='conid'>Proxy</span> <span class='varid'>p</span> <span class='conid'>Nothing</span><span class='layout'>)</span>
-<a name="line-108"></a>
-<a name="line-109"></a>    <span class='varid'>convertResponseStatus</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Int</span>
-<a name="line-110"></a>    <span class='varid'>convertResponseStatus</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-111"></a>	<span class='keyglyph'>=</span> <span class='num'>100</span> <span class='varop'>*</span> <span class='varid'>a</span> <span class='varop'>+</span> <span class='num'>10</span> <span class='varop'>*</span> <span class='varid'>b</span> <span class='varop'>+</span> <span class='varid'>c</span>
-<a name="line-112"></a>
-<a name="line-113"></a>    <span class='varid'>convertResponseHeaders</span>	<span class='keyglyph'>::</span> <span class='conid'>Response</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-114"></a>    <span class='varid'>convertResponseHeaders</span> <span class='varid'>r'</span>
-<a name="line-115"></a>	<span class='keyglyph'>=</span> <span class='varid'>cvResponseCode</span> <span class='layout'>(</span><span class='varid'>rspCode</span> <span class='varid'>r'</span><span class='layout'>)</span>
-<a name="line-116"></a>	  <span class='varop'>++</span>
-<a name="line-117"></a>	  <span class='varid'>cvResponseReason</span> <span class='layout'>(</span><span class='varid'>rspReason</span> <span class='varid'>r'</span><span class='layout'>)</span>
-<a name="line-118"></a>          <span class='varop'>++</span>
-<a name="line-119"></a>	  <span class='varid'>cvResponseHeaders</span> <span class='layout'>(</span><span class='varid'>rspHeaders</span> <span class='varid'>r'</span><span class='layout'>)</span>
-<a name="line-120"></a>	<span class='keyword'>where</span>
-<a name="line-121"></a>	<span class='varid'>cvResponseCode</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-122"></a>	<span class='varid'>cvResponseCode</span> <span class='varid'>st'</span>
-<a name="line-123"></a>	    <span class='keyglyph'>=</span> <span class='varid'>xattr</span> <span class='varid'>transferStatus</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>convertResponseStatus</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-124"></a>	      <span class='varop'>++</span>
-<a name="line-125"></a>	      <span class='varid'>xattr</span> <span class='varid'>transferVersion</span> <span class='varid'>httpVersion</span>
-<a name="line-126"></a>
-<a name="line-127"></a>	<span class='varid'>cvResponseReason</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-128"></a>	<span class='varid'>cvResponseReason</span> <span class='varid'>r''</span>
-<a name="line-129"></a>	    <span class='keyglyph'>=</span> <span class='varid'>xattr</span> <span class='varid'>transferMessage</span> <span class='layout'>(</span><span class='varid'>stringTrim</span> <span class='varid'>r''</span><span class='layout'>)</span>
-<a name="line-130"></a>
-<a name="line-131"></a>	<span class='varid'>cvResponseHeaders</span>	<span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Header</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-132"></a>	<span class='varid'>cvResponseHeaders</span>
-<a name="line-133"></a>	    <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>cvResponseHeader</span>
-<a name="line-134"></a>
-<a name="line-135"></a>	<span class='varid'>cvResponseHeader</span>	<span class='keyglyph'>::</span> <span class='conid'>Header</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-136"></a>	<span class='varid'>cvResponseHeader</span> <span class='layout'>(</span><span class='conid'>Header</span> <span class='varid'>name</span> <span class='varid'>value</span><span class='layout'>)</span>
-<a name="line-137"></a>	    <span class='keyglyph'>|</span> <span class='varid'>name</span> <span class='varop'>==</span> <span class='conid'>HdrContentType</span>
-<a name="line-138"></a>		<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>parse</span> <span class='varid'>parseContentType</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='conid'>HdrContentType</span><span class='layout'>)</span> <span class='varid'>value</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-139"></a>		    <span class='conid'>Right</span> <span class='varid'>res</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>xattr</span><span class='layout'>)</span> <span class='varid'>res</span>
-<a name="line-140"></a>		    <span class='conid'>Left</span>  <span class='keyword'>_</span>   <span class='keyglyph'>-&gt;</span> <span class='conid'>[]</span>
-<a name="line-141"></a>		  <span class='layout'>)</span>
-<a name="line-142"></a>                  <span class='varop'>++</span>
-<a name="line-143"></a>		  <span class='varid'>addHttpAttr</span>
-<a name="line-144"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-145"></a>		<span class='keyglyph'>=</span> <span class='varid'>addHttpAttr</span>
-<a name="line-146"></a>	    <span class='keyword'>where</span>
-<a name="line-147"></a>	    <span class='varid'>addHttpAttr</span> <span class='keyglyph'>=</span> <span class='varid'>xattr</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>value</span>
-<a name="line-148"></a>
-<a name="line-149"></a>
-<a name="line-150"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html b/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- protocol handler functions for native http access</span>
-<a name="line-4"></a><span class='comment'>--</span>
-<a name="line-5"></a><span class='comment'>-- Version : $Id: ProtocolHandlerHttpNativeOrCurl.hs,v 1.1 2004/09/02 19:12:01 hxml Exp $</span>
-<a name="line-6"></a>
-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNativeOrCurl</span>
-<a name="line-8"></a>    <span class='layout'>(</span> <span class='varid'>getHttpContentsNativeOrWithCurl</span>
-<a name="line-9"></a>    <span class='layout'>)</span>
-<a name="line-10"></a>
-<a name="line-11"></a><span class='keyword'>where</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>
-<a name="line-14"></a>    <span class='layout'>(</span> <span class='varid'>a_use_curl</span>
-<a name="line-15"></a>    <span class='layout'>)</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-20"></a>    <span class='layout'>(</span> <span class='conid'>URI</span>
-<a name="line-21"></a>    <span class='layout'>)</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNative</span>
-<a name="line-24"></a>    <span class='layout'>(</span> <span class='varid'>getHttpContentsWithHttp</span>
-<a name="line-25"></a>    <span class='layout'>)</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpCurl</span>
-<a name="line-28"></a>    <span class='layout'>(</span> <span class='varid'>getHttpContentsWithCurl</span>
-<a name="line-29"></a>    <span class='layout'>)</span>
-<a name="line-30"></a>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-33"></a><span class='comment'>--</span>
-<a name="line-34"></a><span class='comment'>-- the http protocol handler switch for internal / external access</span>
-<a name="line-35"></a>
-<a name="line-36"></a><a name="getHttpContentsNativeOrWithCurl"></a><span class='definition'>getHttpContentsNativeOrWithCurl</span>		<span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-37"></a><span class='definition'>getHttpContentsNativeOrWithCurl</span> <span class='varid'>uri</span> <span class='varid'>n</span>
-<a name="line-38"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-39"></a>      <span class='varid'>curl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_use_curl</span> <span class='num'>0</span>
-<a name="line-40"></a>      <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>curl</span> <span class='varop'>/=</span> <span class='num'>0</span>
-<a name="line-41"></a>	<span class='keyword'>then</span> <span class='varid'>getHttpContentsWithCurl</span>
-<a name="line-42"></a>	<span class='keyword'>else</span> <span class='varid'>getHttpContentsWithHttp</span> <span class='layout'>)</span> <span class='varid'>uri</span> <span class='varid'>n</span>
-<a name="line-43"></a>
-<a name="line-44"></a>
-<a name="line-45"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-TagSoup.html b/doc/hdoc/src/Text-XML-HXT-Parser-TagSoup.html
--- a/doc/hdoc/src/Text-XML-HXT-Parser-TagSoup.html
+++ b/doc/hdoc/src/Text-XML-HXT-Parser-TagSoup.html
@@ -31,442 +31,461 @@
 <a name="line-23"></a>
 <a name="line-24"></a><span class='comment'>-- ------------------------------------------------------------</span>
 <a name="line-25"></a>
-<a name="line-26"></a><span class='comment'>-- The table contains the id map. All element and attribute names are stored</span>
-<a name="line-27"></a><span class='comment'>-- the first time they are ecountered, and later always this name is used,</span>
-<a name="line-28"></a><span class='comment'>-- not a string built by the parser.</span>
+<a name="line-26"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span> <span class='layout'>(</span><span class='varid'>toLower</span><span class='layout'>)</span>
+<a name="line-27"></a><span class='keyword'>import</span>           <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
+<a name="line-28"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>
 <a name="line-29"></a>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span><span class='varop'>.</span><span class='conid'>Entity</span>
-<a name="line-32"></a>    <span class='layout'>(</span> <span class='varid'>lookupNumericEntity</span>
-<a name="line-33"></a>    <span class='layout'>)</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>
-<a name="line-36"></a>    <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span>
-<a name="line-37"></a>    <span class='layout'>)</span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>
-<a name="line-40"></a>    <span class='layout'>(</span> <span class='varid'>isWellformedQualifiedName</span>
-<a name="line-41"></a>    <span class='layout'>)</span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlEntities</span>
-<a name="line-44"></a>    <span class='layout'>(</span> <span class='comment'>-- xmlEntities</span>
-<a name="line-45"></a>    <span class='layout'>)</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XhtmlEntities</span>
-<a name="line-48"></a>    <span class='layout'>(</span> <span class='varid'>xhtmlEntities</span>
-<a name="line-49"></a>    <span class='layout'>)</span>
-<a name="line-50"></a>
-<a name="line-51"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span>
-<a name="line-52"></a>    <span class='layout'>(</span> <span class='varid'>isEmptyHtmlTag</span>
-<a name="line-53"></a>    <span class='layout'>,</span> <span class='varid'>isInnerHtmlTagOf</span>
-<a name="line-54"></a>    <span class='layout'>,</span> <span class='varid'>closesHtmlTag</span>
-<a name="line-55"></a>    <span class='layout'>)</span>
-<a name="line-56"></a>
-<a name="line-57"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
-<a name="line-58"></a>    <span class='layout'>(</span> <span class='conid'>XmlTrees</span>
-<a name="line-59"></a>    <span class='layout'>,</span> <span class='conid'>QName</span>
-<a name="line-60"></a>    <span class='layout'>,</span> <span class='conid'>NsEnv</span>
-<a name="line-61"></a>    <span class='layout'>,</span> <span class='varid'>mkQName</span>
-<a name="line-62"></a>    <span class='layout'>,</span> <span class='varid'>mkName</span>
-<a name="line-63"></a>    <span class='layout'>,</span> <span class='varid'>mkPrefixLocalPart</span>
-<a name="line-64"></a>    <span class='layout'>,</span> <span class='varid'>c_warn</span>
-<a name="line-65"></a>    <span class='layout'>,</span> <span class='varid'>a_xml</span>
-<a name="line-66"></a>    <span class='layout'>,</span> <span class='varid'>a_xmlns</span>
-<a name="line-67"></a>    <span class='layout'>,</span> <span class='varid'>xmlNamespace</span>
-<a name="line-68"></a>    <span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span>
-<a name="line-69"></a>    <span class='layout'>)</span>
-<a name="line-70"></a>
-<a name="line-71"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span>
-<a name="line-72"></a>    <span class='layout'>(</span> <span class='varid'>isElem</span>
-<a name="line-73"></a>    <span class='layout'>,</span> <span class='varid'>mkError</span>
-<a name="line-74"></a>    <span class='layout'>,</span> <span class='varid'>mkCmt</span>
-<a name="line-75"></a>    <span class='layout'>,</span> <span class='varid'>mkText</span>
-<a name="line-76"></a>    <span class='layout'>,</span> <span class='varid'>mkElement</span>
-<a name="line-77"></a>    <span class='layout'>,</span> <span class='varid'>mkAttr</span>
-<a name="line-78"></a>    <span class='layout'>)</span>
-<a name="line-79"></a>
-<a name="line-80"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-81"></a>
-<a name="line-82"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>
-<a name="line-83"></a>
-<a name="line-84"></a><span class='comment'>-- ---------------------------------------- </span>
-<a name="line-85"></a>
-<a name="line-86"></a><a name="Tags"></a><span class='keyword'>type</span> <span class='conid'>Tags</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>
-<a name="line-87"></a>
-<a name="line-88"></a><a name="NameTable"></a><span class='keyword'>type</span> <span class='conid'>NameTable</span>	<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>QName</span> <span class='conid'>QName</span>
-<a name="line-89"></a>
-<a name="line-90"></a><a name="Context"></a><span class='keyword'>type</span> <span class='conid'>Context</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span>
-<a name="line-91"></a>
-<a name="line-92"></a><a name="State"></a><span class='keyword'>data</span> <span class='conid'>State</span>	<span class='keyglyph'>=</span> <span class='conid'>S</span> <span class='varop'>!</span><span class='conid'>Tags</span> <span class='varop'>!</span><span class='conid'>NameTable</span>		<span class='comment'>-- the name table must be evaluated striktly, else a stack overflow occurs</span>
-<a name="line-93"></a>
-<a name="line-94"></a><a name="Parser"></a><span class='keyword'>newtype</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='layout'>{</span> <span class='varid'>parse</span> <span class='keyglyph'>::</span> <span class='conid'>State</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>State</span><span class='layout'>)</span><span class='layout'>}</span>
-<a name="line-95"></a>
-<a name="line-96"></a><span class='keyword'>instance</span> <span class='conid'>Monad</span> <span class='conid'>Parser</span> <span class='keyword'>where</span>
-<a name="line-97"></a>    <span class='varid'>return</span> <span class='varid'>x</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>ts</span><span class='layout'>)</span>
-<a name="line-98"></a>    <span class='varid'>p</span> <span class='varop'>&gt;&gt;=</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span>
-<a name="line-99"></a>			      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>ts'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varid'>ts</span>
-<a name="line-100"></a>                              <span class='keyword'>in</span>
-<a name="line-101"></a>			      <span class='varid'>parse</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='varid'>ts'</span>
-<a name="line-102"></a>
-<a name="line-103"></a><a name="runParser"></a><span class='definition'>runParser</span>	<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Tags</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span>
-<a name="line-104"></a><span class='definition'>runParser</span> <span class='varid'>p</span> <span class='varid'>ts</span>	<span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='conid'>S</span> <span class='varid'>ts</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span>
-<a name="line-105"></a>
-<a name="line-106"></a><span class='comment'>-- ----------------------------------------</span>
-<a name="line-107"></a>
-<a name="line-108"></a><a name="cond"></a><span class='definition'>cond</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span>
-<a name="line-109"></a><span class='definition'>cond</span> <span class='varid'>c</span> <span class='varid'>t</span> <span class='varid'>e</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-110"></a>		  <span class='varid'>p</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>c</span>
-<a name="line-111"></a>		  <span class='keyword'>if</span> <span class='varid'>p</span> <span class='keyword'>then</span> <span class='varid'>t</span> <span class='keyword'>else</span> <span class='varid'>e</span>
-<a name="line-112"></a>
-<a name="line-113"></a><a name="lookAhead"></a><span class='definition'>lookAhead</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-114"></a><span class='definition'>lookAhead</span> <span class='varid'>p</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ts</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-115"></a>
-<a name="line-116"></a><span class='comment'>-- ----------------------------------------</span>
-<a name="line-117"></a><span class='comment'>-- primitive look ahead tests</span>
-<a name="line-118"></a>
-<a name="line-119"></a><a name="isEof"></a><span class='definition'>isEof</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-120"></a><span class='definition'>isEof</span>		<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
-<a name="line-121"></a>
-<a name="line-122"></a><a name="isText"></a><span class='definition'>isText</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-123"></a><span class='definition'>isText</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
-<a name="line-124"></a>		  <span class='keyword'>where</span>
-<a name="line-125"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-126"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		 <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-127"></a>
-<a name="line-128"></a><a name="isCmt"></a><span class='definition'>isCmt</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-129"></a><span class='definition'>isCmt</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
-<a name="line-130"></a>		  <span class='keyword'>where</span>
-<a name="line-131"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-132"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		    <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-133"></a>
-<a name="line-134"></a><a name="isWarn"></a><span class='definition'>isWarn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-135"></a><span class='definition'>isWarn</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
-<a name="line-136"></a>		  <span class='keyword'>where</span>
-<a name="line-137"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-138"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		    <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-139"></a>
-<a name="line-140"></a><a name="isPos"></a><span class='definition'>isPos</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-141"></a><span class='definition'>isPos</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
-<a name="line-142"></a>		  <span class='keyword'>where</span>
-<a name="line-143"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-144"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		 <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-145"></a>
-<a name="line-146"></a><a name="isCls"></a><span class='definition'>isCls</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-147"></a><span class='definition'>isCls</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
-<a name="line-148"></a>		  <span class='keyword'>where</span>
-<a name="line-149"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-150"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		  <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-151"></a>
-<a name="line-152"></a><a name="isOpn"></a><span class='definition'>isOpn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
-<a name="line-153"></a><span class='definition'>isOpn</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
-<a name="line-154"></a>		  <span class='keyword'>where</span>
-<a name="line-155"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-156"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		   <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-157"></a>
-<a name="line-158"></a><span class='comment'>-- ----------------------------------------</span>
-<a name="line-159"></a><span class='comment'>-- primitive symbol parsers</span>
-<a name="line-160"></a>
-<a name="line-161"></a><a name="getTag"></a><span class='definition'>getTag</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Tag</span>
-<a name="line-162"></a><span class='definition'>getTag</span>		<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='layout'>(</span><span class='varid'>t1</span><span class='conop'>:</span><span class='varid'>ts1</span><span class='layout'>)</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>t1</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='varid'>ts1</span> <span class='varid'>nt</span><span class='layout'>)</span>
-<a name="line-163"></a>
-<a name="line-164"></a><a name="getSym"></a><span class='definition'>getSym</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span>
-<a name="line-165"></a><span class='definition'>getSym</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-166"></a>		  <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getTag</span>
-<a name="line-167"></a>		  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>t</span><span class='layout'>)</span>
-<a name="line-168"></a>
-<a name="line-169"></a><a name="getText"></a><span class='definition'>getText</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
-<a name="line-170"></a><span class='definition'>getText</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
-<a name="line-171"></a>    		  <span class='keyword'>where</span>
-<a name="line-172"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varid'>t</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>t</span>
-<a name="line-173"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
-<a name="line-174"></a>
-<a name="line-175"></a><a name="getCmt"></a><span class='definition'>getCmt</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
-<a name="line-176"></a><span class='definition'>getCmt</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
-<a name="line-177"></a>		  <span class='keyword'>where</span>
-<a name="line-178"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='varid'>c</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>c</span>
-<a name="line-179"></a>	  	  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
-<a name="line-180"></a>
-<a name="line-181"></a><a name="getWarn"></a><span class='definition'>getWarn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
-<a name="line-182"></a><span class='definition'>getWarn</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
-<a name="line-183"></a>	  	  <span class='keyword'>where</span>
-<a name="line-184"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='varid'>w</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>w</span>
-<a name="line-185"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
-<a name="line-186"></a>
-<a name="line-187"></a><a name="getPos"></a><span class='definition'>getPos</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>
-<a name="line-188"></a><span class='definition'>getPos</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
-<a name="line-189"></a>		  <span class='keyword'>where</span>
-<a name="line-190"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='varid'>l</span> <span class='varid'>c</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>l</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
-<a name="line-191"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
-<a name="line-192"></a>
-<a name="line-193"></a><a name="getCls"></a><span class='definition'>getCls</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
-<a name="line-194"></a><span class='definition'>getCls</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
-<a name="line-195"></a>		  <span class='keyword'>where</span>
-<a name="line-196"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>n</span>
-<a name="line-197"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
-<a name="line-198"></a>
-<a name="line-199"></a><a name="getOpn"></a><span class='definition'>getOpn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span><span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>)</span>
-<a name="line-200"></a><span class='definition'>getOpn</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
-<a name="line-201"></a>		  <span class='keyword'>where</span>
-<a name="line-202"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-203"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
-<a name="line-204"></a>
-<a name="line-205"></a><span class='comment'>-- ----------------------------------------</span>
-<a name="line-206"></a><span class='comment'>-- pushback parsers for inserting missing tags</span>
-<a name="line-207"></a>
-<a name="line-208"></a><a name="pushBack"></a><span class='definition'>pushBack</span>	<span class='keyglyph'>::</span> <span class='conid'>Tag</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
-<a name="line-209"></a><span class='definition'>pushBack</span> <span class='varid'>t</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>()</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='layout'>(</span><span class='varid'>t</span><span class='conop'>:</span><span class='varid'>ts</span><span class='layout'>)</span> <span class='varid'>nt</span><span class='layout'>)</span>
-<a name="line-210"></a>
-<a name="line-211"></a><a name="insCls"></a><span class='definition'>insCls</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
-<a name="line-212"></a><span class='definition'>insCls</span> <span class='varid'>n</span>	<span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-213"></a>
-<a name="line-214"></a><a name="insOpn"></a><span class='definition'>insOpn</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
-<a name="line-215"></a><span class='definition'>insOpn</span> <span class='varid'>n</span> <span class='varid'>al</span>	<span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-216"></a>
-<a name="line-217"></a><span class='comment'>-- ----------------------------------------</span>
-<a name="line-218"></a>
-<a name="line-219"></a><a name="insertQName"></a><span class='definition'>insertQName</span>	<span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>QName</span>
-<a name="line-220"></a><span class='definition'>insertQName</span> <span class='varid'>n</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span>
-<a name="line-221"></a>				     <span class='layout'>(</span><span class='varid'>n'</span><span class='layout'>,</span> <span class='varid'>nt'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>insert</span> <span class='varid'>n</span> <span class='varid'>nt</span>
-<a name="line-222"></a>				     <span class='keyword'>in</span>
-<a name="line-223"></a>				     <span class='layout'>(</span><span class='varid'>n'</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt'</span><span class='layout'>)</span>
-<a name="line-224"></a>		  <span class='keyword'>where</span>
-<a name="line-225"></a>		  <span class='varid'>insert</span> <span class='varid'>s</span> <span class='varid'>nt</span>
-<a name="line-226"></a>		      <span class='keyglyph'>|</span> <span class='varid'>isJust</span> <span class='varid'>r</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varid'>r</span><span class='layout'>,</span> <span class='varid'>nt</span><span class='layout'>)</span>
-<a name="line-227"></a>		      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>nt</span><span class='layout'>)</span>
-<a name="line-228"></a>		      <span class='keyword'>where</span>
-<a name="line-229"></a>		      <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>s</span> <span class='varid'>nt</span>
-<a name="line-230"></a>
-<a name="line-231"></a><a name="mkQN"></a><span class='definition'>mkQN</span>		<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>QName</span>
-<a name="line-232"></a><span class='definition'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='varid'>isAttr</span> <span class='varid'>env</span> <span class='varid'>s</span>
-<a name="line-233"></a>    <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>
-<a name="line-234"></a>	<span class='keyglyph'>=</span> <span class='varid'>insertQName</span> <span class='varid'>qn1</span>
-<a name="line-235"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-236"></a>	<span class='keyglyph'>=</span> <span class='varid'>insertQName</span> <span class='varid'>qn0</span>
-<a name="line-237"></a>    <span class='keyword'>where</span>
-<a name="line-238"></a>    <span class='varid'>qn1</span>
-<a name="line-239"></a>	<span class='keyglyph'>|</span> <span class='varid'>isAttr</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>isSimpleName</span>	<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
-<a name="line-240"></a>	<span class='keyglyph'>|</span> <span class='varid'>isSimpleName</span>			<span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='str'>""</span> <span class='varid'>s</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='str'>""</span><span class='layout'>)</span>
-<a name="line-241"></a>	<span class='keyglyph'>|</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='varid'>px</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='varid'>px</span><span class='layout'>)</span>
-<a name="line-242"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
-<a name="line-243"></a>    <span class='varid'>qn0</span>
-<a name="line-244"></a>	<span class='keyglyph'>|</span> <span class='varid'>isSimpleName</span>			<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
-<a name="line-245"></a>	<span class='keyglyph'>|</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>mkPrefixLocalPart</span> <span class='varid'>px</span> <span class='varid'>lp</span>
-<a name="line-246"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
-<a name="line-247"></a>
-<a name="line-248"></a>    <span class='varid'>nsUri</span> <span class='varid'>x</span>		<span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>x</span> <span class='varop'>$</span> <span class='varid'>env</span>
-<a name="line-249"></a>    <span class='varid'>isSimpleName</span>	<span class='keyglyph'>=</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>
-<a name="line-250"></a>    <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='layout'>(</span><span class='keyword'>_</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>span</span><span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>
-<a name="line-251"></a>
-<a name="line-252"></a><a name="extendNsEnv"></a><span class='definition'>extendNsEnv</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>NsEnv</span>
-<a name="line-253"></a><span class='definition'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env</span>
-<a name="line-254"></a>    <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>
-<a name="line-255"></a>	<span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addNs</span><span class='layout'>)</span> <span class='varid'>al1</span> <span class='varop'>++</span> <span class='varid'>env</span>
-<a name="line-256"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-257"></a>	<span class='keyglyph'>=</span> <span class='varid'>env</span>
-<a name="line-258"></a>    <span class='keyword'>where</span>
-<a name="line-259"></a>    <span class='varid'>addNs</span> <span class='varid'>n</span> <span class='varid'>v</span>
-<a name="line-260"></a>	<span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>
-<a name="line-261"></a>	  <span class='varop'>&amp;&amp;</span>
-<a name="line-262"></a>	  <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>lp</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>tail</span> <span class='varop'>$</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-263"></a>	    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>lp</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span>
-<a name="line-264"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-265"></a>	    <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-266"></a>	<span class='keyword'>where</span>
-<a name="line-267"></a>	<span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-268"></a>
-<a name="line-269"></a><span class='comment'>-- ----------------------------------------</span>
-<a name="line-270"></a>
-<a name="line-271"></a><span class='comment'>-- own entity lookup to prevent problems with &amp;amp; and tagsoup hack for IE</span>
-<a name="line-272"></a>
-<a name="line-273"></a><a name="lookupEntity"></a><span class='definition'>lookupEntity</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>
-<a name="line-274"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='sel'>_asHtml</span> <span class='varid'>e0</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='chr'>'#'</span><span class='conop'>:</span><span class='varid'>e</span><span class='layout'>)</span>
-<a name="line-275"></a>    <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>lookupNumericEntity</span> <span class='varid'>e</span> <span class='keyword'>of</span>
-<a name="line-276"></a>      <span class='conid'>Just</span> <span class='varid'>c</span>  <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span> <span class='keyglyph'>]</span>
-<a name="line-277"></a>      <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span> <span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&amp;"</span> <span class='varop'>++</span> <span class='varid'>e0</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>
-<a name="line-278"></a>		 <span class='keyword'>if</span> <span class='varid'>withWarnings</span>
-<a name="line-279"></a>		 <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"illegal char reference: &amp;"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>
-<a name="line-280"></a>		 <span class='keyword'>else</span> <span class='conid'>[]</span>
-<a name="line-281"></a>
-<a name="line-282"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span> <span class='varid'>e</span>
-<a name="line-283"></a>    <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>e</span> <span class='varid'>entities</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-284"></a>      <span class='conid'>Just</span> <span class='varid'>x</span>  <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>toEnum</span> <span class='varid'>x</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span>
-<a name="line-285"></a>      <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&amp;"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>
-<a name="line-286"></a>		 <span class='keyword'>if</span> <span class='varid'>withWarnings</span>
-<a name="line-287"></a>		 <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"Unknown entity reference: &amp;"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>
-<a name="line-288"></a>		 <span class='keyword'>else</span> <span class='conid'>[]</span>
-<a name="line-289"></a>    <span class='keyword'>where</span>
-<a name="line-290"></a>    <span class='varid'>entities</span>
-<a name="line-291"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>    <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span>
-<a name="line-292"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span> <span class='comment'>-- xmlEntities (TODO: xhtml is xml and html)</span>
-<a name="line-293"></a>
-<a name="line-294"></a><span class='comment'>-- ----------------------------------------</span>
-<a name="line-295"></a><span class='comment'>-- the main parser</span>
+<a name="line-30"></a>
+<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span>
+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span><span class='varop'>.</span><span class='conid'>Entity</span>
+<a name="line-33"></a>    <span class='layout'>(</span> <span class='varid'>lookupNumericEntity</span>
+<a name="line-34"></a>    <span class='layout'>)</span>
+<a name="line-35"></a>
+<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>
+<a name="line-37"></a>    <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span>
+<a name="line-38"></a>    <span class='layout'>)</span>
+<a name="line-39"></a>
+<a name="line-40"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>
+<a name="line-41"></a>    <span class='layout'>(</span> <span class='varid'>isWellformedQualifiedName</span>
+<a name="line-42"></a>    <span class='layout'>)</span>
+<a name="line-43"></a>
+<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlEntities</span>
+<a name="line-45"></a>    <span class='layout'>(</span> <span class='comment'>-- xmlEntities</span>
+<a name="line-46"></a>    <span class='layout'>)</span>
+<a name="line-47"></a>
+<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XhtmlEntities</span>
+<a name="line-49"></a>    <span class='layout'>(</span> <span class='varid'>xhtmlEntities</span>
+<a name="line-50"></a>    <span class='layout'>)</span>
+<a name="line-51"></a>
+<a name="line-52"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span>
+<a name="line-53"></a>    <span class='layout'>(</span> <span class='varid'>isEmptyHtmlTag</span>
+<a name="line-54"></a>    <span class='layout'>,</span> <span class='varid'>isInnerHtmlTagOf</span>
+<a name="line-55"></a>    <span class='layout'>,</span> <span class='varid'>closesHtmlTag</span>
+<a name="line-56"></a>    <span class='layout'>)</span>
+<a name="line-57"></a>
+<a name="line-58"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>
+<a name="line-59"></a>    <span class='layout'>(</span> <span class='conid'>XmlTrees</span>
+<a name="line-60"></a>    <span class='layout'>,</span> <span class='conid'>QName</span>
+<a name="line-61"></a>    <span class='layout'>,</span> <span class='conid'>NsEnv</span>
+<a name="line-62"></a>    <span class='layout'>,</span> <span class='varid'>mkQName</span>
+<a name="line-63"></a>    <span class='layout'>,</span> <span class='varid'>mkName</span>
+<a name="line-64"></a>    <span class='layout'>,</span> <span class='varid'>mkPrefixLocalPart</span>
+<a name="line-65"></a>    <span class='layout'>,</span> <span class='varid'>c_warn</span>
+<a name="line-66"></a>    <span class='layout'>,</span> <span class='varid'>a_xml</span>
+<a name="line-67"></a>    <span class='layout'>,</span> <span class='varid'>a_xmlns</span>
+<a name="line-68"></a>    <span class='layout'>,</span> <span class='varid'>xmlNamespace</span>
+<a name="line-69"></a>    <span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span>
+<a name="line-70"></a>    <span class='layout'>)</span>
+<a name="line-71"></a>
+<a name="line-72"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span>
+<a name="line-73"></a>    <span class='layout'>(</span> <span class='varid'>isElem</span>
+<a name="line-74"></a>    <span class='layout'>,</span> <span class='varid'>mkError</span>
+<a name="line-75"></a>    <span class='layout'>,</span> <span class='varid'>mkCmt</span>
+<a name="line-76"></a>    <span class='layout'>,</span> <span class='varid'>mkText</span>
+<a name="line-77"></a>    <span class='layout'>,</span> <span class='varid'>mkElement</span>
+<a name="line-78"></a>    <span class='layout'>,</span> <span class='varid'>mkAttr</span>
+<a name="line-79"></a>    <span class='layout'>)</span>
+<a name="line-80"></a>
+<a name="line-81"></a><span class='comment'>-- ---------------------------------------- </span>
+<a name="line-82"></a>
+<a name="line-83"></a><span class='comment'>-- The name table contains the id map. All element and attribute names are stored</span>
+<a name="line-84"></a><span class='comment'>-- the first time they are ecountered, and later always this name is used,</span>
+<a name="line-85"></a><span class='comment'>-- not a string built by the parser.</span>
+<a name="line-86"></a>
+<a name="line-87"></a><a name="Tags"></a><span class='keyword'>type</span> <span class='conid'>Tags</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>
+<a name="line-88"></a>
+<a name="line-89"></a><a name="NameTable"></a><span class='keyword'>type</span> <span class='conid'>NameTable</span>	<span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>QName</span> <span class='conid'>QName</span>
+<a name="line-90"></a>
+<a name="line-91"></a><a name="Context"></a><span class='keyword'>type</span> <span class='conid'>Context</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span>
+<a name="line-92"></a>
+<a name="line-93"></a><a name="State"></a><span class='keyword'>data</span> <span class='conid'>State</span>	<span class='keyglyph'>=</span> <span class='conid'>S</span> <span class='varop'>!</span><span class='conid'>Tags</span> <span class='varop'>!</span><span class='conid'>NameTable</span>		<span class='comment'>-- the name table must be evaluated striktly, else a stack overflow occurs</span>
+<a name="line-94"></a>
+<a name="line-95"></a><a name="Parser"></a><span class='keyword'>newtype</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='layout'>{</span> <span class='varid'>parse</span> <span class='keyglyph'>::</span> <span class='conid'>State</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>State</span><span class='layout'>)</span><span class='layout'>}</span>
+<a name="line-96"></a>
+<a name="line-97"></a><span class='keyword'>instance</span> <span class='conid'>Monad</span> <span class='conid'>Parser</span> <span class='keyword'>where</span>
+<a name="line-98"></a>    <span class='varid'>return</span> <span class='varid'>x</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>ts</span><span class='layout'>)</span>
+<a name="line-99"></a>    <span class='varid'>p</span> <span class='varop'>&gt;&gt;=</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span>
+<a name="line-100"></a>			      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>ts'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varid'>ts</span>
+<a name="line-101"></a>                              <span class='keyword'>in</span>
+<a name="line-102"></a>			      <span class='varid'>parse</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='varid'>ts'</span>
+<a name="line-103"></a>
+<a name="line-104"></a><a name="runParser"></a><span class='definition'>runParser</span>	<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Tags</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span>
+<a name="line-105"></a><span class='definition'>runParser</span> <span class='varid'>p</span> <span class='varid'>ts</span>	<span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='conid'>S</span> <span class='varid'>ts</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span>
+<a name="line-106"></a>
+<a name="line-107"></a><span class='comment'>-- ----------------------------------------</span>
+<a name="line-108"></a>
+<a name="line-109"></a><a name="cond"></a><span class='definition'>cond</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span>
+<a name="line-110"></a><span class='definition'>cond</span> <span class='varid'>c</span> <span class='varid'>t</span> <span class='varid'>e</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-111"></a>		  <span class='varid'>p</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>c</span>
+<a name="line-112"></a>		  <span class='keyword'>if</span> <span class='varid'>p</span> <span class='keyword'>then</span> <span class='varid'>t</span> <span class='keyword'>else</span> <span class='varid'>e</span>
+<a name="line-113"></a>
+<a name="line-114"></a><a name="lookAhead"></a><span class='definition'>lookAhead</span>	<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-115"></a><span class='definition'>lookAhead</span> <span class='varid'>p</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ts</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
+<a name="line-116"></a>
+<a name="line-117"></a><span class='comment'>-- ----------------------------------------</span>
+<a name="line-118"></a><span class='comment'>-- primitive look ahead tests</span>
+<a name="line-119"></a>
+<a name="line-120"></a><a name="isEof"></a><span class='definition'>isEof</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-121"></a><span class='definition'>isEof</span>		<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>
+<a name="line-122"></a>
+<a name="line-123"></a><a name="isText"></a><span class='definition'>isText</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-124"></a><span class='definition'>isText</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
+<a name="line-125"></a>		  <span class='keyword'>where</span>
+<a name="line-126"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-127"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		 <span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-128"></a>
+<a name="line-129"></a><a name="isCmt"></a><span class='definition'>isCmt</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-130"></a><span class='definition'>isCmt</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
+<a name="line-131"></a>		  <span class='keyword'>where</span>
+<a name="line-132"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-133"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		    <span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-134"></a>
+<a name="line-135"></a><a name="isWarn"></a><span class='definition'>isWarn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-136"></a><span class='definition'>isWarn</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
+<a name="line-137"></a>		  <span class='keyword'>where</span>
+<a name="line-138"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-139"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		    <span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-140"></a>
+<a name="line-141"></a><a name="isPos"></a><span class='definition'>isPos</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-142"></a><span class='definition'>isPos</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
+<a name="line-143"></a>		  <span class='keyword'>where</span>
+<a name="line-144"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-145"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		 <span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-146"></a>
+<a name="line-147"></a><a name="isCls"></a><span class='definition'>isCls</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-148"></a><span class='definition'>isCls</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
+<a name="line-149"></a>		  <span class='keyword'>where</span>
+<a name="line-150"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-151"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		  <span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-152"></a>
+<a name="line-153"></a><a name="isOpn"></a><span class='definition'>isOpn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>
+<a name="line-154"></a><span class='definition'>isOpn</span>		<span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>
+<a name="line-155"></a>		  <span class='keyword'>where</span>
+<a name="line-156"></a>		  <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-157"></a>		  <span class='varid'>is</span> <span class='keyword'>_</span>		   <span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-158"></a>
+<a name="line-159"></a><span class='comment'>-- ----------------------------------------</span>
+<a name="line-160"></a><span class='comment'>-- primitive symbol parsers</span>
+<a name="line-161"></a>
+<a name="line-162"></a><a name="getTag"></a><span class='definition'>getTag</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Tag</span>
+<a name="line-163"></a><span class='definition'>getTag</span>		<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='layout'>(</span><span class='varid'>t1</span><span class='conop'>:</span><span class='varid'>ts1</span><span class='layout'>)</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>t1</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='varid'>ts1</span> <span class='varid'>nt</span><span class='layout'>)</span>
+<a name="line-164"></a>
+<a name="line-165"></a><a name="getSym"></a><span class='definition'>getSym</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='varid'>a</span>
+<a name="line-166"></a><span class='definition'>getSym</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-167"></a>		  <span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getTag</span>
+<a name="line-168"></a>		  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>t</span><span class='layout'>)</span>
+<a name="line-169"></a>
+<a name="line-170"></a><a name="getText"></a><span class='definition'>getText</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
+<a name="line-171"></a><span class='definition'>getText</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
+<a name="line-172"></a>    		  <span class='keyword'>where</span>
+<a name="line-173"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varid'>t</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>t</span>
+<a name="line-174"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
+<a name="line-175"></a>
+<a name="line-176"></a><a name="getCmt"></a><span class='definition'>getCmt</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
+<a name="line-177"></a><span class='definition'>getCmt</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
+<a name="line-178"></a>		  <span class='keyword'>where</span>
+<a name="line-179"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='varid'>c</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>c</span>
+<a name="line-180"></a>	  	  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
+<a name="line-181"></a>
+<a name="line-182"></a><a name="getWarn"></a><span class='definition'>getWarn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
+<a name="line-183"></a><span class='definition'>getWarn</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
+<a name="line-184"></a>	  	  <span class='keyword'>where</span>
+<a name="line-185"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='varid'>w</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>w</span>
+<a name="line-186"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
+<a name="line-187"></a>
+<a name="line-188"></a><a name="getPos"></a><span class='definition'>getPos</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>
+<a name="line-189"></a><span class='definition'>getPos</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
+<a name="line-190"></a>		  <span class='keyword'>where</span>
+<a name="line-191"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='varid'>l</span> <span class='varid'>c</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>l</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>
+<a name="line-192"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
+<a name="line-193"></a>
+<a name="line-194"></a><a name="getCls"></a><span class='definition'>getCls</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>
+<a name="line-195"></a><span class='definition'>getCls</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
+<a name="line-196"></a>		  <span class='keyword'>where</span>
+<a name="line-197"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>n</span>
+<a name="line-198"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
+<a name="line-199"></a>
+<a name="line-200"></a><a name="getOpn"></a><span class='definition'>getOpn</span>		<span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span><span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>)</span>
+<a name="line-201"></a><span class='definition'>getOpn</span>		<span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>
+<a name="line-202"></a>		  <span class='keyword'>where</span>
+<a name="line-203"></a>		  <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>al</span><span class='layout'>)</span>
+<a name="line-204"></a>		  <span class='varid'>sym</span> <span class='keyword'>_</span>			<span class='keyglyph'>=</span> <span class='varid'>undefined</span>
+<a name="line-205"></a>
+<a name="line-206"></a><span class='comment'>-- ----------------------------------------</span>
+<a name="line-207"></a><span class='comment'>-- pushback parsers for inserting missing tags</span>
+<a name="line-208"></a>
+<a name="line-209"></a><a name="pushBack"></a><span class='definition'>pushBack</span>	<span class='keyglyph'>::</span> <span class='conid'>Tag</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
+<a name="line-210"></a><span class='definition'>pushBack</span> <span class='varid'>t</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>()</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='layout'>(</span><span class='varid'>t</span><span class='conop'>:</span><span class='varid'>ts</span><span class='layout'>)</span> <span class='varid'>nt</span><span class='layout'>)</span>
+<a name="line-211"></a>
+<a name="line-212"></a><a name="insCls"></a><span class='definition'>insCls</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
+<a name="line-213"></a><span class='definition'>insCls</span> <span class='varid'>n</span>	<span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span>
+<a name="line-214"></a>
+<a name="line-215"></a><a name="insOpn"></a><span class='definition'>insOpn</span>		<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>()</span>
+<a name="line-216"></a><span class='definition'>insOpn</span> <span class='varid'>n</span> <span class='varid'>al</span>	<span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span>
+<a name="line-217"></a>
+<a name="line-218"></a><span class='comment'>-- ----------------------------------------</span>
+<a name="line-219"></a>
+<a name="line-220"></a><a name="insertQName"></a><span class='definition'>insertQName</span>	<span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>QName</span>
+<a name="line-221"></a><span class='definition'>insertQName</span> <span class='varid'>n</span>	<span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span>
+<a name="line-222"></a>				     <span class='layout'>(</span><span class='varid'>n'</span><span class='layout'>,</span> <span class='varid'>nt'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>insert</span> <span class='varid'>n</span> <span class='varid'>nt</span>
+<a name="line-223"></a>				     <span class='keyword'>in</span>
+<a name="line-224"></a>				     <span class='layout'>(</span><span class='varid'>n'</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt'</span><span class='layout'>)</span>
+<a name="line-225"></a>		  <span class='keyword'>where</span>
+<a name="line-226"></a>		  <span class='varid'>insert</span> <span class='varid'>s</span> <span class='varid'>nt</span>
+<a name="line-227"></a>		      <span class='keyglyph'>|</span> <span class='varid'>isJust</span> <span class='varid'>r</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varid'>r</span><span class='layout'>,</span> <span class='varid'>nt</span><span class='layout'>)</span>
+<a name="line-228"></a>		      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>nt</span><span class='layout'>)</span>
+<a name="line-229"></a>		      <span class='keyword'>where</span>
+<a name="line-230"></a>		      <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>s</span> <span class='varid'>nt</span>
+<a name="line-231"></a>
+<a name="line-232"></a><a name="mkQN"></a><span class='definition'>mkQN</span>		<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>QName</span>
+<a name="line-233"></a><span class='definition'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='varid'>isAttr</span> <span class='varid'>env</span> <span class='varid'>s</span>
+<a name="line-234"></a>    <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>
+<a name="line-235"></a>	<span class='keyglyph'>=</span> <span class='varid'>insertQName</span> <span class='varid'>qn1</span>
+<a name="line-236"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
+<a name="line-237"></a>	<span class='keyglyph'>=</span> <span class='varid'>insertQName</span> <span class='varid'>qn0</span>
+<a name="line-238"></a>    <span class='keyword'>where</span>
+<a name="line-239"></a>    <span class='varid'>qn1</span>
+<a name="line-240"></a>	<span class='keyglyph'>|</span> <span class='varid'>isAttr</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>isSimpleName</span>	<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
+<a name="line-241"></a>	<span class='keyglyph'>|</span> <span class='varid'>isSimpleName</span>			<span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='str'>""</span> <span class='varid'>s</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='str'>""</span><span class='layout'>)</span>
+<a name="line-242"></a>	<span class='keyglyph'>|</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='varid'>px</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='varid'>px</span><span class='layout'>)</span>
+<a name="line-243"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
+<a name="line-244"></a>    <span class='varid'>qn0</span>
+<a name="line-245"></a>	<span class='keyglyph'>|</span> <span class='varid'>isSimpleName</span>			<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
+<a name="line-246"></a>	<span class='keyglyph'>|</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varid'>s</span>	<span class='keyglyph'>=</span> <span class='varid'>mkPrefixLocalPart</span> <span class='varid'>px</span> <span class='varid'>lp</span>
+<a name="line-247"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>
+<a name="line-248"></a>
+<a name="line-249"></a>    <span class='varid'>nsUri</span> <span class='varid'>x</span>		<span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>x</span> <span class='varop'>$</span> <span class='varid'>env</span>
+<a name="line-250"></a>    <span class='varid'>isSimpleName</span>	<span class='keyglyph'>=</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>
+<a name="line-251"></a>    <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='layout'>(</span><span class='keyword'>_</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>span</span><span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>
+<a name="line-252"></a>
+<a name="line-253"></a><a name="extendNsEnv"></a><span class='definition'>extendNsEnv</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>NsEnv</span>
+<a name="line-254"></a><span class='definition'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env</span>
+<a name="line-255"></a>    <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>
+<a name="line-256"></a>	<span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addNs</span><span class='layout'>)</span> <span class='varid'>al1</span> <span class='varop'>++</span> <span class='varid'>env</span>
+<a name="line-257"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
+<a name="line-258"></a>	<span class='keyglyph'>=</span> <span class='varid'>env</span>
+<a name="line-259"></a>    <span class='keyword'>where</span>
+<a name="line-260"></a>    <span class='varid'>addNs</span> <span class='varid'>n</span> <span class='varid'>v</span>
+<a name="line-261"></a>	<span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>
+<a name="line-262"></a>	  <span class='varop'>&amp;&amp;</span>
+<a name="line-263"></a>	  <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>lp</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>tail</span> <span class='varop'>$</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-264"></a>	    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>lp</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span>
+<a name="line-265"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
+<a name="line-266"></a>	    <span class='keyglyph'>=</span> <span class='conid'>[]</span>
+<a name="line-267"></a>	<span class='keyword'>where</span>
+<a name="line-268"></a>	<span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>n</span>
+<a name="line-269"></a>
+<a name="line-270"></a><span class='comment'>-- ----------------------------------------</span>
+<a name="line-271"></a>
+<a name="line-272"></a><span class='comment'>-- own entity lookup to prevent problems with &amp;amp; and tagsoup hack for IE</span>
+<a name="line-273"></a>
+<a name="line-274"></a><a name="lookupEntity"></a><span class='definition'>lookupEntity</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>
+<a name="line-275"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='sel'>_asHtml</span> <span class='varid'>e0</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='chr'>'#'</span><span class='conop'>:</span><span class='varid'>e</span><span class='layout'>)</span>
+<a name="line-276"></a>    <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>lookupNumericEntity</span> <span class='varid'>e</span> <span class='keyword'>of</span>
+<a name="line-277"></a>      <span class='conid'>Just</span> <span class='varid'>c</span>  <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span> <span class='keyglyph'>]</span>
+<a name="line-278"></a>      <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span> <span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&amp;"</span> <span class='varop'>++</span> <span class='varid'>e0</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>
+<a name="line-279"></a>		 <span class='keyword'>if</span> <span class='varid'>withWarnings</span>
+<a name="line-280"></a>		 <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"illegal char reference: &amp;"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>
+<a name="line-281"></a>		 <span class='keyword'>else</span> <span class='conid'>[]</span>
+<a name="line-282"></a>
+<a name="line-283"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span> <span class='varid'>e</span>
+<a name="line-284"></a>    <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>e</span> <span class='varid'>entities</span><span class='layout'>)</span> <span class='keyword'>of</span>
+<a name="line-285"></a>      <span class='conid'>Just</span> <span class='varid'>x</span>  <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>toEnum</span> <span class='varid'>x</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span>
+<a name="line-286"></a>      <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&amp;"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>
+<a name="line-287"></a>		 <span class='keyword'>if</span> <span class='varid'>withWarnings</span>
+<a name="line-288"></a>		 <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"Unknown entity reference: &amp;"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>
+<a name="line-289"></a>		 <span class='keyword'>else</span> <span class='conid'>[]</span>
+<a name="line-290"></a>    <span class='keyword'>where</span>
+<a name="line-291"></a>    <span class='varid'>entities</span>
+<a name="line-292"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>    <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span>
+<a name="line-293"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span> <span class='comment'>-- xmlEntities (TODO: xhtml is xml and html)</span>
+<a name="line-294"></a>
+<a name="line-295"></a><span class='comment'>-- ----------------------------------------</span>
 <a name="line-296"></a>
-<a name="line-297"></a><a name="parseHtmlTagSoup"></a><span class='definition'>parseHtmlTagSoup</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-298"></a><span class='definition'>parseHtmlTagSoup</span> <span class='varid'>withNamespaces</span> <span class='varid'>withWarnings</span> <span class='varid'>withComment</span> <span class='varid'>removeWhiteSpace</span> <span class='varid'>asHtml</span> <span class='varid'>doc</span>
-<a name="line-299"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>docRootElem</span>
-<a name="line-300"></a>	<span class='varop'>.</span> <span class='varid'>runParser</span> <span class='layout'>(</span><span class='varid'>buildCont</span> <span class='varid'>initContext</span><span class='layout'>)</span>
-<a name="line-301"></a>	<span class='varop'>.</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>asHtml</span>
-<a name="line-302"></a>	    <span class='keyword'>then</span> <span class='varid'>canonicalizeTags</span>
-<a name="line-303"></a>	    <span class='keyword'>else</span> <span class='varid'>id</span>
-<a name="line-304"></a>	  <span class='layout'>)</span>
-<a name="line-305"></a>	<span class='varop'>.</span> <span class='varid'>parseTagsOptions</span> <span class='layout'>(</span><span class='varid'>parseOptions</span> <span class='layout'>{</span> <span class='varid'>optTagWarning</span>   <span class='keyglyph'>=</span> <span class='varid'>withWarnings</span>
-<a name="line-306"></a>					 <span class='layout'>,</span> <span class='varid'>optLookupEntity</span> <span class='keyglyph'>=</span> <span class='varid'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span>
-<a name="line-307"></a>					 <span class='layout'>}</span>
-<a name="line-308"></a>			   <span class='layout'>)</span>
-<a name="line-309"></a>      <span class='layout'>)</span>
-<a name="line-310"></a>    <span class='keyword'>where</span>
-<a name="line-311"></a>    <span class='comment'>-- This is essential for lasy parsing:</span>
-<a name="line-312"></a>    <span class='comment'>-- the call of "take 1" stops parsing, when the first element is detected</span>
-<a name="line-313"></a>    <span class='comment'>-- no check on end of input sequence is required to build this (0- or 1-element list)</span>
-<a name="line-314"></a>    <span class='comment'>-- so eof is never checked unneccessarily</span>
+<a name="line-297"></a><span class='comment'>-- |</span>
+<a name="line-298"></a><span class='comment'>-- Turns all element and attribute names to lower case</span>
+<a name="line-299"></a><span class='comment'>-- even !DOCTYPE stuff. But this is discarded when parsing the tagsoup</span>
+<a name="line-300"></a>
+<a name="line-301"></a><a name="lowerCaseNames"></a><span class='definition'>lowerCaseNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>
+<a name="line-302"></a><span class='definition'>lowerCaseNames</span>
+<a name="line-303"></a>    <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>f</span>
+<a name="line-304"></a>    <span class='keyword'>where</span>
+<a name="line-305"></a>    <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>name</span> <span class='varid'>attrs</span><span class='layout'>)</span>
+<a name="line-306"></a>        <span class='keyglyph'>=</span> <span class='conid'>TagOpen</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>attrToLower</span> <span class='varid'>attrs</span><span class='layout'>)</span>
+<a name="line-307"></a>    <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>name</span><span class='layout'>)</span>
+<a name="line-308"></a>	<span class='keyglyph'>=</span> <span class='conid'>TagClose</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>name</span><span class='layout'>)</span>
+<a name="line-309"></a>    <span class='varid'>f</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>a</span>
+<a name="line-310"></a>    <span class='varid'>nameToLower</span>          <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>toLower</span>
+<a name="line-311"></a>    <span class='varid'>attrToLower</span> <span class='layout'>(</span><span class='varid'>an</span><span class='layout'>,</span> <span class='varid'>av</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>an</span><span class='layout'>,</span> <span class='varid'>av</span><span class='layout'>)</span>
+<a name="line-312"></a>
+<a name="line-313"></a><span class='comment'>-- ----------------------------------------</span>
+<a name="line-314"></a><span class='comment'>-- the main parser</span>
 <a name="line-315"></a>
-<a name="line-316"></a>    <span class='varid'>docRootElem</span>
-<a name="line-317"></a>	<span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='varid'>isElem</span>
-<a name="line-318"></a>
-<a name="line-319"></a>    <span class='varid'>initContext</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>[]</span>
-<a name="line-320"></a>			  <span class='layout'>,</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_xml</span><span class='layout'>,</span>   <span class='varid'>xmlNamespace</span><span class='layout'>)</span>
-<a name="line-321"></a>			    <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span>
-<a name="line-322"></a>			    <span class='keyglyph'>]</span>
-<a name="line-323"></a>			  <span class='layout'>)</span>
-<a name="line-324"></a>
-<a name="line-325"></a>    <span class='varid'>wrap</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-326"></a>
-<a name="line-327"></a>    <span class='varid'>warn</span>
-<a name="line-328"></a>	<span class='keyglyph'>|</span> <span class='varid'>withWarnings</span>	<span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkError</span> <span class='varid'>c_warn</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>doc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" "</span> <span class='varop'>++</span><span class='layout'>)</span>
-<a name="line-329"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>
-<a name="line-330"></a>    <span class='varid'>cmt</span>
-<a name="line-331"></a>	<span class='keyglyph'>|</span> <span class='varid'>withComment</span>	<span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkCmt</span>
-<a name="line-332"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>
-<a name="line-333"></a>    <span class='varid'>txt</span>
-<a name="line-334"></a>	<span class='keyglyph'>|</span> <span class='varid'>removeWhiteSpace</span>
-<a name="line-335"></a>			<span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-336"></a>			  <span class='keyword'>if</span> <span class='varid'>all</span> <span class='varid'>isXmlSpaceChar</span> <span class='varid'>t</span>
-<a name="line-337"></a>			  <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-338"></a>			  <span class='keyword'>else</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>t</span>
-<a name="line-339"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span>
-<a name="line-340"></a>
-<a name="line-341"></a>    <span class='varid'>isEmptyElem</span>
-<a name="line-342"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>	<span class='keyglyph'>=</span> <span class='varid'>isEmptyHtmlTag</span>
-<a name="line-343"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>False</span>
-<a name="line-344"></a>
-<a name="line-345"></a>    <span class='varid'>isInnerElem</span>
-<a name="line-346"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>	<span class='keyglyph'>=</span> <span class='varid'>isInnerHtmlTagOf</span>
-<a name="line-347"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>
-<a name="line-348"></a>
-<a name="line-349"></a>    <span class='varid'>closesElem</span>
-<a name="line-350"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>ns</span> <span class='varid'>n1</span> <span class='keyglyph'>-&gt;</span>
-<a name="line-351"></a>			  <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ns</span><span class='layout'>)</span>
-<a name="line-352"></a>			  <span class='varop'>&amp;&amp;</span>
-<a name="line-353"></a>			  <span class='varid'>n1</span> <span class='varop'>`closesHtmlTag`</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns</span><span class='layout'>)</span>
-<a name="line-354"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>
-<a name="line-355"></a>
-<a name="line-356"></a>    <span class='varid'>buildCont</span>	<span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
-<a name="line-357"></a>    <span class='varid'>buildCont</span> <span class='varid'>ns</span>
-<a name="line-358"></a>	<span class='keyglyph'>=</span> <span class='varid'>cond</span> <span class='varid'>isText</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-359"></a>			<span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getText</span>
-<a name="line-360"></a>			<span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>
-<a name="line-361"></a>			<span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>t</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>
-<a name="line-362"></a>		      <span class='layout'>)</span>
-<a name="line-363"></a>	  <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isOpn</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-364"></a>			 <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getOpn</span>
-<a name="line-365"></a>			 <span class='varid'>openTag</span> <span class='varid'>ns</span> <span class='varid'>n</span> <span class='varid'>al</span>
-<a name="line-366"></a>		       <span class='layout'>)</span>
-<a name="line-367"></a>	    <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCls</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-368"></a>			   <span class='varid'>n</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCls</span>
-<a name="line-369"></a>			   <span class='varid'>closeTag</span> <span class='varid'>ns</span> <span class='varid'>n</span>
-<a name="line-370"></a>			 <span class='layout'>)</span>
-<a name="line-371"></a>	      <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCmt</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-372"></a>			     <span class='varid'>c</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCmt</span>
-<a name="line-373"></a>			     <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>
-<a name="line-374"></a>			     <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>cmt</span> <span class='varid'>c</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>
-<a name="line-375"></a>			   <span class='layout'>)</span>
-<a name="line-376"></a>		<span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isWarn</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-377"></a>				<span class='varid'>w</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getWarn</span>
-<a name="line-378"></a>				<span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>
-<a name="line-379"></a>				<span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>w</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>
-<a name="line-380"></a>			      <span class='layout'>)</span>
-<a name="line-381"></a>		  <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isPos</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-382"></a>				 <span class='varid'>getPos</span>
-<a name="line-383"></a>				 <span class='varid'>buildCont</span> <span class='varid'>ns</span>
-<a name="line-384"></a>			       <span class='layout'>)</span>
-<a name="line-385"></a>		    <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isEof</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-386"></a>				   <span class='varid'>isEof</span>
-<a name="line-387"></a>				   <span class='varid'>closeAll</span> <span class='varid'>ns</span>
-<a name="line-388"></a>				 <span class='layout'>)</span>
-<a name="line-389"></a>		      <span class='layout'>(</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='str'>"parse error in tagsoup tree construction"</span><span class='layout'>)</span>
-<a name="line-390"></a>		      <span class='layout'>)</span>
-<a name="line-391"></a>		    <span class='layout'>)</span>
-<a name="line-392"></a>		  <span class='layout'>)</span>
-<a name="line-393"></a>		<span class='layout'>)</span>
-<a name="line-394"></a>	      <span class='layout'>)</span>
-<a name="line-395"></a>	    <span class='layout'>)</span>
-<a name="line-396"></a>	  <span class='layout'>)</span>
-<a name="line-397"></a>	<span class='keyword'>where</span>
-<a name="line-398"></a>	<span class='varid'>closeTag</span>		<span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
-<a name="line-399"></a>	<span class='varid'>closeTag</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>
-<a name="line-400"></a>	    <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>==</span> <span class='varid'>n1</span>		<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>			<span class='comment'>-- a normal closing tag</span>
-<a name="line-401"></a>								<span class='comment'>-- all other cases try to repair wrong html</span>
-<a name="line-402"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>				<span class='comment'>-- n1 closes n implicitly</span>
-<a name="line-403"></a>	    <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>`isInnerElem`</span> <span class='varid'>n1</span>				<span class='comment'>-- e.g. &lt;td&gt;...&lt;/tr&gt;</span>
-<a name="line-404"></a>				<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-405"></a>				  <span class='varid'>insCls</span> <span class='varid'>n1</span>			<span class='comment'>-- pushback &lt;/n1&gt;</span>
-<a name="line-406"></a>				  <span class='varid'>insCls</span> <span class='varid'>n'</span>			<span class='comment'>-- insert a &lt;/n'&gt;</span>
-<a name="line-407"></a>				  <span class='varid'>buildCont</span> <span class='varid'>ns'</span>			<span class='comment'>-- try again</span>
-<a name="line-408"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>
-<a name="line-409"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span>	<span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>			<span class='comment'>-- ignore a redundant closing tag for empty element</span>
-<a name="line-410"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='varid'>ns1'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>				<span class='comment'>-- insert a missing closing tag</span>
-<a name="line-411"></a>	    <span class='keyglyph'>|</span> <span class='varid'>n1</span> <span class='varop'>`elem`</span> <span class='varid'>ns1'</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-412"></a>				  <span class='varid'>insCls</span> <span class='varid'>n1</span>
-<a name="line-413"></a>				  <span class='varid'>insCls</span> <span class='varid'>n'</span>
-<a name="line-414"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>
-<a name="line-415"></a>				  <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span> <span class='varop'>++</span>
-<a name="line-416"></a>						 <span class='str'>" expected, but "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span> <span class='varop'>++</span> <span class='str'>" found"</span><span class='layout'>)</span>
-<a name="line-417"></a>					   <span class='varop'>++</span> <span class='varid'>rl</span>
-<a name="line-418"></a>					 <span class='layout'>)</span>
-<a name="line-419"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>						<span class='comment'>-- ignore a wrong closing tag</span>
-<a name="line-420"></a>				<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-421"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>
-<a name="line-422"></a>				  <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"no opening tag for closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span><span class='layout'>)</span>
-<a name="line-423"></a>					   <span class='varop'>++</span> <span class='varid'>rl</span>
-<a name="line-424"></a>					 <span class='layout'>)</span>
-<a name="line-425"></a>
-<a name="line-426"></a>	<span class='varid'>openTag</span>			<span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
-<a name="line-427"></a>	<span class='varid'>openTag</span> <span class='varid'>cx'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='varid'>env'</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='varid'>al1</span>
-<a name="line-428"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isPiDT</span> <span class='varid'>n1</span>		<span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
-<a name="line-429"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span>
-<a name="line-430"></a>				<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-431"></a>				  <span class='varid'>qn</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>
-<a name="line-432"></a>				  <span class='varid'>al</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>
-<a name="line-433"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
-<a name="line-434"></a>				  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='conid'>[]</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>
-<a name="line-435"></a>	    <span class='keyglyph'>|</span> <span class='varid'>closesElem</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-436"></a>				  <span class='varid'>insOpn</span> <span class='varid'>n1</span> <span class='varid'>al1</span>
-<a name="line-437"></a>				  <span class='varid'>insCls</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns'</span><span class='layout'>)</span>
-<a name="line-438"></a>				  <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
-<a name="line-439"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-440"></a>				  <span class='varid'>qn</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>
-<a name="line-441"></a>				  <span class='varid'>al</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>
-<a name="line-442"></a>				  <span class='varid'>cs</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n1</span> <span class='conop'>:</span> <span class='varid'>ns'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>nenv</span><span class='layout'>)</span>
-<a name="line-443"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
-<a name="line-444"></a>				  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>
-<a name="line-445"></a>	    <span class='keyword'>where</span>
-<a name="line-446"></a>	    <span class='varid'>nenv</span>		<span class='keyglyph'>=</span> <span class='varid'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env'</span>
-<a name="line-447"></a>	    <span class='varid'>mkElemQN</span>		<span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>False</span>
-<a name="line-448"></a>	    <span class='varid'>mkAttrQN</span>		<span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>True</span>
-<a name="line-449"></a>	    <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'?'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-450"></a>	    <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'!'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-451"></a>	    <span class='varid'>isPiDT</span> <span class='keyword'>_</span>		<span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-452"></a>	    <span class='varid'>mkAttrs</span>		<span class='keyglyph'>=</span> <span class='varid'>mapM</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>mkA</span><span class='layout'>)</span>
-<a name="line-453"></a>	    <span class='varid'>mkA</span> <span class='varid'>an</span> <span class='varid'>av</span>		<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-454"></a>				  <span class='varid'>qan</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkAttrQN</span> <span class='varid'>nenv</span> <span class='varid'>an</span>
-<a name="line-455"></a>				  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkAttr</span> <span class='varid'>qan</span> <span class='layout'>(</span><span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>av</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-456"></a>
-<a name="line-457"></a>	<span class='varid'>closeAll</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
-<a name="line-458"></a>	<span class='varid'>closeAll</span> <span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>wrn</span> <span class='varid'>ns'</span><span class='layout'>)</span>
-<a name="line-459"></a>				  <span class='keyword'>where</span>
-<a name="line-460"></a>				  <span class='varid'>wrn</span> <span class='keyglyph'>=</span> <span class='varid'>warn</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"insert missing closing tag "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span>
-<a name="line-461"></a>
-<a name="line-462"></a><span class='comment'>-- ------------------------------------------------------------</span>
+<a name="line-316"></a><a name="parseHtmlTagSoup"></a><span class='definition'>parseHtmlTagSoup</span>	<span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
+<a name="line-317"></a><span class='definition'>parseHtmlTagSoup</span> <span class='varid'>withNamespaces</span> <span class='varid'>withWarnings</span> <span class='varid'>withComment</span> <span class='varid'>removeWhiteSpace</span> <span class='varid'>asHtml</span> <span class='varid'>doc</span>
+<a name="line-318"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>docRootElem</span>
+<a name="line-319"></a>	<span class='varop'>.</span> <span class='varid'>runParser</span> <span class='layout'>(</span><span class='varid'>buildCont</span> <span class='varid'>initContext</span><span class='layout'>)</span>
+<a name="line-320"></a>	<span class='varop'>.</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>asHtml</span>
+<a name="line-321"></a>	    <span class='keyword'>then</span> <span class='varid'>lowerCaseNames</span>
+<a name="line-322"></a>	    <span class='keyword'>else</span> <span class='varid'>id</span>
+<a name="line-323"></a>	  <span class='layout'>)</span>
+<a name="line-324"></a>	<span class='varop'>.</span> <span class='varid'>parseTagsOptions</span> <span class='layout'>(</span><span class='varid'>parseOptions</span> <span class='layout'>{</span> <span class='varid'>optTagWarning</span>   <span class='keyglyph'>=</span> <span class='varid'>withWarnings</span>
+<a name="line-325"></a>					 <span class='layout'>,</span> <span class='varid'>optLookupEntity</span> <span class='keyglyph'>=</span> <span class='varid'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span>
+<a name="line-326"></a>					 <span class='layout'>}</span>
+<a name="line-327"></a>			   <span class='layout'>)</span>
+<a name="line-328"></a>      <span class='layout'>)</span>
+<a name="line-329"></a>    <span class='keyword'>where</span>
+<a name="line-330"></a>    <span class='comment'>-- This is essential for lasy parsing:</span>
+<a name="line-331"></a>    <span class='comment'>-- the call of "take 1" stops parsing, when the first element is detected</span>
+<a name="line-332"></a>    <span class='comment'>-- no check on end of input sequence is required to build this (0- or 1-element list)</span>
+<a name="line-333"></a>    <span class='comment'>-- so eof is never checked unneccessarily</span>
+<a name="line-334"></a>
+<a name="line-335"></a>    <span class='varid'>docRootElem</span>
+<a name="line-336"></a>	<span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='varid'>isElem</span>
+<a name="line-337"></a>
+<a name="line-338"></a>    <span class='varid'>initContext</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>[]</span>
+<a name="line-339"></a>			  <span class='layout'>,</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_xml</span><span class='layout'>,</span>   <span class='varid'>xmlNamespace</span><span class='layout'>)</span>
+<a name="line-340"></a>			    <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span>
+<a name="line-341"></a>			    <span class='keyglyph'>]</span>
+<a name="line-342"></a>			  <span class='layout'>)</span>
+<a name="line-343"></a>
+<a name="line-344"></a>    <span class='varid'>wrap</span>		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span>
+<a name="line-345"></a>
+<a name="line-346"></a>    <span class='varid'>warn</span>
+<a name="line-347"></a>	<span class='keyglyph'>|</span> <span class='varid'>withWarnings</span>	<span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkError</span> <span class='varid'>c_warn</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>doc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" "</span> <span class='varop'>++</span><span class='layout'>)</span>
+<a name="line-348"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>
+<a name="line-349"></a>    <span class='varid'>cmt</span>
+<a name="line-350"></a>	<span class='keyglyph'>|</span> <span class='varid'>withComment</span>	<span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkCmt</span>
+<a name="line-351"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>
+<a name="line-352"></a>    <span class='varid'>txt</span>
+<a name="line-353"></a>	<span class='keyglyph'>|</span> <span class='varid'>removeWhiteSpace</span>
+<a name="line-354"></a>			<span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-355"></a>			  <span class='keyword'>if</span> <span class='varid'>all</span> <span class='varid'>isXmlSpaceChar</span> <span class='varid'>t</span>
+<a name="line-356"></a>			  <span class='keyword'>then</span> <span class='conid'>[]</span>
+<a name="line-357"></a>			  <span class='keyword'>else</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>t</span>
+<a name="line-358"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span>
+<a name="line-359"></a>
+<a name="line-360"></a>    <span class='varid'>isEmptyElem</span>
+<a name="line-361"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>	<span class='keyglyph'>=</span> <span class='varid'>isEmptyHtmlTag</span>
+<a name="line-362"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>False</span>
+<a name="line-363"></a>
+<a name="line-364"></a>    <span class='varid'>isInnerElem</span>
+<a name="line-365"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>	<span class='keyglyph'>=</span> <span class='varid'>isInnerHtmlTagOf</span>
+<a name="line-366"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>
+<a name="line-367"></a>
+<a name="line-368"></a>    <span class='varid'>closesElem</span>
+<a name="line-369"></a>	<span class='keyglyph'>|</span> <span class='varid'>asHtml</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>ns</span> <span class='varid'>n1</span> <span class='keyglyph'>-&gt;</span>
+<a name="line-370"></a>			  <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ns</span><span class='layout'>)</span>
+<a name="line-371"></a>			  <span class='varop'>&amp;&amp;</span>
+<a name="line-372"></a>			  <span class='varid'>n1</span> <span class='varop'>`closesHtmlTag`</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns</span><span class='layout'>)</span>
+<a name="line-373"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>
+<a name="line-374"></a>
+<a name="line-375"></a>    <span class='varid'>buildCont</span>	<span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
+<a name="line-376"></a>    <span class='varid'>buildCont</span> <span class='varid'>ns</span>
+<a name="line-377"></a>	<span class='keyglyph'>=</span> <span class='varid'>cond</span> <span class='varid'>isText</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-378"></a>			<span class='varid'>t</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getText</span>
+<a name="line-379"></a>			<span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>
+<a name="line-380"></a>			<span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>t</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>
+<a name="line-381"></a>		      <span class='layout'>)</span>
+<a name="line-382"></a>	  <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isOpn</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-383"></a>			 <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getOpn</span>
+<a name="line-384"></a>			 <span class='varid'>openTag</span> <span class='varid'>ns</span> <span class='varid'>n</span> <span class='varid'>al</span>
+<a name="line-385"></a>		       <span class='layout'>)</span>
+<a name="line-386"></a>	    <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCls</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-387"></a>			   <span class='varid'>n</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCls</span>
+<a name="line-388"></a>			   <span class='varid'>closeTag</span> <span class='varid'>ns</span> <span class='varid'>n</span>
+<a name="line-389"></a>			 <span class='layout'>)</span>
+<a name="line-390"></a>	      <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCmt</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-391"></a>			     <span class='varid'>c</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getCmt</span>
+<a name="line-392"></a>			     <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>
+<a name="line-393"></a>			     <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>cmt</span> <span class='varid'>c</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>
+<a name="line-394"></a>			   <span class='layout'>)</span>
+<a name="line-395"></a>		<span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isWarn</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-396"></a>				<span class='varid'>w</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getWarn</span>
+<a name="line-397"></a>				<span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>
+<a name="line-398"></a>				<span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>w</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>
+<a name="line-399"></a>			      <span class='layout'>)</span>
+<a name="line-400"></a>		  <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isPos</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-401"></a>				 <span class='varid'>getPos</span>
+<a name="line-402"></a>				 <span class='varid'>buildCont</span> <span class='varid'>ns</span>
+<a name="line-403"></a>			       <span class='layout'>)</span>
+<a name="line-404"></a>		    <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isEof</span> <span class='layout'>(</span> <span class='keyword'>do</span>
+<a name="line-405"></a>				   <span class='varid'>isEof</span>
+<a name="line-406"></a>				   <span class='varid'>closeAll</span> <span class='varid'>ns</span>
+<a name="line-407"></a>				 <span class='layout'>)</span>
+<a name="line-408"></a>		      <span class='layout'>(</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='str'>"parse error in tagsoup tree construction"</span><span class='layout'>)</span>
+<a name="line-409"></a>		      <span class='layout'>)</span>
+<a name="line-410"></a>		    <span class='layout'>)</span>
+<a name="line-411"></a>		  <span class='layout'>)</span>
+<a name="line-412"></a>		<span class='layout'>)</span>
+<a name="line-413"></a>	      <span class='layout'>)</span>
+<a name="line-414"></a>	    <span class='layout'>)</span>
+<a name="line-415"></a>	  <span class='layout'>)</span>
+<a name="line-416"></a>	<span class='keyword'>where</span>
+<a name="line-417"></a>	<span class='varid'>closeTag</span>		<span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
+<a name="line-418"></a>	<span class='varid'>closeTag</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>
+<a name="line-419"></a>	    <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>==</span> <span class='varid'>n1</span>		<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>			<span class='comment'>-- a normal closing tag</span>
+<a name="line-420"></a>								<span class='comment'>-- all other cases try to repair wrong html</span>
+<a name="line-421"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>				<span class='comment'>-- n1 closes n implicitly</span>
+<a name="line-422"></a>	    <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>`isInnerElem`</span> <span class='varid'>n1</span>				<span class='comment'>-- e.g. &lt;td&gt;...&lt;/tr&gt;</span>
+<a name="line-423"></a>				<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-424"></a>				  <span class='varid'>insCls</span> <span class='varid'>n1</span>			<span class='comment'>-- pushback &lt;/n1&gt;</span>
+<a name="line-425"></a>				  <span class='varid'>insCls</span> <span class='varid'>n'</span>			<span class='comment'>-- insert a &lt;/n'&gt;</span>
+<a name="line-426"></a>				  <span class='varid'>buildCont</span> <span class='varid'>ns'</span>			<span class='comment'>-- try again</span>
+<a name="line-427"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>
+<a name="line-428"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span>	<span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>			<span class='comment'>-- ignore a redundant closing tag for empty element</span>
+<a name="line-429"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='varid'>ns1'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>				<span class='comment'>-- insert a missing closing tag</span>
+<a name="line-430"></a>	    <span class='keyglyph'>|</span> <span class='varid'>n1</span> <span class='varop'>`elem`</span> <span class='varid'>ns1'</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-431"></a>				  <span class='varid'>insCls</span> <span class='varid'>n1</span>
+<a name="line-432"></a>				  <span class='varid'>insCls</span> <span class='varid'>n'</span>
+<a name="line-433"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>
+<a name="line-434"></a>				  <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span> <span class='varop'>++</span>
+<a name="line-435"></a>						 <span class='str'>" expected, but "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span> <span class='varop'>++</span> <span class='str'>" found"</span><span class='layout'>)</span>
+<a name="line-436"></a>					   <span class='varop'>++</span> <span class='varid'>rl</span>
+<a name="line-437"></a>					 <span class='layout'>)</span>
+<a name="line-438"></a>	<span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>						<span class='comment'>-- ignore a wrong closing tag</span>
+<a name="line-439"></a>				<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-440"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>
+<a name="line-441"></a>				  <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"no opening tag for closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span><span class='layout'>)</span>
+<a name="line-442"></a>					   <span class='varop'>++</span> <span class='varid'>rl</span>
+<a name="line-443"></a>					 <span class='layout'>)</span>
+<a name="line-444"></a>
+<a name="line-445"></a>	<span class='varid'>openTag</span>			<span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
+<a name="line-446"></a>	<span class='varid'>openTag</span> <span class='varid'>cx'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='varid'>env'</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='varid'>al1</span>
+<a name="line-447"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isPiDT</span> <span class='varid'>n1</span>		<span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
+<a name="line-448"></a>	    <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span>
+<a name="line-449"></a>				<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-450"></a>				  <span class='varid'>qn</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>
+<a name="line-451"></a>				  <span class='varid'>al</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>
+<a name="line-452"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
+<a name="line-453"></a>				  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='conid'>[]</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>
+<a name="line-454"></a>	    <span class='keyglyph'>|</span> <span class='varid'>closesElem</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-455"></a>				  <span class='varid'>insOpn</span> <span class='varid'>n1</span> <span class='varid'>al1</span>
+<a name="line-456"></a>				  <span class='varid'>insCls</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns'</span><span class='layout'>)</span>
+<a name="line-457"></a>				  <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
+<a name="line-458"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-459"></a>				  <span class='varid'>qn</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>
+<a name="line-460"></a>				  <span class='varid'>al</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>
+<a name="line-461"></a>				  <span class='varid'>cs</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n1</span> <span class='conop'>:</span> <span class='varid'>ns'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>nenv</span><span class='layout'>)</span>
+<a name="line-462"></a>				  <span class='varid'>rl</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>
+<a name="line-463"></a>				  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>
+<a name="line-464"></a>	    <span class='keyword'>where</span>
+<a name="line-465"></a>	    <span class='varid'>nenv</span>		<span class='keyglyph'>=</span> <span class='varid'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env'</span>
+<a name="line-466"></a>	    <span class='varid'>mkElemQN</span>		<span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>False</span>
+<a name="line-467"></a>	    <span class='varid'>mkAttrQN</span>		<span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>True</span>
+<a name="line-468"></a>	    <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'?'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-469"></a>	    <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'!'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
+<a name="line-470"></a>	    <span class='varid'>isPiDT</span> <span class='keyword'>_</span>		<span class='keyglyph'>=</span> <span class='conid'>False</span>
+<a name="line-471"></a>	    <span class='varid'>mkAttrs</span>		<span class='keyglyph'>=</span> <span class='varid'>mapM</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>mkA</span><span class='layout'>)</span>
+<a name="line-472"></a>	    <span class='varid'>mkA</span> <span class='varid'>an</span> <span class='varid'>av</span>		<span class='keyglyph'>=</span> <span class='keyword'>do</span>
+<a name="line-473"></a>				  <span class='varid'>qan</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>mkAttrQN</span> <span class='varid'>nenv</span> <span class='varid'>an</span>
+<a name="line-474"></a>				  <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkAttr</span> <span class='varid'>qan</span> <span class='layout'>(</span><span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>av</span><span class='layout'>)</span><span class='layout'>)</span>
+<a name="line-475"></a>
+<a name="line-476"></a>	<span class='varid'>closeAll</span>		<span class='keyglyph'>::</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>
+<a name="line-477"></a>	<span class='varid'>closeAll</span> <span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>wrn</span> <span class='varid'>ns'</span><span class='layout'>)</span>
+<a name="line-478"></a>				  <span class='keyword'>where</span>
+<a name="line-479"></a>				  <span class='varid'>wrn</span> <span class='keyglyph'>=</span> <span class='varid'>warn</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"insert missing closing tag "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span>
+<a name="line-480"></a>
+<a name="line-481"></a><span class='comment'>-- ------------------------------------------------------------</span>
 </pre></body>
 </html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser-XmlInput.html b/doc/hdoc/src/Text-XML-HXT-Parser-XmlInput.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser-XmlInput.html
+++ /dev/null
@@ -1,394 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-2"></a><span class='comment'>--</span>
-<a name="line-3"></a><span class='comment'>-- input functions</span>
-<a name="line-4"></a><span class='comment'>-- implemented as filer</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>-- Version : $Id: XmlInput.hs,v 1.9 2006/03/03 14:20:17 hxml Exp $</span>
-<a name="line-7"></a>
-<a name="line-8"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>
-<a name="line-9"></a>    <span class='layout'>(</span> <span class='varid'>getXmlContents</span>
-<a name="line-10"></a>    <span class='layout'>,</span> <span class='varid'>getXmlEntityContents</span>
-<a name="line-11"></a>    <span class='layout'>,</span> <span class='varid'>getUrlContents</span>
-<a name="line-12"></a>    <span class='layout'>,</span> <span class='varid'>getContentLength</span>
-<a name="line-13"></a>    <span class='layout'>,</span> <span class='varid'>guessDocEncoding</span>
-<a name="line-14"></a>    <span class='layout'>,</span> <span class='varid'>runInLocalURIContext</span>
-<a name="line-15"></a>    <span class='layout'>,</span> <span class='varid'>runInNewURIContext</span>
-<a name="line-16"></a>    <span class='layout'>,</span> <span class='varid'>getBaseURI</span>
-<a name="line-17"></a>    <span class='layout'>,</span> <span class='varid'>setBaseURI</span>
-<a name="line-18"></a>    <span class='layout'>,</span> <span class='varid'>getAbsolutURI</span>
-<a name="line-19"></a>    <span class='layout'>,</span> <span class='varid'>isStandaloneDocument</span>
-<a name="line-20"></a>    <span class='layout'>)</span>
-<a name="line-21"></a>
-<a name="line-22"></a><span class='keyword'>where</span>
-<a name="line-23"></a>
-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-25"></a>
-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DefaultURI</span>
-<a name="line-29"></a>    <span class='layout'>(</span> <span class='varid'>setDefaultURI</span>
-<a name="line-30"></a>    <span class='layout'>)</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>
-<a name="line-33"></a>    <span class='layout'>(</span> <span class='varid'>parseXmlDocEncodingSpec</span>
-<a name="line-34"></a>    <span class='layout'>,</span> <span class='varid'>parseXmlEntityEncodingSpec</span>
-<a name="line-35"></a>    <span class='layout'>,</span> <span class='varid'>removeEncodingSpec</span>
-<a name="line-36"></a>    <span class='layout'>)</span>
-<a name="line-37"></a>
-<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>
-<a name="line-39"></a>    <span class='layout'>(</span> <span class='varid'>getDecodingFct</span>
-<a name="line-40"></a>    <span class='layout'>,</span> <span class='varid'>guessEncoding</span>
-<a name="line-41"></a>    <span class='layout'>,</span> <span class='varid'>normalizeNL</span>
-<a name="line-42"></a>    <span class='layout'>)</span>
-<a name="line-43"></a>
-<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-45"></a>    <span class='layout'>(</span> <span class='varid'>traceTree</span>
-<a name="line-46"></a>    <span class='layout'>,</span> <span class='varid'>traceSource</span>
-<a name="line-47"></a>    <span class='layout'>,</span> <span class='varid'>traceMsg</span>
-<a name="line-48"></a>    <span class='layout'>)</span>
-<a name="line-49"></a>
-<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandler</span>
-<a name="line-51"></a>    <span class='layout'>(</span> <span class='varid'>getProtocolHandler</span>
-<a name="line-52"></a>    <span class='layout'>)</span>
-<a name="line-53"></a>
-<a name="line-54"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-55"></a><span class='comment'>--</span>
-<a name="line-56"></a><span class='comment'>-- URI manipulation</span>
-<a name="line-57"></a>
-<a name="line-58"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>
-<a name="line-59"></a>    <span class='layout'>(</span> <span class='varid'>parseURIReference</span>
-<a name="line-60"></a>    <span class='layout'>,</span> <span class='varid'>relativeTo</span>
-<a name="line-61"></a>    <span class='layout'>,</span> <span class='varid'>uriScheme</span>
-<a name="line-62"></a>    <span class='layout'>)</span>
-<a name="line-63"></a>
-<a name="line-64"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-65"></a><span class='comment'>--</span>
-<a name="line-66"></a><span class='comment'>-- utilities</span>
-<a name="line-67"></a>
-<a name="line-68"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-69"></a>
-<a name="line-70"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-71"></a><span class='comment'>--</span>
-<a name="line-72"></a><span class='comment'>-- filter for reading the content</span>
-<a name="line-73"></a><span class='comment'>-- input: a root node with arguments in tag attribute list</span>
-<a name="line-74"></a><span class='comment'>-- and without any children.</span>
-<a name="line-75"></a>
-<a name="line-76"></a><span class='comment'>-- attribute a_source   ("source")   for input file or uri</span>
-<a name="line-77"></a><span class='comment'>--</span>
-<a name="line-78"></a><span class='comment'>-- attribute a_encoding ("encoding") for encoding scheme</span>
-<a name="line-79"></a><span class='comment'>--</span>
-<a name="line-80"></a><span class='comment'>-- attribute a_proxy    ("proxy")    for proxy tob be used in http access</span>
-<a name="line-81"></a>
-<a name="line-82"></a><a name="getXmlContents'"></a><span class='definition'>getXmlContents'</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-83"></a><span class='definition'>getXmlContents'</span> <span class='varid'>parseEncodingSpec</span>
-<a name="line-84"></a>    <span class='keyglyph'>=</span> <span class='varid'>getContent'</span>
-<a name="line-85"></a>      <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>
-<a name="line-86"></a>      <span class='keyword'>where</span>
-<a name="line-87"></a>      <span class='varid'>getContent'</span> <span class='varid'>t'</span>
-<a name="line-88"></a>	  <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_ok</span> <span class='str'>"getXmlContents"</span><span class='layout'>)</span>
-<a name="line-89"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-90"></a>	      <span class='varid'>getUrlContents</span>
-<a name="line-91"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-92"></a>	      <span class='varid'>liftF</span> <span class='varid'>parseEncodingSpec</span>
-<a name="line-93"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-94"></a>	      <span class='varid'>guessDocEncoding</span>
-<a name="line-95"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-96"></a>	      <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"getXmlContents: content read and decoded from "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>input'</span><span class='layout'>)</span>
-<a name="line-97"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-98"></a>	      <span class='varid'>traceTree</span>
-<a name="line-99"></a>	      <span class='varop'>.&gt;&gt;</span>
-<a name="line-100"></a>	      <span class='varid'>traceSource</span>
-<a name="line-101"></a>	    <span class='layout'>)</span> <span class='varid'>t'</span>
-<a name="line-102"></a>	    <span class='keyword'>where</span>
-<a name="line-103"></a>	    <span class='varid'>input'</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>t'</span>
-<a name="line-104"></a>
-<a name="line-105"></a><span class='comment'>-- |</span>
-<a name="line-106"></a><span class='comment'>-- filter for reading the content of a XML document</span>
-<a name="line-107"></a><span class='comment'>--</span>
-<a name="line-108"></a><span class='comment'>-- input is a root node with the source as an attibute</span>
-<a name="line-109"></a><span class='comment'>-- the text is read, the encoding scheme is parsed and selected</span>
-<a name="line-110"></a><span class='comment'>-- and the input is translated into the internal UTF-8 string representation</span>
-<a name="line-111"></a>
-<a name="line-112"></a><a name="getXmlContents"></a><span class='definition'>getXmlContents</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-113"></a><span class='definition'>getXmlContents</span>
-<a name="line-114"></a>    <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlDocEncodingSpec</span>
-<a name="line-115"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-116"></a>      <span class='varid'>setBaseURIFilter</span>
-<a name="line-117"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-118"></a>      <span class='varid'>setStandAloneFilter</span>
-<a name="line-119"></a>
-<a name="line-120"></a><span class='comment'>-- |</span>
-<a name="line-121"></a><span class='comment'>-- filter for reading the content of an external XML entity</span>
-<a name="line-122"></a><span class='comment'>--</span>
-<a name="line-123"></a><span class='comment'>--</span>
-<a name="line-124"></a><span class='comment'>-- see also : 'getXmlContents'</span>
-<a name="line-125"></a>
-<a name="line-126"></a><a name="getXmlEntityContents"></a><span class='definition'>getXmlEntityContents</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-127"></a><span class='definition'>getXmlEntityContents</span>
-<a name="line-128"></a>    <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlEntityEncodingSpec</span>
-<a name="line-129"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-130"></a>      <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>processChildren</span> <span class='varid'>removeEncodingSpec</span><span class='layout'>)</span>	<span class='comment'>-- remove encoding spec, it's not part of the entity value</span>
-<a name="line-131"></a>      <span class='varop'>.&gt;&gt;</span> 
-<a name="line-132"></a>      <span class='varid'>setBaseURIFilter</span>
-<a name="line-133"></a>
-<a name="line-134"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-135"></a>
-<a name="line-136"></a><a name="setBaseURIFilter"></a><span class='definition'>setBaseURIFilter</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-137"></a><span class='definition'>setBaseURIFilter</span>
-<a name="line-138"></a>    <span class='keyglyph'>=</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>setBaseURI</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>transferURI</span> <span class='varid'>t</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-139"></a>      <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>
-<a name="line-140"></a>
-<a name="line-141"></a><span class='comment'>-- |</span>
-<a name="line-142"></a><span class='comment'>-- filter command for saving and restoring</span>
-<a name="line-143"></a><span class='comment'>-- the base URI</span>
-<a name="line-144"></a><span class='comment'>--</span>
-<a name="line-145"></a><span class='comment'>--    * 1.parameter f :  the filter that possible changes the base URI</span>
-<a name="line-146"></a><span class='comment'>--</span>
-<a name="line-147"></a><span class='comment'>--</span>
-<a name="line-148"></a><span class='comment'>--    - returns : a filter with the same effect as f, that restores the base URI after application of f</span>
-<a name="line-149"></a>
-<a name="line-150"></a><a name="runInLocalURIContext"></a><span class='definition'>runInLocalURIContext</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-151"></a><span class='definition'>runInLocalURIContext</span> <span class='varid'>f</span> <span class='varid'>t</span>
-<a name="line-152"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-153"></a>      <span class='varid'>oldContext</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getBaseURI</span>
-<a name="line-154"></a>      <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"runInLocalURIContext: save base URI "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>oldContext</span><span class='layout'>)</span>
-<a name="line-155"></a>      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>f</span> <span class='varid'>t</span>
-<a name="line-156"></a>      <span class='varid'>setBaseURI</span> <span class='varid'>oldContext</span>
-<a name="line-157"></a>      <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"runInLocalURIContext: restore base URI "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>oldContext</span><span class='layout'>)</span>
-<a name="line-158"></a>      <span class='varid'>return</span> <span class='varid'>res</span>
-<a name="line-159"></a>
-<a name="line-160"></a><span class='comment'>-- |</span>
-<a name="line-161"></a><span class='comment'>-- filter command for running an action in a new URI context</span>
-<a name="line-162"></a>
-<a name="line-163"></a><a name="runInNewURIContext"></a><span class='definition'>runInNewURIContext</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-164"></a><span class='definition'>runInNewURIContext</span> <span class='varid'>uri</span> <span class='varid'>f</span>
-<a name="line-165"></a>    <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>uri</span>
-<a name="line-166"></a>	<span class='keyglyph'>=</span> <span class='varid'>f</span>
-<a name="line-167"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-168"></a>	<span class='keyglyph'>=</span> <span class='varid'>runInLocalURIContext</span>
-<a name="line-169"></a>	  <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span> <span class='keyword'>do</span>
-<a name="line-170"></a>		     <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"runInNewURIContext: new base URI "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span>
-<a name="line-171"></a>		     <span class='varid'>setBaseURI</span> <span class='varid'>uri</span>
-<a name="line-172"></a>		     <span class='varid'>f</span> <span class='varid'>t</span>
-<a name="line-173"></a>		   <span class='layout'>)</span>
-<a name="line-174"></a>	  <span class='layout'>)</span>
-<a name="line-175"></a>
-<a name="line-176"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-177"></a><span class='comment'>-- |</span>
-<a name="line-178"></a><span class='comment'>-- guessEncoding uses encoding attribute and content</span>
-<a name="line-179"></a><span class='comment'>-- to determine the encoding scheme.</span>
-<a name="line-180"></a><span class='comment'>--</span>
-<a name="line-181"></a><span class='comment'>-- it's assumed that an encoding spec has been tried to parse before guessing the encoding.</span>
-<a name="line-182"></a><span class='comment'>--</span>
-<a name="line-183"></a><span class='comment'>-- UTF-8 is the default encoding</span>
-<a name="line-184"></a><span class='comment'>--</span>
-<a name="line-185"></a><span class='comment'>-- other supported encodings are ISO-8859-1 (also known as ISO-Latin-1),</span>
-<a name="line-186"></a><span class='comment'>-- US-ASCII, UTF-16 or ISO-10646-UCS-2, UTF-16BE, UTF-16LE</span>
-<a name="line-187"></a>
-<a name="line-188"></a><a name="guessDocEncoding"></a><span class='definition'>guessDocEncoding</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-189"></a><span class='definition'>guessDocEncoding</span>
-<a name="line-190"></a>    <span class='keyglyph'>=</span> <span class='varid'>addDocEncoding</span>
-<a name="line-191"></a>      <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>
-<a name="line-192"></a>    <span class='keyword'>where</span>
-<a name="line-193"></a>    <span class='varid'>addDocEncoding</span> <span class='varid'>n'</span>
-<a name="line-194"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-195"></a>	  <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"guessDocEncoding: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>guess</span><span class='layout'>)</span>
-<a name="line-196"></a>	  <span class='layout'>(</span> <span class='varid'>encFilter</span> <span class='layout'>(</span><span class='varid'>getDecodingFct</span> <span class='varid'>guess</span><span class='layout'>)</span>
-<a name="line-197"></a>	    <span class='varop'>.&gt;&gt;</span>
-<a name="line-198"></a>	    <span class='varid'>issueError</span>
-<a name="line-199"></a>	    <span class='varop'>.&gt;&gt;</span>
-<a name="line-200"></a>	    <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addAttr</span> <span class='varid'>transferEncoding</span> <span class='varid'>guess</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='varid'>n'</span>
-<a name="line-201"></a>	  <span class='keyword'>where</span>
-<a name="line-202"></a>	  <span class='varid'>guess</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span>
-<a name="line-203"></a>	  <span class='varid'>guess</span>	<span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span>
-<a name="line-204"></a>		  <span class='varop'>$</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>guessEncoding</span> <span class='varop'>.</span> <span class='varid'>showXText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span> <span class='varid'>n'</span>
-<a name="line-205"></a>		    <span class='layout'>,</span> <span class='varid'>valueOf</span> <span class='varid'>transferEncoding</span> <span class='varid'>n'</span>
-<a name="line-206"></a>		    <span class='layout'>,</span> <span class='varid'>valueOf</span> <span class='varid'>a_encoding</span> <span class='varid'>n'</span>
-<a name="line-207"></a>		    <span class='layout'>,</span> <span class='varid'>utf8</span>
-<a name="line-208"></a>		    <span class='keyglyph'>]</span>
-<a name="line-209"></a>	  <span class='varid'>encFilter</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>fct</span><span class='layout'>)</span>
-<a name="line-210"></a>	      <span class='keyglyph'>=</span> <span class='varid'>decodeDoc</span> <span class='varid'>fct</span>
-<a name="line-211"></a>
-<a name="line-212"></a>	  <span class='varid'>encFilter</span> <span class='conid'>Nothing</span>
-<a name="line-213"></a>	      <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>guess</span><span class='layout'>)</span>
-<a name="line-214"></a>
-<a name="line-215"></a>	  <span class='varid'>decodeDoc</span> <span class='varid'>df</span> <span class='varid'>n''</span>
-<a name="line-216"></a>	      <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>errs</span>	<span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='layout'>(</span><span class='varid'>normalizeNL</span> <span class='varid'>res</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n''</span>
-<a name="line-217"></a>	      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='str'>""</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-218"></a>				    <span class='varop'>.&gt;&gt;</span>
-<a name="line-219"></a>				    <span class='layout'>(</span> <span class='varid'>issueDecodingErrs</span>
-<a name="line-220"></a>				      <span class='varop'>+++&gt;&gt;</span>
-<a name="line-221"></a>				      <span class='varid'>addFatal</span> <span class='str'>"decoding errors detected"</span>
-<a name="line-222"></a>				    <span class='layout'>)</span>
-<a name="line-223"></a>				  <span class='layout'>)</span> <span class='varid'>n''</span>
-<a name="line-224"></a>	      <span class='keyword'>where</span>
-<a name="line-225"></a>	      <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getChildren</span> <span class='varop'>$</span> <span class='varid'>n''</span>
-<a name="line-226"></a>	      <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>errs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>df</span> <span class='varid'>str</span>
-<a name="line-227"></a>	      <span class='varid'>issueDecodingErrs</span> <span class='keyglyph'>=</span> <span class='varid'>catM</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>issueErr</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>guess</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" encoding error"</span> <span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>errs</span>
-<a name="line-228"></a>
-<a name="line-229"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-230"></a>
-<a name="line-231"></a><a name="getDefaultURI"></a><span class='definition'>getDefaultURI</span>	<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>
-<a name="line-232"></a><span class='definition'>getDefaultURI</span>
-<a name="line-233"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-234"></a>      <span class='varid'>uri</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParam</span> <span class='varid'>transferDefaultURI</span>
-<a name="line-235"></a>      <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>uri</span>
-<a name="line-236"></a>	 <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-237"></a>	      <span class='varid'>setDefaultURI</span>
-<a name="line-238"></a>	      <span class='varid'>getDefaultURI</span>
-<a name="line-239"></a>	 <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>uri</span>
-<a name="line-240"></a>
-<a name="line-241"></a><span class='comment'>-- |</span>
-<a name="line-242"></a><span class='comment'>-- set the base URI, all other URIs are handled relative to this base URI</span>
-<a name="line-243"></a><span class='comment'>--</span>
-<a name="line-244"></a><span class='comment'>-- the default base URI is @file:\/\/\/\&lt;current-working-dir\&gt;\/@</span>
-<a name="line-245"></a><span class='comment'>--</span>
-<a name="line-246"></a><span class='comment'>-- see also : 'getBaseURI'</span>
-<a name="line-247"></a>
-<a name="line-248"></a><a name="setBaseURI"></a><span class='definition'>setBaseURI</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>
-<a name="line-249"></a><span class='definition'>setBaseURI</span> <span class='varid'>str</span>
-<a name="line-250"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-251"></a>      <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"setBaseURI: new base URI: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>str</span><span class='layout'>)</span>
-<a name="line-252"></a>      <span class='varid'>setSysParam</span> <span class='varid'>transferURI</span> <span class='varid'>str</span>
-<a name="line-253"></a>
-<a name="line-254"></a><span class='comment'>-- |</span>
-<a name="line-255"></a><span class='comment'>-- read the current base URI</span>
-<a name="line-256"></a><span class='comment'>--</span>
-<a name="line-257"></a><span class='comment'>-- see also : 'setBaseURI'</span>
-<a name="line-258"></a>
-<a name="line-259"></a><a name="getBaseURI"></a><span class='definition'>getBaseURI</span>	<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>
-<a name="line-260"></a><span class='definition'>getBaseURI</span>
-<a name="line-261"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-262"></a>      <span class='varid'>uri</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParam</span> <span class='varid'>transferURI</span>
-<a name="line-263"></a>      <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>uri</span>
-<a name="line-264"></a>	 <span class='keyword'>then</span> <span class='keyword'>do</span>
-<a name="line-265"></a>	      <span class='varid'>res</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getDefaultURI</span>
-<a name="line-266"></a>	      <span class='varid'>setBaseURI</span> <span class='varid'>res</span>
-<a name="line-267"></a>	      <span class='varid'>getBaseURI</span>
-<a name="line-268"></a>	 <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>uri</span>
-<a name="line-269"></a>
-<a name="line-270"></a><span class='comment'>-- |</span>
-<a name="line-271"></a><span class='comment'>-- transform an URI into an absolut URI using the current base URI</span>
-<a name="line-272"></a><span class='comment'>--</span>
-<a name="line-273"></a><span class='comment'>--</span>
-<a name="line-274"></a><span class='comment'>--    * 1.parameter uri :  the URI as string</span>
-<a name="line-275"></a><span class='comment'>--</span>
-<a name="line-276"></a><span class='comment'>--</span>
-<a name="line-277"></a><span class='comment'>--    - returns : the absolut URI as string or \"\" in case of an error</span>
-<a name="line-278"></a>
-<a name="line-279"></a><a name="getAbsolutURI"></a><span class='definition'>getAbsolutURI</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>
-<a name="line-280"></a><span class='definition'>getAbsolutURI</span> <span class='varid'>uri</span>
-<a name="line-281"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-282"></a>      <span class='varid'>baseUri</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getBaseURI</span>
-<a name="line-283"></a>      <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>expandURI</span> <span class='varid'>uri</span> <span class='varid'>baseUri</span>
-<a name="line-284"></a>
-<a name="line-285"></a><a name="expandURI"></a><span class='definition'>expandURI</span>	<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-286"></a><span class='definition'>expandURI</span> <span class='varid'>uri</span> <span class='varid'>base</span>
-<a name="line-287"></a>    <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>$</span> <span class='varid'>expand</span>
-<a name="line-288"></a>    <span class='keyword'>where</span>
-<a name="line-289"></a>    <span class='varid'>expand</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-290"></a>	     <span class='varid'>base'</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>base</span>
-<a name="line-291"></a>	     <span class='varid'>uri'</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>
-<a name="line-292"></a>	     <span class='varid'>abs'</span>  <span class='keyglyph'>&lt;-</span> <span class='varid'>relativeTo</span> <span class='varid'>uri'</span> <span class='varid'>base'</span>
-<a name="line-293"></a>	     <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>show</span> <span class='varid'>abs'</span>
-<a name="line-294"></a>
-<a name="line-295"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-296"></a>
-<a name="line-297"></a><a name="setStandAloneFilter"></a><span class='definition'>setStandAloneFilter</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-298"></a><span class='definition'>setStandAloneFilter</span>
-<a name="line-299"></a>    <span class='keyglyph'>=</span> <span class='varid'>performAction</span> <span class='varid'>setStandAlone</span>
-<a name="line-300"></a>      <span class='keyword'>where</span>
-<a name="line-301"></a>      <span class='varid'>setStandAlone</span> <span class='varid'>t</span>
-<a name="line-302"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-303"></a>	    <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>standalone</span>
-<a name="line-304"></a>	       <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>()</span>
-<a name="line-305"></a>	       <span class='keyword'>else</span> <span class='keyword'>do</span>
-<a name="line-306"></a>		    <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"setStandAloneFilter: standalone="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>standaloneVal</span><span class='layout'>)</span>
-<a name="line-307"></a>		    <span class='varid'>setSysParam</span> <span class='varid'>a_standalone</span> <span class='varid'>standaloneVal</span>
-<a name="line-308"></a>	    <span class='keyword'>where</span>
-<a name="line-309"></a>	    <span class='varid'>standalone</span>	<span class='keyglyph'>=</span> <span class='varid'>getValue</span> <span class='varid'>a_standalone</span> <span class='varid'>t</span>
-<a name="line-310"></a>	    <span class='varid'>standaloneVal</span>	<span class='keyglyph'>=</span> <span class='varid'>showXText</span> <span class='varid'>standalone</span>
-<a name="line-311"></a>
-<a name="line-312"></a><span class='comment'>-- |</span>
-<a name="line-313"></a><span class='comment'>-- predicate for testing the standalone document attribute</span>
-<a name="line-314"></a>
-<a name="line-315"></a><a name="isStandaloneDocument"></a><span class='definition'>isStandaloneDocument</span>	<span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>Bool</span>
-<a name="line-316"></a><span class='definition'>isStandaloneDocument</span>
-<a name="line-317"></a>    <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-318"></a>      <span class='varid'>val</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_standalone</span>
-<a name="line-319"></a>      <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>val</span> <span class='varop'>==</span> <span class='str'>"yes"</span><span class='layout'>)</span>
-<a name="line-320"></a>
-<a name="line-321"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-322"></a>
-<a name="line-323"></a><span class='comment'>-- |</span>
-<a name="line-324"></a><span class='comment'>-- the hard io operations</span>
-<a name="line-325"></a><span class='comment'>--</span>
-<a name="line-326"></a><span class='comment'>-- for reading a file or accessing a document via http</span>
-<a name="line-327"></a><span class='comment'>-- input must be a root node with a @source@ attribute specifying the URI</span>
-<a name="line-328"></a>
-<a name="line-329"></a><a name="getUrlContents"></a><span class='definition'>getUrlContents</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>
-<a name="line-330"></a><span class='definition'>getUrlContents</span>
-<a name="line-331"></a>    <span class='keyglyph'>=</span>  <span class='varid'>getCont</span>
-<a name="line-332"></a>      <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>
-<a name="line-333"></a>    <span class='keyword'>where</span>
-<a name="line-334"></a>    <span class='varid'>getCont</span> <span class='varid'>n'</span>
-<a name="line-335"></a>	<span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-336"></a>	  <span class='varid'>trace</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"getUrlContent: reading "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span>
-<a name="line-337"></a>	  <span class='varid'>uri</span> <span class='keyglyph'>&lt;-</span> <span class='varid'>getAbsolutURI</span> <span class='varid'>src</span>
-<a name="line-338"></a>	  <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>uri</span>
-<a name="line-339"></a>	     <span class='keyword'>then</span> <span class='varid'>urlErr</span> <span class='layout'>(</span> <span class='str'>"illegal URI for input: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='layout'>)</span>
-<a name="line-340"></a>	     <span class='keyword'>else</span> <span class='keyword'>let</span>
-<a name="line-341"></a>		  <span class='varid'>uri'</span>     <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>
-<a name="line-342"></a>		  <span class='varid'>proto</span>    <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varop'>.</span> <span class='varid'>uriScheme</span> <span class='varop'>$</span> <span class='varid'>uri'</span>
-<a name="line-343"></a>		  <span class='varid'>handler</span>  <span class='keyglyph'>=</span> <span class='varid'>getProtocolHandler</span> <span class='varid'>proto</span>
-<a name="line-344"></a>		  <span class='keyword'>in</span>
-<a name="line-345"></a>		  <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addAttr</span> <span class='varid'>transferProtocol</span> <span class='varid'>proto</span>
-<a name="line-346"></a>			   <span class='varop'>.&gt;</span>
-<a name="line-347"></a>			   <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='varid'>uri</span>
-<a name="line-348"></a>			  <span class='layout'>)</span>
-<a name="line-349"></a>		    <span class='varop'>.&gt;&gt;</span>
-<a name="line-350"></a>		    <span class='varid'>handler</span> <span class='varid'>uri'</span>
-<a name="line-351"></a>		  <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>
-<a name="line-352"></a>	<span class='keyword'>where</span>
-<a name="line-353"></a>	<span class='varid'>src</span>        <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>n'</span>
-<a name="line-354"></a>	<span class='varid'>urlErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='varid'>msg</span> <span class='varid'>n'</span>
-<a name="line-355"></a>
-<a name="line-356"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-357"></a>
-<a name="line-358"></a><span class='comment'>-- |</span>
-<a name="line-359"></a><span class='comment'>-- compute the length of the data for a document read previously</span>
-<a name="line-360"></a><span class='comment'>-- by a call of 'getUrlContents. The result is stored as an attribute</span>
-<a name="line-361"></a><span class='comment'>-- value in the document root node. the attribute name is 'a_contentLength'</span>
-<a name="line-362"></a>
-<a name="line-363"></a><a name="getContentLength"></a><span class='definition'>getContentLength</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-364"></a><span class='definition'>getContentLength</span>
-<a name="line-365"></a>    <span class='keyglyph'>=</span> <span class='varid'>addAttrl</span> <span class='varid'>contentLengthAttr</span>
-<a name="line-366"></a>      <span class='varop'>`when`</span> <span class='varid'>isRoot</span>
-<a name="line-367"></a>      <span class='keyword'>where</span>
-<a name="line-368"></a>      <span class='varid'>http_contentLength</span>	<span class='keyglyph'>=</span> <span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='str'>"Content-Length"</span>
-<a name="line-369"></a>
-<a name="line-370"></a>      <span class='varid'>contentLengthAttr</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-371"></a>      <span class='varid'>contentLengthAttr</span> <span class='varid'>t</span>
-<a name="line-372"></a>	  <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>hasAttr</span> <span class='varid'>a_contentLength</span>
-<a name="line-373"></a>		     <span class='conop'>:-&gt;</span> <span class='varid'>none</span>
-<a name="line-374"></a>		   <span class='layout'>,</span> <span class='varid'>hasAttr</span> <span class='varid'>http_contentLength</span>
-<a name="line-375"></a>		     <span class='conop'>:-&gt;</span> <span class='varid'>mkXAttr</span> <span class='varid'>a_contentLength</span> <span class='layout'>(</span><span class='varid'>getValue</span> <span class='varid'>http_contentLength</span><span class='layout'>)</span>
-<a name="line-376"></a>		   <span class='layout'>,</span> <span class='varid'>this</span>
-<a name="line-377"></a>                     <span class='conop'>:-&gt;</span> <span class='varid'>mkXAttr</span> <span class='varid'>a_contentLength</span> <span class='varid'>getLength</span>
-<a name="line-378"></a>		   <span class='keyglyph'>]</span> <span class='varid'>t</span>
-<a name="line-379"></a>
-<a name="line-380"></a>      <span class='varid'>getLength</span>			<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-381"></a>      <span class='varid'>getLength</span> <span class='varid'>t</span>
-<a name="line-382"></a>	  <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>length</span> <span class='varop'>.</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getChildren</span> <span class='varop'>$</span> <span class='varid'>t</span><span class='layout'>)</span>
-<a name="line-383"></a>
-<a name="line-384"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Parser.html b/doc/hdoc/src/Text-XML-HXT-Parser.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Parser.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- Simple parse functions.</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- Version : $Id: Parser.hs,v 1.2 2006/11/09 20:27:42 hxml Exp $</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>--</span>
-<a name="line-7"></a><span class='comment'>-- the "main" building blocks for an application.</span>
-<a name="line-8"></a><span class='comment'>-- this module exports all important functions for parsing, validating and transforming XML.</span>
-<a name="line-9"></a><span class='comment'>-- it also exports all basic datatypes and functions of the toolbox.</span>
-<a name="line-10"></a><span class='comment'>--</span>
-<a name="line-11"></a>
-<a name="line-12"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span>
-<a name="line-13"></a>    <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span>
-<a name="line-14"></a>
-<a name="line-15"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>
-<a name="line-16"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>
-<a name="line-17"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>
-<a name="line-18"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-19"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>
-<a name="line-20"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>MainFunctions</span>
-<a name="line-21"></a>
-<a name="line-22"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>
-<a name="line-23"></a>    <span class='layout'>)</span>
-<a name="line-24"></a><span class='keyword'>where</span>
-<a name="line-25"></a>
-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>
-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>MainFunctions</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-38"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-AttributeValueValidation.html b/doc/hdoc/src/Text-XML-HXT-Validator-AttributeValueValidation.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-AttributeValueValidation.html
+++ /dev/null
@@ -1,368 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating attributes.</span>
-<a name="line-3"></a>
-<a name="line-4"></a><span class='comment'>-- The main functions are:</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>--  - Check if the attribute value meets the lexical constraints of its type</span>
-<a name="line-7"></a><span class='comment'>--</span>
-<a name="line-8"></a><span class='comment'>--  - Normalization of an attribute value</span>
-<a name="line-9"></a><span class='comment'>--</span>
-<a name="line-10"></a>
-<a name="line-11"></a><span class='comment'>-- Special namings in source code:</span>
-<a name="line-12"></a><span class='comment'>--</span>
-<a name="line-13"></a><span class='comment'>--  - nd - XDTD node</span>
-<a name="line-14"></a><span class='comment'>--</span>
-<a name="line-15"></a><span class='comment'>--  - n  - XTag node</span>
-<a name="line-16"></a><span class='comment'>--</span>
-<a name="line-17"></a><span class='comment'>-- Version : $Id: AttributeValueValidation.hs,v 1.1 2004/09/02 19:12:02 hxml Exp $</span>
-<a name="line-18"></a><span class='comment'>--</span>
-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>
-<a name="line-20"></a>    <span class='layout'>(</span> <span class='varid'>checkAttributeValue</span>
-<a name="line-21"></a>    <span class='layout'>,</span> <span class='varid'>normalizeAttributeValue</span>
-<a name="line-22"></a>    <span class='layout'>)</span>
-<a name="line-23"></a><span class='keyword'>where</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>
-<a name="line-26"></a>    <span class='layout'>(</span> <span class='varid'>parseNMToken</span>
-<a name="line-27"></a>    <span class='layout'>,</span> <span class='varid'>parseName</span>
-<a name="line-28"></a>    <span class='layout'>)</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='comment'>-- |</span>
-<a name="line-34"></a><span class='comment'>-- Checks if the attribute value meets the lexical constraints of its type.</span>
-<a name="line-35"></a><span class='comment'>--</span>
-<a name="line-36"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-37"></a><span class='comment'>--</span>
-<a name="line-38"></a><span class='comment'>--    - 2.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-39"></a><span class='comment'>--</span>
-<a name="line-40"></a><span class='comment'>--    - returns : a function which takes an element (XTag or XDTD ATTLIST),</span>
-<a name="line-41"></a><span class='comment'>--                    checks if the attribute value meets the lexical constraints</span>
-<a name="line-42"></a><span class='comment'>--                    of its type and returns a list of errors</span>
-<a name="line-43"></a>
-<a name="line-44"></a><a name="checkAttributeValue"></a><span class='definition'>checkAttributeValue</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-45"></a><span class='definition'>checkAttributeValue</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='sel'>_al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-46"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkValue</span> <span class='varid'>attrType</span> <span class='varid'>dtdPart</span> <span class='varid'>normalizedVal</span> <span class='varid'>attrDecl</span> <span class='varid'>n</span>
-<a name="line-47"></a>      <span class='keyword'>where</span>
-<a name="line-48"></a>      <span class='varid'>attrType</span>      <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>
-<a name="line-49"></a>      <span class='varid'>attrValue</span>     <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-50"></a>      <span class='varid'>normalizedVal</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-51"></a>
-<a name="line-52"></a><span class='definition'>checkAttributeValue</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-53"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkValue</span> <span class='varid'>attrType</span> <span class='varid'>dtdPart</span> <span class='varid'>normalizedVal</span> <span class='varid'>attrDecl</span> <span class='varid'>n</span>
-<a name="line-54"></a>      <span class='keyword'>where</span>
-<a name="line-55"></a>      <span class='varid'>attrType</span>      <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>
-<a name="line-56"></a>      <span class='varid'>attrValue</span>     <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_default</span> <span class='varid'>al'</span>
-<a name="line-57"></a>      <span class='varid'>normalizedVal</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-58"></a>
-<a name="line-59"></a><span class='definition'>checkAttributeValue</span> <span class='keyword'>_</span> <span class='varid'>nd</span> <span class='varid'>n</span>
-<a name="line-60"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkAttributeValue: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-61"></a>
-<a name="line-62"></a>
-<a name="line-63"></a><span class='comment'>-- |</span>
-<a name="line-64"></a><span class='comment'>-- Dispatches the attibute check by the attribute type.</span>
-<a name="line-65"></a><span class='comment'>--</span>
-<a name="line-66"></a><span class='comment'>--    * 1.parameter typ :  the attribute type</span>
-<a name="line-67"></a><span class='comment'>--</span>
-<a name="line-68"></a><span class='comment'>--    - 2.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-69"></a><span class='comment'>--</span>
-<a name="line-70"></a><span class='comment'>--    - 3.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-71"></a><span class='comment'>--</span>
-<a name="line-72"></a><span class='comment'>--    - 4.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-73"></a><span class='comment'>--</span>
-<a name="line-74"></a><span class='comment'>--    - returns : a functions which takes an element (XTag or XDTD ATTLIST),</span>
-<a name="line-75"></a><span class='comment'>--                        checks if the attribute value meets the lexical constraints</span>
-<a name="line-76"></a><span class='comment'>--                        of its type and returns a list of errors</span>
-<a name="line-77"></a>
-<a name="line-78"></a><a name="checkValue"></a><span class='definition'>checkValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-79"></a><span class='definition'>checkValue</span> <span class='varid'>typ</span> <span class='varid'>dtdPart</span> <span class='varid'>attrValue</span> <span class='varid'>attrDecl</span>
-<a name="line-80"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_cdata</span>	<span class='keyglyph'>=</span> <span class='varid'>none</span>
-<a name="line-81"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_enumeration</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueEnumeration</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-82"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_entity</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueEntity</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-83"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_entities</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueEntities</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-84"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_id</span>		<span class='keyglyph'>=</span> <span class='varid'>checkValueId</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-85"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_idref</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueIdref</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-86"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_idrefs</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueIdrefs</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-87"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_nmtoken</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueNmtoken</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-88"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_nmtokens</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueNmtokens</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-89"></a>	<span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_notation</span>	<span class='keyglyph'>=</span> <span class='varid'>checkValueEnumeration</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-90"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"Attribute type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>typ</span> <span class='varop'>++</span> <span class='str'>" unknown."</span><span class='layout'>)</span>
-<a name="line-91"></a>
-<a name="line-92"></a><span class='comment'>-- |</span>
-<a name="line-93"></a><span class='comment'>-- Checks the value of Enumeration attribute types. (3.3.1 \/ p.27 in Spec)</span>
-<a name="line-94"></a><span class='comment'>--</span>
-<a name="line-95"></a><span class='comment'>--    * 1.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-96"></a><span class='comment'>--</span>
-<a name="line-97"></a><span class='comment'>--    - 2.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-98"></a>
-<a name="line-99"></a><a name="checkValueEnumeration"></a><span class='definition'>checkValueEnumeration</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-100"></a><span class='definition'>checkValueEnumeration</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-101"></a>    <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>enumVals</span>
-<a name="line-102"></a>      <span class='keyword'>then</span> <span class='varid'>none</span>
-<a name="line-103"></a>      <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-104"></a>                <span class='str'>" must have a value from list "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enumVals</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span>
-<a name="line-105"></a>      <span class='keyword'>where</span>
-<a name="line-106"></a>      <span class='varid'>enumVals</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>
-<a name="line-107"></a>      <span class='varid'>enumVals</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getEnumVal</span><span class='layout'>)</span> <span class='varid'>cs</span>
-<a name="line-108"></a>
-<a name="line-109"></a>      <span class='varid'>getEnumVal</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-110"></a>      <span class='varid'>getEnumVal</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>
-<a name="line-111"></a>      <span class='varid'>getEnumVal</span> <span class='keyword'>_</span>                         <span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-112"></a>
-<a name="line-113"></a><span class='definition'>checkValueEnumeration</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-114"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueEnumeration: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-115"></a>
-<a name="line-116"></a>
-<a name="line-117"></a><span class='comment'>-- |</span>
-<a name="line-118"></a><span class='comment'>-- Checks the value of ENTITY attribute types. (3.3.1 \/ p.26 in Spec)</span>
-<a name="line-119"></a><span class='comment'>--</span>
-<a name="line-120"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node, to get the</span>
-<a name="line-121"></a><span class='comment'>--                    unparsed entity declarations</span>
-<a name="line-122"></a><span class='comment'>--</span>
-<a name="line-123"></a><span class='comment'>--    - 2.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-124"></a><span class='comment'>--</span>
-<a name="line-125"></a><span class='comment'>--    - 3.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-126"></a>
-<a name="line-127"></a><a name="checkValueEntity"></a><span class='definition'>checkValueEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-128"></a><span class='definition'>checkValueEntity</span> <span class='varid'>dtdPart</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-129"></a>    <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>upEntities</span>
-<a name="line-130"></a>      <span class='keyword'>then</span> <span class='varid'>none</span>
-<a name="line-131"></a>      <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span> <span class='str'>" of attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-132"></a>                <span class='str'>" for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is not unparsed. "</span> <span class='varop'>++</span>
-<a name="line-133"></a>                <span class='str'>"The following unparsed entities exist: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>upEntities</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span>
-<a name="line-134"></a>      <span class='keyword'>where</span>
-<a name="line-135"></a>      <span class='varid'>upEntities</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>
-<a name="line-136"></a>      <span class='varid'>upEntities</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getEnumVal</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isUnparsedEntity</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>
-<a name="line-137"></a>
-<a name="line-138"></a>      <span class='varid'>getEnumVal</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-139"></a>      <span class='varid'>getEnumVal</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>
-<a name="line-140"></a>      <span class='varid'>getEnumVal</span> <span class='keyword'>_</span>                           <span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-141"></a>
-<a name="line-142"></a>
-<a name="line-143"></a><span class='definition'>checkValueEntity</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-144"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueEntity: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-145"></a>
-<a name="line-146"></a>
-<a name="line-147"></a><span class='comment'>-- |</span>
-<a name="line-148"></a><span class='comment'>-- Checks the value of ENTITIES attribute types. (3.3.1 \/ p.26 in Spec)</span>
-<a name="line-149"></a><span class='comment'>--</span>
-<a name="line-150"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node, to get the</span>
-<a name="line-151"></a><span class='comment'>--                    unparsed entity declarations</span>
-<a name="line-152"></a><span class='comment'>--</span>
-<a name="line-153"></a><span class='comment'>--    - 2.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-154"></a><span class='comment'>--</span>
-<a name="line-155"></a><span class='comment'>--    - 3.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-156"></a>
-<a name="line-157"></a><a name="checkValueEntities"></a><span class='definition'>checkValueEntities</span> <span class='keyglyph'>::</span><span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-158"></a><span class='definition'>checkValueEntities</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-159"></a>    <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>valueList</span>
-<a name="line-160"></a>      <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" of element "</span> <span class='varop'>++</span>
-<a name="line-161"></a>                 <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be one or more names."</span><span class='layout'>)</span>
-<a name="line-162"></a>      <span class='keyword'>else</span> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValueEntity</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>valueList</span><span class='layout'>)</span>
-<a name="line-163"></a>      <span class='keyword'>where</span>
-<a name="line-164"></a>      <span class='varid'>valueList</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>attrValue</span>
-<a name="line-165"></a>
-<a name="line-166"></a><span class='definition'>checkValueEntities</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-167"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueEntities: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-168"></a>
-<a name="line-169"></a>
-<a name="line-170"></a><span class='comment'>-- |</span>
-<a name="line-171"></a><span class='comment'>-- Checks the value of NMTOKEN attribute types. (3.3.1 \/ p.26 in Spec)</span>
-<a name="line-172"></a><span class='comment'>--</span>
-<a name="line-173"></a><span class='comment'>--    * 1.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-174"></a><span class='comment'>--</span>
-<a name="line-175"></a><span class='comment'>--    - 2.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-176"></a>
-<a name="line-177"></a><a name="checkValueNmtoken"></a><span class='definition'>checkValueNmtoken</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-178"></a><span class='definition'>checkValueNmtoken</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-179"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkNmtoken</span> <span class='varid'>parseRes</span>
-<a name="line-180"></a>      <span class='keyword'>where</span>
-<a name="line-181"></a>      <span class='varid'>parseRes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span>
-<a name="line-182"></a>      <span class='varid'>parseRes</span> <span class='keyglyph'>=</span> <span class='varid'>parseNMToken</span> <span class='str'>""</span> <span class='layout'>(</span><span class='varid'>mkXTextTree</span> <span class='varid'>attrValue</span><span class='layout'>)</span>
-<a name="line-183"></a>
-<a name="line-184"></a>      <span class='varid'>checkNmtoken</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-185"></a>      <span class='varid'>checkNmtoken</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='keyword'>_</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-186"></a>          <span class='keyglyph'>=</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute value "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span> <span class='str'>" of attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-187"></a>	         <span class='str'>" for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be a name token, "</span><span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>lines</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varop'>!!</span> <span class='num'>1</span> <span class='varop'>++</span><span class='str'>"."</span><span class='layout'>)</span>
-<a name="line-188"></a>
-<a name="line-189"></a>      <span class='varid'>checkNmtoken</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>
-<a name="line-190"></a>
-<a name="line-191"></a>
-<a name="line-192"></a><span class='definition'>checkValueNmtoken</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-193"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueNmtoken: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-194"></a>
-<a name="line-195"></a>
-<a name="line-196"></a><span class='comment'>-- |</span>
-<a name="line-197"></a><span class='comment'>-- Checks the value of NMTOKENS attribute types. (3.3.1 \/ p.26 in Spec)</span>
-<a name="line-198"></a><span class='comment'>--</span>
-<a name="line-199"></a><span class='comment'>--    * 1.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-200"></a><span class='comment'>--</span>
-<a name="line-201"></a><span class='comment'>--    - 2.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-202"></a>
-<a name="line-203"></a><a name="checkValueNmtokens"></a><span class='definition'>checkValueNmtokens</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-204"></a><span class='definition'>checkValueNmtokens</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-205"></a>    <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>valueList</span>
-<a name="line-206"></a>      <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" of element "</span> <span class='varop'>++</span>
-<a name="line-207"></a>                 <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be one or more name tokens."</span><span class='layout'>)</span>
-<a name="line-208"></a>      <span class='keyword'>else</span> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValueNmtoken</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>valueList</span><span class='layout'>)</span>
-<a name="line-209"></a>      <span class='keyword'>where</span>
-<a name="line-210"></a>      <span class='varid'>valueList</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>attrValue</span>
-<a name="line-211"></a>
-<a name="line-212"></a><span class='definition'>checkValueNmtokens</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-213"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueNmtokens: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-214"></a>
-<a name="line-215"></a>
-<a name="line-216"></a><span class='comment'>-- |</span>
-<a name="line-217"></a><span class='comment'>-- Checks the value of ID attribute types. (3.3.1 \/ p.25 in Spec)</span>
-<a name="line-218"></a><span class='comment'>--</span>
-<a name="line-219"></a><span class='comment'>--    * 1.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-220"></a><span class='comment'>--</span>
-<a name="line-221"></a><span class='comment'>--    - 2.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-222"></a>
-<a name="line-223"></a><a name="checkValueId"></a><span class='definition'>checkValueId</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-224"></a><span class='definition'>checkValueId</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-225"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkForName</span> <span class='str'>"Attribute value"</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-226"></a>
-<a name="line-227"></a>
-<a name="line-228"></a><span class='comment'>-- |</span>
-<a name="line-229"></a><span class='comment'>-- Checks the value of IDREF attribute types. (3.3.1 \/ p.26 in Spec)</span>
-<a name="line-230"></a><span class='comment'>--</span>
-<a name="line-231"></a><span class='comment'>--    * 1.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-232"></a><span class='comment'>--</span>
-<a name="line-233"></a><span class='comment'>--    - 2.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-234"></a>
-<a name="line-235"></a><a name="checkValueIdref"></a><span class='definition'>checkValueIdref</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-236"></a><span class='definition'>checkValueIdref</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-237"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkForName</span> <span class='str'>"Attribute value"</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-238"></a>
-<a name="line-239"></a>
-<a name="line-240"></a><span class='comment'>-- |</span>
-<a name="line-241"></a><span class='comment'>-- Checks the value of IDREFS attribute types. (3.3.1 \/ p.26 in Spec)</span>
-<a name="line-242"></a><span class='comment'>--</span>
-<a name="line-243"></a><span class='comment'>--    * 1.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-244"></a><span class='comment'>--</span>
-<a name="line-245"></a><span class='comment'>--    - 2.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-246"></a>
-<a name="line-247"></a><a name="checkValueIdrefs"></a><span class='definition'>checkValueIdrefs</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-248"></a><span class='definition'>checkValueIdrefs</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>
-<a name="line-249"></a>    <span class='keyglyph'>=</span> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValueIdref</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>words</span> <span class='varid'>attrValue</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-250"></a>
-<a name="line-251"></a>
-<a name="line-252"></a>
-<a name="line-253"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-<a name="line-254"></a><span class='comment'>-- General helper functions for checking attribute values</span>
-<a name="line-255"></a><span class='comment'>--</span>
-<a name="line-256"></a>
-<a name="line-257"></a><span class='comment'>-- |</span>
-<a name="line-258"></a><span class='comment'>-- Checks if the value of an attribute is a name.</span>
-<a name="line-259"></a><span class='comment'>--</span>
-<a name="line-260"></a><span class='comment'>--    * 1.parameter msg :  error message, should be "Entity" or "Attribute value"</span>
-<a name="line-261"></a><span class='comment'>--</span>
-<a name="line-262"></a><span class='comment'>--    - 2.parameter attrDecl :  the declaration of the attribute from the DTD</span>
-<a name="line-263"></a><span class='comment'>--</span>
-<a name="line-264"></a><span class='comment'>--    - 3.parameter attrValue :  the normalized attribute value to be checked</span>
-<a name="line-265"></a>
-<a name="line-266"></a><a name="checkForName"></a><span class='definition'>checkForName</span> <span class='keyglyph'>::</span>  <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-267"></a><span class='definition'>checkForName</span> <span class='varid'>msg</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-268"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkName</span> <span class='varid'>parseRes</span>
-<a name="line-269"></a>      <span class='keyword'>where</span>
-<a name="line-270"></a>      <span class='varid'>parseRes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span>
-<a name="line-271"></a>      <span class='varid'>parseRes</span> <span class='keyglyph'>=</span> <span class='varid'>parseName</span> <span class='str'>""</span> <span class='layout'>(</span><span class='varid'>mkXTextTree</span> <span class='varid'>attrValue</span><span class='layout'>)</span>
-<a name="line-272"></a>
-<a name="line-273"></a>      <span class='varid'>checkName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-274"></a>      <span class='varid'>checkName</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='keyword'>_</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-275"></a>          <span class='keyglyph'>=</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='varid'>msg</span> <span class='varop'>++</span> <span class='str'>" "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span><span class='str'>" of attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-276"></a>	    <span class='str'>" for element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" must be a name, "</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>lines</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varop'>!!</span> <span class='num'>1</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span>
-<a name="line-277"></a>
-<a name="line-278"></a>      <span class='varid'>checkName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>
-<a name="line-279"></a>
-<a name="line-280"></a>
-<a name="line-281"></a><span class='definition'>checkForName</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-282"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForName: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-283"></a>
-<a name="line-284"></a>
-<a name="line-285"></a><span class='comment'>-- |</span>
-<a name="line-286"></a><span class='comment'>-- Gets the element name from an attribute list of an XDTD ATTLIST node.</span>
-<a name="line-287"></a><span class='comment'>--</span>
-<a name="line-288"></a><span class='comment'>--    * 1.parameter tag :  the attibute list of an XDTD ATTLIST</span>
-<a name="line-289"></a><span class='comment'>--</span>
-<a name="line-290"></a><span class='comment'>--    - returns : the element name</span>
-<a name="line-291"></a>
-<a name="line-292"></a><a name="getElemName"></a><span class='definition'>getElemName</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-293"></a><span class='definition'>getElemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>
-<a name="line-294"></a>
-<a name="line-295"></a>
-<a name="line-296"></a><span class='comment'>-- |</span>
-<a name="line-297"></a><span class='comment'>-- Gets the attribute name from an attribute list of an XDTD ATTLIST node.</span>
-<a name="line-298"></a><span class='comment'>--</span>
-<a name="line-299"></a><span class='comment'>--    * 1.parameter tag :  the attibute list of an XDTD ATTLIST</span>
-<a name="line-300"></a><span class='comment'>--</span>
-<a name="line-301"></a><span class='comment'>--    - returns : the attribute name</span>
-<a name="line-302"></a>
-<a name="line-303"></a><a name="getAttrName"></a><span class='definition'>getAttrName</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-304"></a><span class='definition'>getAttrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span>
-<a name="line-305"></a>
-<a name="line-306"></a>
-<a name="line-307"></a>
-<a name="line-308"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
-<a name="line-309"></a>
-<a name="line-310"></a>
-<a name="line-311"></a><a name="normalizeAttributeValue"></a><span class='comment'>-- |</span>
-<a name="line-312"></a><span class='comment'>-- Normalizes an attribute value with respect to its type. (3.3.3 \/ p.29 in Spec)</span>
-<a name="line-313"></a><span class='comment'>--</span>
-<a name="line-314"></a><span class='comment'>--    * 1.parameter attrDecl :  the declaration of the attribute from the DTD. Expected</span>
-<a name="line-315"></a><span class='comment'>--                   is a list. If the list is empty, no declaration exists.</span>
-<a name="line-316"></a><span class='comment'>--</span>
-<a name="line-317"></a><span class='comment'>--    - 2.parameter value :  the attribute value to be normalized</span>
-<a name="line-318"></a><span class='comment'>--</span>
-<a name="line-319"></a><span class='comment'>--    - returns : the normalized value</span>
-<a name="line-320"></a><span class='comment'>--</span>
-<a name="line-321"></a><span class='definition'>normalizeAttributeValue</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-322"></a><span class='definition'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>value</span>
-<a name="line-323"></a>    <span class='keyglyph'>=</span> <span class='varid'>normalizeAttribute</span> <span class='varid'>attrType</span>
-<a name="line-324"></a>      <span class='keyword'>where</span>
-<a name="line-325"></a>      <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>
-<a name="line-326"></a>
-<a name="line-327"></a>      <span class='varid'>normalizeAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-328"></a>      <span class='varid'>normalizeAttribute</span> <span class='varid'>typ</span>
-<a name="line-329"></a>          <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_cdata</span>	<span class='keyglyph'>=</span> <span class='varid'>cdataNormalization</span> <span class='varid'>value</span>
-<a name="line-330"></a>          <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>		<span class='keyglyph'>=</span> <span class='varid'>otherNormalization</span> <span class='varid'>value</span>
-<a name="line-331"></a>
-<a name="line-332"></a>
-<a name="line-333"></a><span class='comment'>-- Attribute not declared in DTD, normalization as CDATA</span>
-<a name="line-334"></a><span class='definition'>normalizeAttributeValue</span> <span class='keyword'>_</span> <span class='varid'>value</span>
-<a name="line-335"></a>    <span class='keyglyph'>=</span> <span class='varid'>cdataNormalization</span> <span class='varid'>value</span>
-<a name="line-336"></a>
-<a name="line-337"></a>
-<a name="line-338"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-339"></a><span class='comment'>-- Helper functions for normalization</span>
-<a name="line-340"></a>
-<a name="line-341"></a>
-<a name="line-342"></a><a name="cdataNormalization"></a><span class='comment'>-- |</span>
-<a name="line-343"></a><span class='comment'>-- Normalization of CDATA attribute values.</span>
-<a name="line-344"></a><span class='comment'>-- is already done when parsing</span>
-<a name="line-345"></a><span class='comment'>-- during entity substituion for attribute values</span>
-<a name="line-346"></a><span class='definition'>cdataNormalization</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-347"></a><span class='definition'>cdataNormalization</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>
-<a name="line-348"></a>
-<a name="line-349"></a>
-<a name="line-350"></a><a name="otherNormalization"></a><span class='comment'>-- | Normalization of attribute values other than CDATA.</span>
-<a name="line-351"></a><span class='definition'>otherNormalization</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-352"></a><span class='definition'>otherNormalization</span> <span class='keyglyph'>=</span> <span class='varid'>reduceWSSequences</span> <span class='varop'>.</span> <span class='varid'>stringTrim</span> <span class='varop'>.</span> <span class='varid'>cdataNormalization</span>
-<a name="line-353"></a>
-<a name="line-354"></a><a name="reduceWSSequences"></a><span class='comment'>-- | Reduce whitespace sequences to a single whitespace.</span>
-<a name="line-355"></a><span class='definition'>reduceWSSequences</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-356"></a><span class='definition'>reduceWSSequences</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='varid'>unwords</span> <span class='layout'>(</span><span class='varid'>words</span> <span class='varid'>str</span><span class='layout'>)</span>
-<a name="line-357"></a>
-<a name="line-358"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-DTDValidation.html b/doc/hdoc/src/Text-XML-HXT-Validator-DTDValidation.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-DTDValidation.html
+++ /dev/null
@@ -1,638 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating the DTD of XML documents</span>
-<a name="line-3"></a><span class='comment'>-- represented as XmlTree.</span>
-<a name="line-4"></a>
-<a name="line-5"></a><span class='comment'>-- Unlike other popular XML validation tools the validation process returns</span>
-<a name="line-6"></a><span class='comment'>-- a list of errors instead of aborting after the first error was found.</span>
-<a name="line-7"></a>
-<a name="line-8"></a>
-<a name="line-9"></a><span class='comment'>-- Unlike validation of the document, the DTD branch is traversed four times:</span>
-<a name="line-10"></a><span class='comment'>--</span>
-<a name="line-11"></a><span class='comment'>--  - Validation of Notations</span>
-<a name="line-12"></a><span class='comment'>--</span>
-<a name="line-13"></a><span class='comment'>--  - Validation of Unparsed Entities</span>
-<a name="line-14"></a><span class='comment'>--</span>
-<a name="line-15"></a><span class='comment'>--  - Validation of Element declarations</span>
-<a name="line-16"></a><span class='comment'>--</span>
-<a name="line-17"></a><span class='comment'>--  - Validation of Attribute declarations</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='comment'>-- Special namings in source code:</span>
-<a name="line-20"></a><span class='comment'>--</span>
-<a name="line-21"></a><span class='comment'>--  - nd - XDTD node</span>
-<a name="line-22"></a><span class='comment'>--</span>
-<a name="line-23"></a><span class='comment'>-- Author : .\\artin Schmidt</span>
-<a name="line-24"></a><span class='comment'>-- Version : $Id: DTDValidation.hs,v 1.1 2004/09/02 19:12:02 hxml Exp $</span>
-<a name="line-25"></a>
-<a name="line-26"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DTDValidation</span>
-<a name="line-27"></a>    <span class='layout'>(</span> <span class='varid'>removeDoublicateDefs</span>
-<a name="line-28"></a>    <span class='layout'>,</span> <span class='varid'>validateDTD</span>
-<a name="line-29"></a>    <span class='layout'>)</span>
-<a name="line-30"></a><span class='keyword'>where</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-33"></a>
-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>
-<a name="line-35"></a>
-<a name="line-36"></a>
-<a name="line-37"></a>
-<a name="line-38"></a><span class='comment'>-- |</span>
-<a name="line-39"></a><span class='comment'>-- Validate a DTD.</span>
-<a name="line-40"></a><span class='comment'>--</span>
-<a name="line-41"></a><span class='comment'>--    - returns : a functions which takes the DTD subset of the XmlTree, checks</span>
-<a name="line-42"></a><span class='comment'>--                  if the DTD is valid and returns a list of errors</span>
-<a name="line-43"></a>
-<a name="line-44"></a><a name="validateDTD"></a><span class='definition'>validateDTD</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-45"></a><span class='definition'>validateDTD</span> <span class='varid'>dtdPart</span>
-<a name="line-46"></a>    <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "validateNotations" #-}</span> <span class='varid'>validateNotations</span> <span class='varid'>dtdPart'</span>
-<a name="line-47"></a>      <span class='varop'>++</span>
-<a name="line-48"></a>      <span class='comment'>{-# SCC "validateEntities" #-}</span> <span class='varid'>validateEntities</span> <span class='varid'>dtdPart'</span> <span class='varid'>notationNames</span>
-<a name="line-49"></a>      <span class='varop'>++</span>
-<a name="line-50"></a>      <span class='comment'>{-# SCC "validateElements" #-}</span> <span class='varid'>validateElements</span> <span class='varid'>dtdPart'</span> <span class='varid'>elemNames</span>
-<a name="line-51"></a>      <span class='varop'>++</span>
-<a name="line-52"></a>      <span class='comment'>{-# SCC "validateAttributes" #-}</span> <span class='varid'>validateAttributes</span> <span class='varid'>dtdPart'</span> <span class='varid'>elemNames</span> <span class='varid'>notationNames</span>
-<a name="line-53"></a>
-<a name="line-54"></a>      <span class='keyword'>where</span>
-<a name="line-55"></a>      <span class='varid'>dtdPart'</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>
-<a name="line-56"></a>
-<a name="line-57"></a>      <span class='varid'>notationNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>
-<a name="line-58"></a>      <span class='varid'>notationNames</span>
-<a name="line-59"></a>          <span class='keyglyph'>=</span> <span class='varid'>getXTextValues</span> <span class='layout'>(</span><span class='varid'>isNotation</span> <span class='varop'>.&gt;</span> <span class='varid'>getDTDValue</span> <span class='varid'>a_name</span> <span class='varop'>$$</span> <span class='varid'>dtdPart'</span><span class='layout'>)</span>
-<a name="line-60"></a>
-<a name="line-61"></a>      <span class='varid'>elemNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>
-<a name="line-62"></a>      <span class='varid'>elemNames</span>
-<a name="line-63"></a>          <span class='keyglyph'>=</span> <span class='varid'>getXTextValues</span> <span class='layout'>(</span><span class='varid'>isElement</span>  <span class='varop'>.&gt;</span> <span class='varid'>getDTDValue</span> <span class='varid'>a_name</span> <span class='varop'>$$</span> <span class='varid'>dtdPart'</span><span class='layout'>)</span>
-<a name="line-64"></a>
-<a name="line-65"></a>
-<a name="line-66"></a>
-<a name="line-67"></a>
-<a name="line-68"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-69"></a>
-<a name="line-70"></a><span class='comment'>-- |</span>
-<a name="line-71"></a><span class='comment'>-- Returns a list of XText values.</span>
-<a name="line-72"></a><span class='comment'>--</span>
-<a name="line-73"></a><span class='comment'>--    * 1.parameter xtextList :  a list of XText nodes</span>
-<a name="line-74"></a><span class='comment'>--</span>
-<a name="line-75"></a><span class='comment'>--    - returns : the values of the XText nodes</span>
-<a name="line-76"></a>
-<a name="line-77"></a><a name="getXTextValues"></a><span class='definition'>getXTextValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>
-<a name="line-78"></a><span class='definition'>getXTextValues</span>
-<a name="line-79"></a>  <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>showT</span>
-<a name="line-80"></a>  <span class='keyword'>where</span>
-<a name="line-81"></a>    <span class='varid'>showT</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-82"></a>	<span class='keyglyph'>|</span> <span class='varid'>isXTextNode</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>textOfXNode</span> <span class='varid'>n</span><span class='keyglyph'>]</span>
-<a name="line-83"></a>    <span class='varid'>showT</span> <span class='keyword'>_</span>             <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-84"></a>
-<a name="line-85"></a>
-<a name="line-86"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-87"></a>
-<a name="line-88"></a>
-<a name="line-89"></a><span class='comment'>-- |</span>
-<a name="line-90"></a><span class='comment'>-- Validation of Notations, checks if all notation names are unique.</span>
-<a name="line-91"></a><span class='comment'>-- Validity constraint: Unique Notation Name (4.7 \/ p.44 in Spec)</span>
-<a name="line-92"></a><span class='comment'>--</span>
-<a name="line-93"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-94"></a><span class='comment'>--</span>
-<a name="line-95"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-96"></a>
-<a name="line-97"></a><a name="validateNotations"></a><span class='definition'>validateNotations</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-98"></a><span class='definition'>validateNotations</span> <span class='varid'>dtdPart</span>
-<a name="line-99"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>notations</span> <span class='conid'>[]</span>
-<a name="line-100"></a>      <span class='keyword'>where</span>
-<a name="line-101"></a>      <span class='varid'>notations</span> <span class='keyglyph'>=</span> <span class='varid'>isNotation</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-102"></a>
-<a name="line-103"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-104"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NOTATION</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-105"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-106"></a>	    <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Notation "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" was already specified."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-107"></a>		 <span class='varop'>++</span>
-<a name="line-108"></a>		 <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-109"></a>
-<a name="line-110"></a>	    <span class='keyword'>else</span> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-111"></a>	    <span class='keyword'>where</span>
-<a name="line-112"></a>	    <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-113"></a>
-<a name="line-114"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-115"></a>
-<a name="line-116"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-117"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueNotation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-118"></a>
-<a name="line-119"></a>
-<a name="line-120"></a><span class='comment'>-- |</span>
-<a name="line-121"></a><span class='comment'>-- Validation of Entities.</span>
-<a name="line-122"></a><span class='comment'>--</span>
-<a name="line-123"></a><span class='comment'>-- 1. Issues a warning if entities are declared multiple times.</span>
-<a name="line-124"></a><span class='comment'>--</span>
-<a name="line-125"></a><span class='comment'>--    Optional warning: (4.2 \/ p.35 in Spec) </span>
-<a name="line-126"></a><span class='comment'>--</span>
-<a name="line-127"></a><span class='comment'>--</span>
-<a name="line-128"></a><span class='comment'>-- 2. Validates that a notation is declared for an unparsed entity.</span>
-<a name="line-129"></a><span class='comment'>--</span>
-<a name="line-130"></a><span class='comment'>--    Validity constraint: Notation Declared (4.2.2 \/ p.36 in Spec)</span>
-<a name="line-131"></a><span class='comment'>--</span>
-<a name="line-132"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-133"></a><span class='comment'>--</span>
-<a name="line-134"></a><span class='comment'>--    - 2.parameter notationNames :  list of all notation names declared in the DTD</span>
-<a name="line-135"></a><span class='comment'>--</span>
-<a name="line-136"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-137"></a>
-<a name="line-138"></a><a name="validateEntities"></a><span class='definition'>validateEntities</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-139"></a><span class='definition'>validateEntities</span> <span class='varid'>dtdPart</span> <span class='varid'>notationNames</span>
-<a name="line-140"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueEntity</span> <span class='varid'>entities</span> <span class='conid'>[]</span>
-<a name="line-141"></a>      <span class='varop'>++</span>
-<a name="line-142"></a>      <span class='varid'>checkNotationDecls</span> <span class='varid'>notationNames</span> <span class='varid'>upEntities</span>
-<a name="line-143"></a>
-<a name="line-144"></a>      <span class='keyword'>where</span>
-<a name="line-145"></a>      <span class='varid'>entities</span>   <span class='keyglyph'>=</span> <span class='varid'>isEntity</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-146"></a>      <span class='varid'>upEntities</span> <span class='keyglyph'>=</span> <span class='varid'>isUnparsedEntity</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-147"></a>
-<a name="line-148"></a>      <span class='comment'>-- Check if entities are declared multiple times</span>
-<a name="line-149"></a>      <span class='varid'>checkForUniqueEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-150"></a>      <span class='varid'>checkForUniqueEntity</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-151"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-152"></a>	    <span class='keyword'>then</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"Entity "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" was already specified. "</span> <span class='varop'>++</span>
-<a name="line-153"></a>	               <span class='str'>"First declaration will be used."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-154"></a>		 <span class='varop'>++</span>
-<a name="line-155"></a>		 <span class='varid'>checkForUniqueEntity</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-156"></a>
-<a name="line-157"></a>	    <span class='keyword'>else</span> <span class='varid'>checkForUniqueEntity</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-158"></a>	    <span class='keyword'>where</span>
-<a name="line-159"></a>	    <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-160"></a>
-<a name="line-161"></a>      <span class='varid'>checkForUniqueEntity</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-162"></a>
-<a name="line-163"></a>      <span class='varid'>checkForUniqueEntity</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-164"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueEntity: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-165"></a>
-<a name="line-166"></a>
-<a name="line-167"></a>      <span class='comment'>-- Find unparsed entities for which no notation is specified</span>
-<a name="line-168"></a>      <span class='varid'>checkNotationDecls</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-169"></a>      <span class='varid'>checkNotationDecls</span> <span class='varid'>notationNames'</span> <span class='varid'>upEntities'</span>
-<a name="line-170"></a>	  <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkNotationDecl</span><span class='layout'>)</span> <span class='varid'>upEntities'</span>
-<a name="line-171"></a>          <span class='keyword'>where</span>
-<a name="line-172"></a>          <span class='varid'>checkNotationDecl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-173"></a>          <span class='varid'>checkNotationDecl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-174"></a>              <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>notationName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>`elem`</span> <span class='varid'>notationNames'</span>
-<a name="line-175"></a>	        <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-176"></a>                <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The notation "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>notationName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be declared "</span> <span class='varop'>++</span>
-<a name="line-177"></a>	                  <span class='str'>"when referenced in the unparsed entity declaration for "</span> <span class='varop'>++</span>
-<a name="line-178"></a>		          <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>upEntityName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-179"></a>                <span class='keyword'>where</span>
-<a name="line-180"></a>		<span class='varid'>notationName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>k_ndata</span>
-<a name="line-181"></a>                <span class='varid'>upEntityName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>
-<a name="line-182"></a>
-<a name="line-183"></a>          <span class='varid'>checkNotationDecl</span> <span class='varid'>nd</span>
-<a name="line-184"></a>              <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNotationDecl: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-185"></a>
-<a name="line-186"></a>
-<a name="line-187"></a>
-<a name="line-188"></a><span class='comment'>-- |</span>
-<a name="line-189"></a><span class='comment'>-- Validation of Element declarations.</span>
-<a name="line-190"></a><span class='comment'>--</span>
-<a name="line-191"></a><span class='comment'>-- 1. Validates that an element is not declared multiple times.</span>
-<a name="line-192"></a><span class='comment'>--</span>
-<a name="line-193"></a><span class='comment'>--    Validity constraint: Unique Element Type Declaration (3.2 \/ p.21 in Spec) </span>
-<a name="line-194"></a><span class='comment'>--</span>
-<a name="line-195"></a><span class='comment'>--</span>
-<a name="line-196"></a><span class='comment'>-- 2. Validates that an element name only appears once in a mixed-content declaration.</span>
-<a name="line-197"></a><span class='comment'>--</span>
-<a name="line-198"></a><span class='comment'>--    Validity constraint: No Duplicate Types (3.2 \/ p.21 in Spec) </span>
-<a name="line-199"></a><span class='comment'>--</span>
-<a name="line-200"></a><span class='comment'>--</span>
-<a name="line-201"></a><span class='comment'>-- 3. Issues a warning if an element mentioned in a content model is not declared in the</span>
-<a name="line-202"></a><span class='comment'>--    DTD.</span>
-<a name="line-203"></a><span class='comment'>--</span>
-<a name="line-204"></a><span class='comment'>--    Optional warning: (3.2 \/ p.21 in Spec)</span>
-<a name="line-205"></a><span class='comment'>--</span>
-<a name="line-206"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-207"></a><span class='comment'>--</span>
-<a name="line-208"></a><span class='comment'>--    - 2.parameter elemNames :  list of all element names declared in the DTD</span>
-<a name="line-209"></a><span class='comment'>--</span>
-<a name="line-210"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-211"></a>
-<a name="line-212"></a>
-<a name="line-213"></a><a name="validateElements"></a><span class='definition'>validateElements</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-214"></a><span class='definition'>validateElements</span> <span class='varid'>dtdPart</span> <span class='varid'>elemNames</span>
-<a name="line-215"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueElement</span> <span class='varid'>elements</span> <span class='conid'>[]</span>
-<a name="line-216"></a>      <span class='varop'>++</span>
-<a name="line-217"></a>      <span class='varid'>checkMixedContents</span> <span class='varid'>mixedContentElems</span>
-<a name="line-218"></a>      <span class='varop'>++</span>
-<a name="line-219"></a>      <span class='varid'>checkContentModels</span> <span class='varid'>elemNames</span> <span class='varid'>elements</span>
-<a name="line-220"></a>
-<a name="line-221"></a>      <span class='keyword'>where</span>
-<a name="line-222"></a>      <span class='varid'>elements</span>          <span class='keyglyph'>=</span> <span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-223"></a>      <span class='varid'>mixedContentElems</span> <span class='keyglyph'>=</span> <span class='varid'>isMixedContentElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-224"></a>
-<a name="line-225"></a>
-<a name="line-226"></a>      <span class='comment'>-- Validates that an element is not declared multiple times</span>
-<a name="line-227"></a>      <span class='varid'>checkForUniqueElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-228"></a>      <span class='varid'>checkForUniqueElement</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-229"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-230"></a>	    <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span>
-<a name="line-231"></a>		      <span class='str'>" must not be declared more than once."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-232"></a>		 <span class='varop'>++</span>
-<a name="line-233"></a>		 <span class='varid'>checkForUniqueElement</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-234"></a>
-<a name="line-235"></a>	    <span class='keyword'>else</span> <span class='varid'>checkForUniqueElement</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-236"></a>	    <span class='keyword'>where</span>
-<a name="line-237"></a>	    <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-238"></a>
-<a name="line-239"></a>      <span class='varid'>checkForUniqueElement</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-240"></a>
-<a name="line-241"></a>      <span class='varid'>checkForUniqueElement</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-242"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueElement: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-243"></a>
-<a name="line-244"></a>
-<a name="line-245"></a>      <span class='comment'>-- Validates that an element name only appears once in a mixed-content declaration</span>
-<a name="line-246"></a>      <span class='varid'>checkMixedContents</span> <span class='varid'>elems</span>
-<a name="line-247"></a>          <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkMixedContent</span><span class='layout'>)</span> <span class='varid'>elems</span>
-<a name="line-248"></a>	  <span class='keyword'>where</span>
-<a name="line-249"></a>          <span class='varid'>checkMixedContent</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-250"></a>	      <span class='keyglyph'>=</span> <span class='varid'>checkMC</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span><span class='layout'>)</span> <span class='conid'>[]</span>
-<a name="line-251"></a>	      <span class='keyword'>where</span>
-<a name="line-252"></a>	      <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-253"></a>
-<a name="line-254"></a>	      <span class='varid'>checkMC</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-255"></a>	      <span class='varid'>checkMC</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-256"></a>                  <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-257"></a>	            <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The element type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span>
-<a name="line-258"></a>			      <span class='str'>" was already specified in the mixed-content model of the element declaration "</span> <span class='varop'>++</span>
-<a name="line-259"></a>		              <span class='varid'>show</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-260"></a>		         <span class='varop'>++</span>
-<a name="line-261"></a>		         <span class='varid'>checkMC</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-262"></a>
-<a name="line-263"></a>	            <span class='keyword'>else</span> <span class='varid'>checkMC</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-264"></a>	            <span class='keyword'>where</span>
-<a name="line-265"></a>	            <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>
-<a name="line-266"></a>
-<a name="line-267"></a>              <span class='varid'>checkMC</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-268"></a>
-<a name="line-269"></a>              <span class='varid'>checkMC</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-270"></a>	          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkMC: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-271"></a>
-<a name="line-272"></a>	  <span class='varid'>checkMixedContent</span> <span class='varid'>nd</span>
-<a name="line-273"></a>	      <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkMixedContent: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-274"></a>
-<a name="line-275"></a>
-<a name="line-276"></a>      <span class='comment'>-- Issues a warning if an element mentioned in a content model is not</span>
-<a name="line-277"></a>      <span class='comment'>-- declared in the DTD.</span>
-<a name="line-278"></a>      <span class='varid'>checkContentModels</span> <span class='varid'>names</span> <span class='varid'>elems</span>
-<a name="line-279"></a>          <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>checkContentModel</span> <span class='varid'>elems</span>
-<a name="line-280"></a>	  <span class='keyword'>where</span>
-<a name="line-281"></a>          <span class='varid'>checkContentModel</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-282"></a>          <span class='varid'>checkContentModel</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-283"></a>              <span class='keyglyph'>=</span> <span class='varid'>validateContent</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-284"></a>	      <span class='keyword'>where</span>
-<a name="line-285"></a>	      <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-286"></a>
-<a name="line-287"></a>	      <span class='varid'>validateContent</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-288"></a>	      <span class='varid'>validateContent</span> <span class='varid'>cm</span>
-<a name="line-289"></a>	          <span class='keyglyph'>|</span> <span class='varid'>cm</span> <span class='varop'>==</span> <span class='varid'>v_children</span> <span class='keyglyph'>=</span> <span class='varid'>checkContent</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-290"></a>	          <span class='keyglyph'>|</span> <span class='varid'>cm</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span>    <span class='keyglyph'>=</span> <span class='varid'>checkContent</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-291"></a>	          <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>        <span class='keyglyph'>=</span> <span class='conid'>[]</span>  <span class='comment'>-- no child elements to check</span>
-<a name="line-292"></a>
-<a name="line-293"></a>	      <span class='varid'>checkContent</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-294"></a>	      <span class='varid'>checkContent</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-295"></a>	          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>childElemName</span> <span class='varop'>`elem`</span> <span class='varid'>names</span>
-<a name="line-296"></a>	            <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-297"></a>	            <span class='keyword'>else</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"The element type "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>childElemName</span> <span class='varop'>++</span>
-<a name="line-298"></a>		               <span class='str'>", used in content model of element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>elemName</span> <span class='varop'>++</span>
-<a name="line-299"></a>			       <span class='str'>", is not declared."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-300"></a>	            <span class='keyword'>where</span>
-<a name="line-301"></a>		    <span class='varid'>childElemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>
-<a name="line-302"></a>
-<a name="line-303"></a>	      <span class='varid'>checkContent</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>CONTENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs'</span><span class='layout'>)</span>
-<a name="line-304"></a>	          <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkContent</span><span class='layout'>)</span> <span class='varid'>cs'</span>
-<a name="line-305"></a>
-<a name="line-306"></a>	      <span class='varid'>checkContent</span> <span class='varid'>nd</span>
-<a name="line-307"></a>	          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkContent: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-308"></a>
-<a name="line-309"></a>          <span class='varid'>checkContentModel</span> <span class='varid'>nd</span>
-<a name="line-310"></a>              <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkContentModel: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-311"></a>
-<a name="line-312"></a>
-<a name="line-313"></a><span class='comment'>-- |</span>
-<a name="line-314"></a><span class='comment'>-- Validation of Attribute declarations.</span>
-<a name="line-315"></a><span class='comment'>--</span>
-<a name="line-316"></a><span class='comment'>-- (1) Issues a warning if an attribute is declared for an element type not itself</span>
-<a name="line-317"></a><span class='comment'>--    decared.</span>
-<a name="line-318"></a><span class='comment'>--</span>
-<a name="line-319"></a><span class='comment'>--    Optinal warning: (3.3 \/ p. 24 in Spec)</span>
-<a name="line-320"></a><span class='comment'>--</span>
-<a name="line-321"></a><span class='comment'>--</span>
-<a name="line-322"></a><span class='comment'>-- 2. Issues a warning if more than one definition is provided for the same</span>
-<a name="line-323"></a><span class='comment'>--    attribute of a given element type. Fist declaration is binding, later</span>
-<a name="line-324"></a><span class='comment'>--    definitions are ignored.</span>
-<a name="line-325"></a><span class='comment'>--</span>
-<a name="line-326"></a><span class='comment'>--    Optional warning: (3.3 \/ p.24 in Spec)</span>
-<a name="line-327"></a><span class='comment'>--</span>
-<a name="line-328"></a><span class='comment'>--</span>
-<a name="line-329"></a><span class='comment'>-- 3. Issues a warning if the same Nmtoken occures more than once in enumerated</span>
-<a name="line-330"></a><span class='comment'>--    attribute types of a single element type.</span>
-<a name="line-331"></a><span class='comment'>--</span>
-<a name="line-332"></a><span class='comment'>--    Optional warning: (3.3.1 \/ p.27 in Spec) </span>
-<a name="line-333"></a><span class='comment'>--</span>
-<a name="line-334"></a><span class='comment'>--</span>
-<a name="line-335"></a><span class='comment'>-- 4. Validates that an element type has not more than one ID attribute defined.</span>
-<a name="line-336"></a><span class='comment'>--</span>
-<a name="line-337"></a><span class='comment'>--    Validity constraint: One ID per Element Type (3.3.1 \/ p.26 in Spec) </span>
-<a name="line-338"></a><span class='comment'>--</span>
-<a name="line-339"></a><span class='comment'>--</span>
-<a name="line-340"></a><span class='comment'>-- 5. Validates that an element type has not more than one NOTATION attribute defined.</span>
-<a name="line-341"></a><span class='comment'>--</span>
-<a name="line-342"></a><span class='comment'>--    Validity constraint: One Notation per Element Type (3.3.1 \/ p.27 in Spec) </span>
-<a name="line-343"></a><span class='comment'>--</span>
-<a name="line-344"></a><span class='comment'>--</span>
-<a name="line-345"></a><span class='comment'>-- 6. Validates that an ID attributes has the type #IMPLIED or #REQUIRED.</span>
-<a name="line-346"></a><span class='comment'>--</span>
-<a name="line-347"></a><span class='comment'>--    Validity constraint: ID Attribute Default (3.3.1 \/ p.26 in Spec) </span>
-<a name="line-348"></a><span class='comment'>--</span>
-<a name="line-349"></a><span class='comment'>--</span>
-<a name="line-350"></a><span class='comment'>-- 7. Validates that all referenced notations are declared.</span>
-<a name="line-351"></a><span class='comment'>--</span>
-<a name="line-352"></a><span class='comment'>--    Validity constraint: Notation Attributes (3.3.1 \/ p.27 in Spec) </span>
-<a name="line-353"></a><span class='comment'>--</span>
-<a name="line-354"></a><span class='comment'>--</span>
-<a name="line-355"></a><span class='comment'>-- 8. Validates that notations are not declared for EMPTY elements.</span>
-<a name="line-356"></a><span class='comment'>--</span>
-<a name="line-357"></a><span class='comment'>--    Validity constraint: No Notation on Empty Element (3.3.1 \/p.27 in Spec) </span>
-<a name="line-358"></a><span class='comment'>--</span>
-<a name="line-359"></a><span class='comment'>--</span>
-<a name="line-360"></a><span class='comment'>-- 9. Validates that the default value matches the lexical constraints of it's type.</span>
-<a name="line-361"></a><span class='comment'>--</span>
-<a name="line-362"></a><span class='comment'>--    Validity constraint: Attribute default legal (3.3.2 \/ p.28 in Spec)</span>
-<a name="line-363"></a><span class='comment'>--</span>
-<a name="line-364"></a><span class='comment'>--</span>
-<a name="line-365"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-366"></a><span class='comment'>--</span>
-<a name="line-367"></a><span class='comment'>--    - 2.parameter elemNames :  list of all element names declared in the DTD</span>
-<a name="line-368"></a><span class='comment'>--</span>
-<a name="line-369"></a><span class='comment'>--    - 3.parameter notationNames :  list of all notation names declared in the DTD</span>
-<a name="line-370"></a><span class='comment'>--</span>
-<a name="line-371"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-372"></a>
-<a name="line-373"></a><a name="validateAttributes"></a><span class='definition'>validateAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-374"></a><span class='definition'>validateAttributes</span> <span class='varid'>dtdPart</span> <span class='varid'>elemNames</span> <span class='varid'>notationNames</span>
-<a name="line-375"></a>    <span class='keyglyph'>=</span> <span class='comment'>-- 1. Find attributes for which no elements are declared</span>
-<a name="line-376"></a>      <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkDeclaredElements</span> <span class='varid'>elemNames</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>attributes</span><span class='layout'>)</span>
-<a name="line-377"></a>      <span class='varop'>++</span>
-<a name="line-378"></a>      <span class='comment'>-- 2. Find attributes which are declared more than once</span>
-<a name="line-379"></a>      <span class='layout'>(</span><span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>attributes</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-380"></a>      <span class='varop'>++</span>
-<a name="line-381"></a>      <span class='comment'>-- 3. Find enumerated attribute types which nmtokens are declared more than once</span>
-<a name="line-382"></a>      <span class='layout'>(</span><span class='varid'>checkEnumeratedTypes</span>
-<a name="line-383"></a>      <span class='varop'>`o`</span>
-<a name="line-384"></a>      <span class='layout'>(</span><span class='varid'>isEnumAttrType</span> <span class='varop'>`orElse`</span> <span class='varid'>isNotationAttrType</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>attributes</span><span class='layout'>)</span>
-<a name="line-385"></a>      <span class='varop'>++</span>
-<a name="line-386"></a>      <span class='comment'>-- 4. Validate that there exists only one ID attribute for an element</span>
-<a name="line-387"></a>      <span class='layout'>(</span><span class='varid'>checkForUniqueId</span> <span class='varid'>idAttributes</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-388"></a>      <span class='varop'>++</span>
-<a name="line-389"></a>      <span class='comment'>-- 5. Validate that there exists only one NOTATION attribute for an element</span>
-<a name="line-390"></a>      <span class='layout'>(</span><span class='varid'>checkForUniqueNotation</span> <span class='varid'>notationAttributes</span> <span class='conid'>[]</span><span class='layout'>)</span>
-<a name="line-391"></a>      <span class='varop'>++</span>
-<a name="line-392"></a>      <span class='comment'>-- 6. Validate that ID attributes have the type #IMPLIED or #REQUIRED</span>
-<a name="line-393"></a>      <span class='layout'>(</span><span class='varid'>checkIdKindConstraint</span> <span class='varop'>$$</span> <span class='varid'>idAttributes</span><span class='layout'>)</span>
-<a name="line-394"></a>      <span class='varop'>++</span>
-<a name="line-395"></a>      <span class='comment'>-- 7. Validate that all referenced notations are declared</span>
-<a name="line-396"></a>      <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkNotationDeclaration</span> <span class='varid'>notationNames</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>notationAttributes</span><span class='layout'>)</span>
-<a name="line-397"></a>      <span class='varop'>++</span>
-<a name="line-398"></a>      <span class='comment'>-- 8. Validate that notations are not declared for EMPTY elements</span>
-<a name="line-399"></a>      <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkNoNotationForEmptyElement</span>
-<a name="line-400"></a>      	  <span class='layout'>(</span>
-<a name="line-401"></a>    	      <span class='varid'>getXTextValues</span> <span class='layout'>(</span><span class='varid'>getDTDValue</span> <span class='varid'>a_name</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isEmptyElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-402"></a>       	  <span class='layout'>)</span>
-<a name="line-403"></a>        <span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>notationAttributes</span><span class='layout'>)</span>
-<a name="line-404"></a>      <span class='varop'>++</span>
-<a name="line-405"></a>      <span class='comment'>-- 9. Validate that the default value matches the lexical constraints of it's type</span>
-<a name="line-406"></a>      <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkDefaultValueTypes</span> <span class='varid'>dtdPart</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isDefaultAttrKind</span> <span class='varop'>$$</span> <span class='varid'>attributes</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-407"></a>
-<a name="line-408"></a>      <span class='keyword'>where</span>
-<a name="line-409"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-410"></a>      <span class='comment'>-- helper functions</span>
-<a name="line-411"></a>      <span class='varid'>attributes</span>         <span class='keyglyph'>=</span> <span class='varid'>isAttlist</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-412"></a>      <span class='varid'>idAttributes</span>       <span class='keyglyph'>=</span> <span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>attributes</span>
-<a name="line-413"></a>      <span class='varid'>notationAttributes</span> <span class='keyglyph'>=</span> <span class='varid'>isNotationAttrType</span> <span class='varop'>$$</span> <span class='varid'>attributes</span>
-<a name="line-414"></a>
-<a name="line-415"></a>
-<a name="line-416"></a>      <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>
-<a name="line-417"></a>      <span class='varid'>attName</span>  <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span>
-<a name="line-418"></a>
-<a name="line-419"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-420"></a>      <span class='comment'>-- 1. Find attributes for which no elements are declared</span>
-<a name="line-421"></a>      <span class='varid'>checkDeclaredElements</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-422"></a>      <span class='varid'>checkDeclaredElements</span> <span class='varid'>elemNames'</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-423"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>elemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>`elem`</span> <span class='varid'>elemNames'</span>
-<a name="line-424"></a>	    <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-425"></a>	    <span class='keyword'>else</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"The element type \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" used in declaration "</span><span class='varop'>++</span>
-<a name="line-426"></a>	               <span class='str'>"of attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" is not declared."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-427"></a>
-<a name="line-428"></a>      <span class='varid'>checkDeclaredElements</span> <span class='keyword'>_</span> <span class='varid'>nd</span>
-<a name="line-429"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkDeclaredElements: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-430"></a>
-<a name="line-431"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-432"></a>      <span class='comment'>-- 2. Find attributes which are declared more than once</span>
-<a name="line-433"></a>      <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-434"></a>      <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-435"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-436"></a>	    <span class='keyword'>then</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"Attribute \""</span><span class='varop'>++</span> <span class='varid'>aname</span> <span class='varop'>++</span><span class='str'>"\" for element type \""</span><span class='varop'>++</span>
-<a name="line-437"></a>		        <span class='varid'>ename</span> <span class='varop'>++</span><span class='str'>"\" is already declared. First "</span><span class='varop'>++</span>
-<a name="line-438"></a>		        <span class='str'>"declaration will be used."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-439"></a>		 <span class='varop'>++</span>
-<a name="line-440"></a>		 <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-441"></a>
-<a name="line-442"></a>	    <span class='keyword'>else</span> <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-443"></a>	    <span class='keyword'>where</span>
-<a name="line-444"></a>	    <span class='varid'>ename</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varid'>al</span>
-<a name="line-445"></a>	    <span class='varid'>aname</span> <span class='keyglyph'>=</span> <span class='varid'>attName</span> <span class='varid'>al</span>
-<a name="line-446"></a>	    <span class='varid'>name</span>  <span class='keyglyph'>=</span> <span class='varid'>ename</span> <span class='varop'>++</span> <span class='str'>"|"</span> <span class='varop'>++</span> <span class='varid'>aname</span>
-<a name="line-447"></a>
-<a name="line-448"></a>      <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-449"></a>
-<a name="line-450"></a>      <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-451"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueAttributeDeclaration: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-452"></a>
-<a name="line-453"></a>
-<a name="line-454"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-455"></a>      <span class='comment'>-- 3. Find enumerated attribute types which nmtokens are declared more than once</span>
-<a name="line-456"></a>      <span class='varid'>checkEnumeratedTypes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-457"></a>      <span class='varid'>checkEnumeratedTypes</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-458"></a>          <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueType</span> <span class='varid'>cs</span> <span class='conid'>[]</span>
-<a name="line-459"></a>	  <span class='keyword'>where</span>
-<a name="line-460"></a>	  <span class='varid'>checkForUniqueType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-461"></a>          <span class='varid'>checkForUniqueType</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-462"></a>              <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>nmtoken</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-463"></a>	        <span class='keyword'>then</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"Nmtoken \""</span><span class='varop'>++</span> <span class='varid'>nmtoken</span> <span class='varop'>++</span><span class='str'>"\" should not "</span><span class='varop'>++</span>
-<a name="line-464"></a>		        <span class='str'>"occur more than once in attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span>
-<a name="line-465"></a>			<span class='str'>"\" for element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\"."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-466"></a>		     <span class='varop'>++</span>
-<a name="line-467"></a>		     <span class='varid'>checkForUniqueType</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-468"></a>
-<a name="line-469"></a>	        <span class='keyword'>else</span> <span class='varid'>checkForUniqueType</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>nmtoken</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-470"></a>	        <span class='keyword'>where</span>
-<a name="line-471"></a>	        <span class='varid'>nmtoken</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>
-<a name="line-472"></a>
-<a name="line-473"></a>          <span class='varid'>checkForUniqueType</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-474"></a>
-<a name="line-475"></a>          <span class='varid'>checkForUniqueType</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-476"></a>              <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueType: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-477"></a>
-<a name="line-478"></a>      <span class='varid'>checkEnumeratedTypes</span> <span class='varid'>nd</span>
-<a name="line-479"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkEnumeratedTypes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-480"></a>
-<a name="line-481"></a>
-<a name="line-482"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-483"></a>      <span class='comment'>-- 4. Validate that there exists only one ID attribute for an element</span>
-<a name="line-484"></a>      <span class='varid'>checkForUniqueId</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-485"></a>      <span class='varid'>checkForUniqueId</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-486"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>ename</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-487"></a>	    <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element \""</span><span class='varop'>++</span> <span class='varid'>ename</span> <span class='varop'>++</span> <span class='str'>"\" already has attribute of type "</span><span class='varop'>++</span>
-<a name="line-488"></a>		       <span class='str'>"ID, another attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" of type ID is "</span><span class='varop'>++</span>
-<a name="line-489"></a>		       <span class='str'>"not permitted."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-490"></a>		 <span class='varop'>++</span>
-<a name="line-491"></a>		 <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-492"></a>
-<a name="line-493"></a>	    <span class='keyword'>else</span> <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>ename</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-494"></a>	    <span class='keyword'>where</span>
-<a name="line-495"></a>	    <span class='varid'>ename</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varid'>al</span>
-<a name="line-496"></a>
-<a name="line-497"></a>      <span class='varid'>checkForUniqueId</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-498"></a>
-<a name="line-499"></a>      <span class='varid'>checkForUniqueId</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-500"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueId: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-501"></a>
-<a name="line-502"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-503"></a>      <span class='comment'>-- 5. Validate that there exists only one NOTATION attribute for an element</span>
-<a name="line-504"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-505"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-506"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>ename</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-507"></a>	    <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" already has attribute of type "</span><span class='varop'>++</span>
-<a name="line-508"></a>		       <span class='str'>"NOTATION, another attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" of type NOTATION "</span><span class='varop'>++</span>
-<a name="line-509"></a>		       <span class='str'>"is not permitted."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-510"></a>		 <span class='varop'>++</span>
-<a name="line-511"></a>		 <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-512"></a>
-<a name="line-513"></a>	    <span class='keyword'>else</span> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>ename</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-514"></a>	    <span class='keyword'>where</span>
-<a name="line-515"></a>	    <span class='varid'>ename</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varid'>al</span>
-<a name="line-516"></a>
-<a name="line-517"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-518"></a>
-<a name="line-519"></a>      <span class='varid'>checkForUniqueNotation</span> <span class='varid'>nd</span> <span class='keyword'>_</span>
-<a name="line-520"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueNotation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-521"></a>
-<a name="line-522"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-523"></a>      <span class='comment'>-- 6. Validate that ID attributes have the type #IMPLIED or #REQUIRED</span>
-<a name="line-524"></a>      <span class='varid'>checkIdKindConstraint</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-525"></a>      <span class='varid'>checkIdKindConstraint</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-526"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>attKind</span> <span class='varop'>==</span> <span class='varid'>k_implied</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>attKind</span> <span class='varop'>==</span> <span class='varid'>k_required</span><span class='layout'>)</span>
-<a name="line-527"></a>	    <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-528"></a>	    <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"ID attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" must have a declared default "</span><span class='varop'>++</span>
-<a name="line-529"></a>	              <span class='str'>"of \"#IMPLIED\" or \"REQUIRED\""</span><span class='layout'>)</span> <span class='varid'>nd</span>
-<a name="line-530"></a>	    <span class='keyword'>where</span>
-<a name="line-531"></a>	    <span class='varid'>attKind</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span>
-<a name="line-532"></a>
-<a name="line-533"></a>      <span class='varid'>checkIdKindConstraint</span> <span class='varid'>nd</span>
-<a name="line-534"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkIdKindConstraint: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-535"></a>
-<a name="line-536"></a>
-<a name="line-537"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-538"></a>      <span class='comment'>-- 7. Validate that all referenced notations are declared</span>
-<a name="line-539"></a>      <span class='varid'>checkNotationDeclaration</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-540"></a>      <span class='varid'>checkNotationDeclaration</span> <span class='varid'>notations</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-541"></a>          <span class='keyglyph'>=</span> <span class='varid'>checkNotations</span> <span class='varop'>$$</span> <span class='varid'>cs</span>
-<a name="line-542"></a>	  <span class='keyword'>where</span>
-<a name="line-543"></a>	  <span class='varid'>checkNotations</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-544"></a>	  <span class='varid'>checkNotations</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-545"></a>	      <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>notation</span> <span class='varop'>`elem`</span> <span class='varid'>notations</span>
-<a name="line-546"></a>	        <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-547"></a>	        <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The notation \""</span><span class='varop'>++</span> <span class='varid'>notation</span> <span class='varop'>++</span><span class='str'>"\" must be declared when "</span><span class='varop'>++</span>
-<a name="line-548"></a>		          <span class='str'>"referenced in the notation type list for attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span>
-<a name="line-549"></a>			  <span class='str'>"\" of element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\"."</span><span class='layout'>)</span> <span class='varid'>nd</span>
-<a name="line-550"></a>                <span class='keyword'>where</span>
-<a name="line-551"></a>	        <span class='varid'>notation</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>
-<a name="line-552"></a>
-<a name="line-553"></a>          <span class='varid'>checkNotations</span> <span class='varid'>nd</span>
-<a name="line-554"></a>              <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNotations: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-555"></a>
-<a name="line-556"></a>      <span class='varid'>checkNotationDeclaration</span> <span class='keyword'>_</span> <span class='varid'>nd</span>
-<a name="line-557"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNotationDeclaration: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-558"></a>
-<a name="line-559"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-560"></a>      <span class='comment'>-- 8. Validate that notations are not declared for EMPTY elements</span>
-<a name="line-561"></a>      <span class='varid'>checkNoNotationForEmptyElement</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-562"></a>      <span class='varid'>checkNoNotationForEmptyElement</span> <span class='varid'>emptyElems</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-563"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>elemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>`elem`</span> <span class='varid'>emptyElems</span>
-<a name="line-564"></a>	    <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" of type NOTATION must not be "</span><span class='varop'>++</span>
-<a name="line-565"></a>	              <span class='str'>"declared on the element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" declared EMPTY."</span><span class='layout'>)</span>
-<a name="line-566"></a>		      <span class='varid'>nd</span>
-<a name="line-567"></a>	    <span class='keyword'>else</span> <span class='conid'>[]</span>
-<a name="line-568"></a>
-<a name="line-569"></a>      <span class='varid'>checkNoNotationForEmptyElement</span> <span class='keyword'>_</span> <span class='varid'>nd</span>
-<a name="line-570"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNoNotationForEmptyElement: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-571"></a>
-<a name="line-572"></a>      <span class='comment'>--------------------------------------------------------------------------</span>
-<a name="line-573"></a>      <span class='comment'>-- 9. Validate that default values meet the lexical constraints of the attribute types</span>
-<a name="line-574"></a>      <span class='varid'>checkDefaultValueTypes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-575"></a>      <span class='varid'>checkDefaultValueTypes</span> <span class='varid'>dtdPart'</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-576"></a>          <span class='keyglyph'>=</span> <span class='varid'>checkAttributeValue</span> <span class='varid'>dtdPart'</span> <span class='varid'>n</span> <span class='varid'>n</span>
-<a name="line-577"></a>
-<a name="line-578"></a>      <span class='varid'>checkDefaultValueTypes</span> <span class='keyword'>_</span> <span class='varid'>nd</span>
-<a name="line-579"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkDefaultValueTypes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-580"></a>
-<a name="line-581"></a>
-<a name="line-582"></a>
-<a name="line-583"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-584"></a>
-<a name="line-585"></a><span class='comment'>-- |</span>
-<a name="line-586"></a><span class='comment'>-- Removes doublicate declarations from the DTD, which first declaration is</span>
-<a name="line-587"></a><span class='comment'>-- binding. This is the case for ATTLIST and ENTITY declarations.</span>
-<a name="line-588"></a><span class='comment'>--</span>
-<a name="line-589"></a><span class='comment'>--    - returns : A function that replaces the children of DOCTYPE nodes by a list</span>
-<a name="line-590"></a><span class='comment'>--               where all multiple declarations are removed.</span>
-<a name="line-591"></a>
-<a name="line-592"></a><a name="removeDoublicateDefs"></a><span class='definition'>removeDoublicateDefs</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-593"></a><span class='definition'>removeDoublicateDefs</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-594"></a>    <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>removeDoubleDefs</span> <span class='conid'>[]</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-595"></a>      <span class='keyword'>where</span>
-<a name="line-596"></a>      <span class='varid'>removeDoubleDefs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-597"></a>      <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>
-<a name="line-598"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>elemAttr</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-599"></a>            <span class='keyword'>then</span> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='varid'>xs</span>
-<a name="line-600"></a>            <span class='keyword'>else</span> <span class='varid'>x</span>
-<a name="line-601"></a>	         <span class='conop'>:</span>
-<a name="line-602"></a>	         <span class='varid'>removeDoubleDefs</span> <span class='layout'>(</span><span class='varid'>elemAttr</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span> <span class='varid'>xs</span>
-<a name="line-603"></a>            <span class='keyword'>where</span>
-<a name="line-604"></a>	    <span class='varid'>elemAttr</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>"|"</span> <span class='varop'>++</span> <span class='varid'>attrName</span>
-<a name="line-605"></a>            <span class='varid'>attrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>
-<a name="line-606"></a>            <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-607"></a>
-<a name="line-608"></a>
-<a name="line-609"></a>      <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>
-<a name="line-610"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-611"></a>            <span class='keyword'>then</span> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='varid'>xs</span>
-<a name="line-612"></a>            <span class='keyword'>else</span> <span class='varid'>x</span>
-<a name="line-613"></a>	         <span class='conop'>:</span>
-<a name="line-614"></a>	         <span class='varid'>removeDoubleDefs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span> <span class='varid'>xs</span>
-<a name="line-615"></a>            <span class='keyword'>where</span>
-<a name="line-616"></a>            <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-617"></a>
-<a name="line-618"></a>
-<a name="line-619"></a>      <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>
-<a name="line-620"></a>          <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='varid'>xs</span>
-<a name="line-621"></a>
-<a name="line-622"></a>      <span class='varid'>removeDoubleDefs</span> <span class='keyword'>_</span> <span class='conid'>[]</span>
-<a name="line-623"></a>          <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-624"></a>
-<a name="line-625"></a>
-<a name="line-626"></a><span class='definition'>removeDoublicateDefs</span> <span class='varid'>n</span>
-<a name="line-627"></a>    <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>
-<a name="line-628"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-DocTransformation.html b/doc/hdoc/src/Text-XML-HXT-Validator-DocTransformation.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-DocTransformation.html
+++ /dev/null
@@ -1,245 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides functions for transforming XML documents represented as</span>
-<a name="line-3"></a><span class='comment'>-- XmlTree with respect to its DTD.</span>
-<a name="line-4"></a>
-<a name="line-5"></a><span class='comment'>-- Transforming an XML document with respect to its DTD means:</span>
-<a name="line-6"></a><span class='comment'>--</span>
-<a name="line-7"></a><span class='comment'>--  - add all attributes with default values</span>
-<a name="line-8"></a><span class='comment'>--</span>
-<a name="line-9"></a><span class='comment'>--  - normalize all attribute values</span>
-<a name="line-10"></a><span class='comment'>--</span>
-<a name="line-11"></a><span class='comment'>--  - sort all attributes in lexical order</span>
-<a name="line-12"></a><span class='comment'>--</span>
-<a name="line-13"></a>
-<a name="line-14"></a>
-<a name="line-15"></a><span class='comment'>-- Note: Transformation should be started after validation.</span>
-<a name="line-16"></a>
-<a name="line-17"></a>
-<a name="line-18"></a><span class='comment'>-- Before the document is validated, a lookup-table is build on the basis of</span>
-<a name="line-19"></a><span class='comment'>-- the DTD which maps element names to their transformation functions.</span>
-<a name="line-20"></a><span class='comment'>-- After this initialization phase the whole document is traversed in preorder</span>
-<a name="line-21"></a><span class='comment'>-- and every element is transformed by the XmlFilter from the lookup-table.</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='comment'>-- Special namings in source code:</span>
-<a name="line-24"></a><span class='comment'>--</span>
-<a name="line-25"></a><span class='comment'>--  - nd - XDTD node</span>
-<a name="line-26"></a><span class='comment'>--</span>
-<a name="line-27"></a><span class='comment'>--  - n  - XTag node</span>
-<a name="line-28"></a><span class='comment'>--</span>
-<a name="line-29"></a><span class='comment'>-- Author : .\\artin Schmidt</span>
-<a name="line-30"></a><span class='comment'>-- Version : $Id: DocTransformation.hs,v 1.1 2004/09/02 19:12:03 hxml Exp $</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocTransformation</span>
-<a name="line-33"></a>    <span class='layout'>(</span> <span class='varid'>transform</span>
-<a name="line-34"></a>    <span class='layout'>)</span>
-<a name="line-35"></a><span class='keyword'>where</span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>
-<a name="line-40"></a>
-<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-42"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>
-<a name="line-43"></a>
-<a name="line-44"></a>
-<a name="line-45"></a>
-<a name="line-46"></a><span class='comment'>-- |</span>
-<a name="line-47"></a><span class='comment'>-- Lookup-table which maps element names to their transformation functions. The</span>
-<a name="line-48"></a><span class='comment'>-- transformation functions are XmlFilters.</span>
-<a name="line-49"></a>
-<a name="line-50"></a><a name="TransEnvTable"></a><span class='keyword'>type</span> <span class='conid'>TransEnvTable</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>TransEnv</span><span class='keyglyph'>]</span>
-<a name="line-51"></a><a name="TransEnv"></a><span class='keyword'>type</span> <span class='conid'>TransEnv</span> 		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>ElemName</span><span class='layout'>,</span> <span class='conid'>TransFct</span><span class='layout'>)</span>
-<a name="line-52"></a><a name="ElemName"></a><span class='keyword'>type</span> <span class='conid'>ElemName</span>		<span class='keyglyph'>=</span> <span class='conid'>String</span>
-<a name="line-53"></a><a name="TransFct"></a><span class='keyword'>type</span> <span class='conid'>TransFct</span>		<span class='keyglyph'>=</span> <span class='conid'>XmlFilter</span>
-<a name="line-54"></a>
-<a name="line-55"></a>
-<a name="line-56"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-57"></a>
-<a name="line-58"></a>
-<a name="line-59"></a><span class='comment'>-- |</span>
-<a name="line-60"></a><span class='comment'>-- filter for transforming the document.</span>
-<a name="line-61"></a><span class='comment'>--</span>
-<a name="line-62"></a><span class='comment'>--    * 1.parameter dtdPart :  the DTD subset (Node @DOCTYPE@) of the XmlTree</span>
-<a name="line-63"></a><span class='comment'>--</span>
-<a name="line-64"></a><span class='comment'>--    - 2.parameter doc :  the document subset of the XmlTree</span>
-<a name="line-65"></a><span class='comment'>--</span>
-<a name="line-66"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-67"></a>
-<a name="line-68"></a><a name="transform"></a><span class='definition'>transform</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-69"></a><span class='definition'>transform</span> <span class='varid'>dtdPart</span> <span class='varid'>dom</span>
-<a name="line-70"></a>    <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>transTable</span> <span class='varid'>dom</span>
-<a name="line-71"></a>    <span class='keyword'>where</span>
-<a name="line-72"></a>    <span class='varid'>transTable</span> <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "buildAllTransFcts" #-}</span> <span class='varid'>buildAllTransformationFunctions</span> <span class='varid'>dtdPart</span>
-<a name="line-73"></a>
-<a name="line-74"></a>
-<a name="line-75"></a>
-<a name="line-76"></a><span class='comment'>-- |</span>
-<a name="line-77"></a><span class='comment'>-- Traverse the XmlTree in preorder.</span>
-<a name="line-78"></a><span class='comment'>--</span>
-<a name="line-79"></a><span class='comment'>--    * 1.parameter transEnv :  lookup-table which maps element names to their transformation functions</span>
-<a name="line-80"></a><span class='comment'>--</span>
-<a name="line-81"></a><span class='comment'>--    - returns : the whole transformed document</span>
-<a name="line-82"></a>
-<a name="line-83"></a><a name="traverseTree"></a><span class='definition'>traverseTree</span> <span class='keyglyph'>::</span> <span class='conid'>TransEnvTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-84"></a><span class='definition'>traverseTree</span> <span class='varid'>transEnv</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-85"></a>    <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>traverseTree</span> <span class='varid'>transEnv</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='layout'>(</span><span class='varid'>transFct</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-86"></a>      <span class='keyword'>where</span>
-<a name="line-87"></a>      <span class='varid'>transFct</span> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>transEnv</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-88"></a>          <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>this</span>   <span class='comment'>-- element not in DTD, can't be transformed</span>
-<a name="line-89"></a>	  <span class='conid'>Just</span> <span class='varid'>f</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>f</span>
-<a name="line-90"></a>
-<a name="line-91"></a><span class='definition'>traverseTree</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>
-<a name="line-92"></a>
-<a name="line-93"></a>
-<a name="line-94"></a><span class='comment'>-- |</span>
-<a name="line-95"></a><span class='comment'>-- Build all transformation functions.</span>
-<a name="line-96"></a><span class='comment'>--</span>
-<a name="line-97"></a><span class='comment'>--    * 1.parameter dtdPart :  the DTD subset, root node should be of type @DOCTYPE@</span>
-<a name="line-98"></a><span class='comment'>--</span>
-<a name="line-99"></a><span class='comment'>--    - returns : lookup-table which maps element names to their transformation functions</span>
-<a name="line-100"></a>
-<a name="line-101"></a><a name="buildAllTransformationFunctions"></a><span class='definition'>buildAllTransformationFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>TransEnvTable</span>
-<a name="line-102"></a><span class='definition'>buildAllTransformationFunctions</span> <span class='varid'>dtdPart</span>
-<a name="line-103"></a>    <span class='keyglyph'>=</span> <span class='varid'>buildTransRoot</span>
-<a name="line-104"></a>      <span class='conop'>:</span>
-<a name="line-105"></a>      <span class='comment'>-- construct the list of filters</span>
-<a name="line-106"></a>      <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>buildTransformationFunctions</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span>
-<a name="line-107"></a>      <span class='keyword'>where</span>
-<a name="line-108"></a>      <span class='varid'>dtdNodes</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>
-<a name="line-109"></a>
-<a name="line-110"></a>
-<a name="line-111"></a><span class='comment'>-- |</span>
-<a name="line-112"></a><span class='comment'>-- Build a transformation function for the document root. By root @\/@</span>
-<a name="line-113"></a><span class='comment'>-- is meant, which is the topmost dummy created by the parser. This function is only a</span>
-<a name="line-114"></a><span class='comment'>-- dummy, too.</span>
-<a name="line-115"></a><span class='comment'>--</span>
-<a name="line-116"></a><span class='comment'>--    * returns : entry for the lookup-table</span>
-<a name="line-117"></a>
-<a name="line-118"></a><a name="buildTransRoot"></a><span class='definition'>buildTransRoot</span> <span class='keyglyph'>::</span> <span class='conid'>TransEnv</span>
-<a name="line-119"></a><span class='definition'>buildTransRoot</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>t_root</span><span class='layout'>,</span> <span class='varid'>this</span><span class='layout'>)</span>
-<a name="line-120"></a>
-<a name="line-121"></a>
-<a name="line-122"></a>
-<a name="line-123"></a><span class='comment'>-- |</span>
-<a name="line-124"></a><span class='comment'>-- Build transformation functions for an element.</span>
-<a name="line-125"></a><span class='comment'>--</span>
-<a name="line-126"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-127"></a><span class='comment'>--</span>
-<a name="line-128"></a><span class='comment'>--    * 1.parameter nd :  element declaration for which the transformation functions are</span>
-<a name="line-129"></a><span class='comment'>--                    created</span>
-<a name="line-130"></a><span class='comment'>--</span>
-<a name="line-131"></a><span class='comment'>--    - returns : entry for the lookup-table</span>
-<a name="line-132"></a>
-<a name="line-133"></a><a name="buildTransformationFunctions"></a><span class='definition'>buildTransformationFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>TransEnv</span>
-<a name="line-134"></a>
-<a name="line-135"></a><span class='definition'>buildTransformationFunctions</span> <span class='varid'>dtdPart</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-136"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>name</span><span class='layout'>,</span> <span class='varid'>transFct</span><span class='layout'>)</span>
-<a name="line-137"></a>    <span class='keyword'>where</span>
-<a name="line-138"></a>    <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-139"></a>    <span class='varid'>transFct</span> <span class='keyglyph'>=</span> <span class='varid'>lexicographicAttributeOrder</span>
-<a name="line-140"></a>               <span class='varop'>`o`</span>
-<a name="line-141"></a>	       <span class='varid'>normalizeAttributeValues</span> <span class='varid'>n</span> <span class='varid'>dtdPart</span>
-<a name="line-142"></a>	       <span class='varop'>`o`</span>
-<a name="line-143"></a>	       <span class='varid'>setDefaultAttributeValues</span> <span class='varid'>n</span> <span class='varid'>dtdPart</span>
-<a name="line-144"></a>
-<a name="line-145"></a><span class='definition'>buildTransformationFunctions</span> <span class='keyword'>_</span> <span class='varid'>n</span>
-<a name="line-146"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildTransformationFunctions: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-147"></a>
-<a name="line-148"></a>
-<a name="line-149"></a>
-<a name="line-150"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-151"></a>
-<a name="line-152"></a>
-<a name="line-153"></a><span class='comment'>-- |</span>
-<a name="line-154"></a><span class='comment'>-- Sort the attributes of an element in lexicographic order.</span>
-<a name="line-155"></a><span class='comment'>--</span>
-<a name="line-156"></a><span class='comment'>--    * returns : a function which takes an element (XTag), sorts its</span>
-<a name="line-157"></a><span class='comment'>--                  attributes in lexicographic order and returns the changed element</span>
-<a name="line-158"></a>
-<a name="line-159"></a><a name="lexicographicAttributeOrder"></a><span class='definition'>lexicographicAttributeOrder</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-160"></a><span class='definition'>lexicographicAttributeOrder</span>
-<a name="line-161"></a>    <span class='keyglyph'>=</span> <span class='varid'>processAttrl</span> <span class='varid'>sortAttrl</span>
-<a name="line-162"></a>      <span class='keyword'>where</span>
-<a name="line-163"></a>      <span class='varid'>sortAttrl</span> <span class='varid'>al</span>
-<a name="line-164"></a>	  <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>al</span> <span class='varop'>!!</span><span class='layout'>)</span> <span class='varid'>ixs</span>
-<a name="line-165"></a>	    <span class='keyword'>where</span>
-<a name="line-166"></a>	    <span class='varid'>ns</span>  <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>nameOf</span> <span class='varid'>al</span>
-<a name="line-167"></a>	    <span class='varid'>ixs</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>snd</span> <span class='varop'>.</span> <span class='varid'>sort</span> <span class='varop'>.</span> <span class='varid'>zip</span> <span class='varid'>ns</span> <span class='varop'>$</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='num'>0</span><span class='keyglyph'>::</span><span class='conid'>Int</span><span class='layout'>)</span><span class='keyglyph'>..</span><span class='keyglyph'>]</span>
-<a name="line-168"></a>
-<a name="line-169"></a><span class='comment'>-- |</span>
-<a name="line-170"></a><span class='comment'>-- Normalize attribute values.</span>
-<a name="line-171"></a><span class='comment'>--</span>
-<a name="line-172"></a><span class='comment'>--    * returns : a function which takes an element (XTag), normalizes its</span>
-<a name="line-173"></a><span class='comment'>--                  attribute values and returns the changed element</span>
-<a name="line-174"></a>
-<a name="line-175"></a><a name="normalizeAttributeValues"></a><span class='definition'>normalizeAttributeValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-176"></a><span class='definition'>normalizeAttributeValues</span> <span class='varid'>elemDescr</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>dtdPart</span>
-<a name="line-177"></a>    <span class='keyglyph'>=</span> <span class='varid'>processAttr</span> <span class='varid'>normalizeAttr</span>
-<a name="line-178"></a>      <span class='keyword'>where</span>
-<a name="line-179"></a>      <span class='varid'>elemName</span>     <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>
-<a name="line-180"></a>      <span class='varid'>declaredAtts</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-181"></a>
-<a name="line-182"></a>      <span class='varid'>normalizeAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-183"></a>      <span class='varid'>normalizeAttr</span> <span class='varid'>att</span>
-<a name="line-184"></a>	  <span class='keyglyph'>=</span> <span class='varid'>normalizeAttrValue</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>attDescr</span>
-<a name="line-185"></a>				<span class='keyword'>then</span> <span class='conid'>Nothing</span>
-<a name="line-186"></a>				<span class='keyword'>else</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>attDescr</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>att</span>
-<a name="line-187"></a>	    <span class='keyword'>where</span>
-<a name="line-188"></a>	    <span class='varid'>attDescr</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-&gt;</span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>nameOf</span> <span class='varid'>att</span><span class='layout'>)</span> <span class='varid'>declaredAtts</span>
-<a name="line-189"></a>
-<a name="line-190"></a>      <span class='varid'>normalizeAttrValue</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-191"></a>      <span class='varid'>normalizeAttrValue</span> <span class='varid'>descr</span>
-<a name="line-192"></a>	  <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>modifyText</span> <span class='layout'>(</span><span class='varid'>normalizeAttributeValue</span> <span class='varid'>descr</span><span class='layout'>)</span> <span class='varop'>$$</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>xmlTreesToText</span><span class='layout'>)</span>
-<a name="line-193"></a>
-<a name="line-194"></a><span class='definition'>normalizeAttributeValues</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-195"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"normalizeAttributeValues: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-196"></a>
-<a name="line-197"></a>
-<a name="line-198"></a>
-<a name="line-199"></a><span class='comment'>-- |</span>
-<a name="line-200"></a><span class='comment'>-- Set default attribute values if they are not set.</span>
-<a name="line-201"></a><span class='comment'>--</span>
-<a name="line-202"></a><span class='comment'>--    * returns : a function which takes an element (XTag), adds missing attribute</span>
-<a name="line-203"></a><span class='comment'>--                  defaults and returns the changed element</span>
-<a name="line-204"></a>
-<a name="line-205"></a><a name="setDefaultAttributeValues"></a><span class='definition'>setDefaultAttributeValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-206"></a><span class='definition'>setDefaultAttributeValues</span> <span class='varid'>elemDescr</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>dtdPart</span>
-<a name="line-207"></a>    <span class='keyglyph'>=</span> <span class='varid'>seqF</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>setDefault</span> <span class='varid'>defaultAtts</span><span class='layout'>)</span>
-<a name="line-208"></a>      <span class='keyword'>where</span>
-<a name="line-209"></a>						<span class='comment'>-- select the element name from the dtd</span>
-<a name="line-210"></a>      <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>
-<a name="line-211"></a>
-<a name="line-212"></a>      <span class='varid'>defaultAtts</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isFixedAttrKind</span>		<span class='comment'>-- select attributes with default values</span>
-<a name="line-213"></a>		      <span class='varop'>`orElse`</span>
-<a name="line-214"></a>		      <span class='varid'>isDefaultAttrKind</span>
-<a name="line-215"></a>		    <span class='layout'>)</span>
-<a name="line-216"></a>                    <span class='varop'>$$</span>
-<a name="line-217"></a>		    <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>
-<a name="line-218"></a>
-<a name="line-219"></a>      <span class='varid'>setDefault</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-220"></a>      <span class='varid'>setDefault</span> <span class='varid'>attrDescr</span>			<span class='comment'>-- add the default attributes</span>
-<a name="line-221"></a>	  <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttr</span> <span class='varid'>attName</span> <span class='varid'>defaultValue</span>	<span class='comment'>-- to tag nodes with missing attributes</span>
-<a name="line-222"></a>	      <span class='varop'>`whenNot`</span>
-<a name="line-223"></a>	      <span class='varid'>hasAttr</span> <span class='varid'>attName</span>
-<a name="line-224"></a>	    <span class='layout'>)</span>
-<a name="line-225"></a>	    <span class='varop'>`when`</span>
-<a name="line-226"></a>	    <span class='varid'>isXTag</span>
-<a name="line-227"></a>	    <span class='keyword'>where</span>
-<a name="line-228"></a>	    <span class='varid'>attName</span>      <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span>   <span class='varid'>attrDescr</span>
-<a name="line-229"></a>	    <span class='varid'>defaultValue</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_default</span> <span class='varid'>attrDescr</span>
-<a name="line-230"></a>
-<a name="line-231"></a>
-<a name="line-232"></a><span class='definition'>setDefaultAttributeValues</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-233"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"setDefaultAttributeValues: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-234"></a>
-<a name="line-235"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-DocValidation.html b/doc/hdoc/src/Text-XML-HXT-Validator-DocValidation.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-DocValidation.html
+++ /dev/null
@@ -1,548 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating XML Documents represented as</span>
-<a name="line-3"></a><span class='comment'>-- XmlTree.</span>
-<a name="line-4"></a>
-<a name="line-5"></a><span class='comment'>-- Unlike other popular XML validation tools the validation process returns</span>
-<a name="line-6"></a><span class='comment'>-- a list of errors instead of aborting after the first error was found.</span>
-<a name="line-7"></a>
-<a name="line-8"></a>
-<a name="line-9"></a><span class='comment'>-- Before the document is validated, a lookup-table is build on the basis of</span>
-<a name="line-10"></a><span class='comment'>-- the DTD which maps element names to their validation functions.</span>
-<a name="line-11"></a><span class='comment'>-- After this initialization phase the whole document is traversed in preorder</span>
-<a name="line-12"></a><span class='comment'>-- and every element is validated by the XmlFilter from the lookup-table.</span>
-<a name="line-13"></a>
-<a name="line-14"></a><span class='comment'>-- Special namings in source code:</span>
-<a name="line-15"></a><span class='comment'>--</span>
-<a name="line-16"></a><span class='comment'>--  - nd - XDTD node</span>
-<a name="line-17"></a><span class='comment'>--</span>
-<a name="line-18"></a><span class='comment'>--  - n  - XTag node</span>
-<a name="line-19"></a><span class='comment'>--</span>
-<a name="line-20"></a><span class='comment'>-- Author : .\\artin Schmidt</span>
-<a name="line-21"></a><span class='comment'>-- Version : $Id: DocValidation.hs,v 1.1 2004/09/02 19:12:03 hxml Exp $</span>
-<a name="line-22"></a>
-<a name="line-23"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocValidation</span>
-<a name="line-24"></a>    <span class='layout'>(</span> <span class='varid'>validateDoc</span>
-<a name="line-25"></a>    <span class='layout'>)</span>
-<a name="line-26"></a><span class='keyword'>where</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>XmlRE</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='comment'>-- |</span>
-<a name="line-36"></a><span class='comment'>-- Lookup-table which maps element names to their validation functions. The</span>
-<a name="line-37"></a><span class='comment'>-- validation functions are XmlFilters.</span>
-<a name="line-38"></a>
-<a name="line-39"></a><a name="ValiEnvTable"></a><span class='keyword'>type</span> <span class='conid'>ValiEnvTable</span>	<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>ValiEnv</span><span class='keyglyph'>]</span>
-<a name="line-40"></a><a name="ValiEnv"></a><span class='keyword'>type</span> <span class='conid'>ValiEnv</span> 		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>ElemName</span><span class='layout'>,</span> <span class='conid'>ValFct</span><span class='layout'>)</span>
-<a name="line-41"></a><a name="ElemName"></a><span class='keyword'>type</span> <span class='conid'>ElemName</span>		<span class='keyglyph'>=</span> <span class='conid'>String</span>
-<a name="line-42"></a><a name="ValFct"></a><span class='keyword'>type</span> <span class='conid'>ValFct</span>		<span class='keyglyph'>=</span> <span class='conid'>XmlFilter</span>
-<a name="line-43"></a>
-<a name="line-44"></a>
-<a name="line-45"></a>
-<a name="line-46"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-47"></a>
-<a name="line-48"></a>
-<a name="line-49"></a><span class='comment'>-- |</span>
-<a name="line-50"></a><span class='comment'>-- Validate a document.</span>
-<a name="line-51"></a><span class='comment'>--</span>
-<a name="line-52"></a><span class='comment'>--    * 1.parameter dtdPart :  the DTD subset (Node @DOCTYPE@) of the XmlTree</span>
-<a name="line-53"></a><span class='comment'>--</span>
-<a name="line-54"></a><span class='comment'>--    - 2.parameter doc :  the document subset of the XmlTree</span>
-<a name="line-55"></a><span class='comment'>--</span>
-<a name="line-56"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-57"></a>
-<a name="line-58"></a><a name="validateDoc"></a><span class='definition'>validateDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-59"></a><span class='definition'>validateDoc</span> <span class='varid'>dtdPart</span> <span class='varid'>doc</span>
-<a name="line-60"></a>    <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>valTable</span> <span class='varid'>doc</span>
-<a name="line-61"></a>    <span class='keyword'>where</span>
-<a name="line-62"></a>    <span class='varid'>valTable</span> <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "buildAllValFcts" #-}</span> <span class='varid'>buildAllValidationFunctions</span> <span class='varid'>dtdPart</span>
-<a name="line-63"></a>
-<a name="line-64"></a>
-<a name="line-65"></a><span class='comment'>-- |</span>
-<a name="line-66"></a><span class='comment'>-- Traverse the XmlTree in preorder.</span>
-<a name="line-67"></a><span class='comment'>--</span>
-<a name="line-68"></a><span class='comment'>--    * 1.parameter valiEnv :  lookup-table which maps element names to their validation functions</span>
-<a name="line-69"></a><span class='comment'>--</span>
-<a name="line-70"></a><span class='comment'>--    - returns : list of errors</span>
-<a name="line-71"></a>
-<a name="line-72"></a><a name="traverseTree"></a><span class='definition'>traverseTree</span> <span class='keyglyph'>::</span> <span class='conid'>ValiEnvTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-73"></a><span class='definition'>traverseTree</span> <span class='varid'>valiEnv</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-74"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>valFct</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>traverseTree</span> <span class='varid'>valiEnv</span><span class='layout'>)</span> <span class='varid'>cs</span>
-<a name="line-75"></a>      <span class='keyword'>where</span>
-<a name="line-76"></a>      <span class='varid'>valFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-77"></a>      <span class='varid'>valFct</span>
-<a name="line-78"></a>          <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>valiEnv</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-79"></a>	    <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" not declared in DTD."</span><span class='layout'>)</span>
-<a name="line-80"></a>	    <span class='conid'>Just</span> <span class='varid'>f</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>f</span>
-<a name="line-81"></a>
-<a name="line-82"></a><span class='definition'>traverseTree</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-83"></a>
-<a name="line-84"></a>
-<a name="line-85"></a>
-<a name="line-86"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-87"></a>
-<a name="line-88"></a>
-<a name="line-89"></a><span class='comment'>-- |</span>
-<a name="line-90"></a><span class='comment'>-- Build all validation functions.</span>
-<a name="line-91"></a><span class='comment'>--</span>
-<a name="line-92"></a><span class='comment'>--    * 1.parameter dtdPart :  DTD subset, root node should be of type @DOCTYPE@</span>
-<a name="line-93"></a><span class='comment'>--</span>
-<a name="line-94"></a><span class='comment'>--    - returns : lookup-table which maps element names to their validation functions</span>
-<a name="line-95"></a>
-<a name="line-96"></a><a name="buildAllValidationFunctions"></a><span class='definition'>buildAllValidationFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>ValiEnvTable</span>
-<a name="line-97"></a><span class='definition'>buildAllValidationFunctions</span> <span class='varid'>dtdPart</span>
-<a name="line-98"></a>    <span class='keyglyph'>=</span> <span class='varid'>buildValidateRoot</span> <span class='varid'>dtdPart</span>
-<a name="line-99"></a>      <span class='conop'>:</span>
-<a name="line-100"></a>      <span class='comment'>-- construct a list of validation filters for all element declarations</span>
-<a name="line-101"></a>      <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>buildValidateFunctions</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span>
-<a name="line-102"></a>      <span class='keyword'>where</span>
-<a name="line-103"></a>      <span class='varid'>dtdNodes</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>
-<a name="line-104"></a>
-<a name="line-105"></a>
-<a name="line-106"></a><span class='comment'>-- |</span>
-<a name="line-107"></a><span class='comment'>-- Build a validation function for the document root. By root node @\/@</span>
-<a name="line-108"></a><span class='comment'>-- is meant, which is the topmost dummy created by the parser.</span>
-<a name="line-109"></a><span class='comment'>--</span>
-<a name="line-110"></a><span class='comment'>--    * 1.parameter dtdPart :  DTD subset, root node should be of type @DOCTYPE@</span>
-<a name="line-111"></a><span class='comment'>--</span>
-<a name="line-112"></a><span class='comment'>--    - returns : entry for the lookup-table</span>
-<a name="line-113"></a>
-<a name="line-114"></a><a name="buildValidateRoot"></a><span class='definition'>buildValidateRoot</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>ValiEnv</span>
-<a name="line-115"></a><span class='definition'>buildValidateRoot</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-116"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>t_root</span><span class='layout'>,</span> <span class='varid'>valFct</span><span class='layout'>)</span>
-<a name="line-117"></a>      <span class='keyword'>where</span>
-<a name="line-118"></a>      <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-119"></a>
-<a name="line-120"></a>      <span class='varid'>valFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-121"></a>      <span class='varid'>valFct</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-122"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>
-<a name="line-123"></a>            <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-124"></a>            <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Root Element must be "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>". "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>nd</span>
-<a name="line-125"></a>	    <span class='keyword'>where</span>
-<a name="line-126"></a>	    <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_sym</span> <span class='layout'>(</span><span class='varid'>name</span><span class='layout'>)</span>
-<a name="line-127"></a>	    <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-128"></a>
-<a name="line-129"></a>      <span class='varid'>valFct</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildValidateRoot: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-130"></a>
-<a name="line-131"></a><span class='definition'>buildValidateRoot</span> <span class='varid'>nd</span>
-<a name="line-132"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildValidateRoot: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-133"></a>
-<a name="line-134"></a>
-<a name="line-135"></a><span class='comment'>-- |</span>
-<a name="line-136"></a><span class='comment'>-- Build validation functions for an element.</span>
-<a name="line-137"></a><span class='comment'>--</span>
-<a name="line-138"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-139"></a><span class='comment'>--</span>
-<a name="line-140"></a><span class='comment'>--    - 2.parameter nd :  element declaration for which the validation functions are</span>
-<a name="line-141"></a><span class='comment'>--                   created</span>
-<a name="line-142"></a><span class='comment'>--</span>
-<a name="line-143"></a><span class='comment'>--    - returns : entry for the lookup-table</span>
-<a name="line-144"></a>
-<a name="line-145"></a><a name="buildValidateFunctions"></a><span class='definition'>buildValidateFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>ValiEnv</span>
-<a name="line-146"></a>
-<a name="line-147"></a><span class='definition'>buildValidateFunctions</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-148"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>elemName</span><span class='layout'>,</span> <span class='varid'>valFct</span><span class='layout'>)</span>
-<a name="line-149"></a>      <span class='keyword'>where</span>
-<a name="line-150"></a>      <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-151"></a>
-<a name="line-152"></a>      <span class='varid'>valFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-153"></a>      <span class='varid'>valFct</span> <span class='keyglyph'>=</span> <span class='varid'>buildContentValidation</span> <span class='varid'>nd</span>
-<a name="line-154"></a>               <span class='varop'>+++</span>
-<a name="line-155"></a>	       <span class='varid'>buildAttributeValidation</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span>
-<a name="line-156"></a>
-<a name="line-157"></a><span class='definition'>buildValidateFunctions</span> <span class='keyword'>_</span> <span class='varid'>nd</span>
-<a name="line-158"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildValidateFunctions: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-159"></a>
-<a name="line-160"></a>
-<a name="line-161"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-162"></a>
-<a name="line-163"></a>
-<a name="line-164"></a><span class='comment'>-- |</span>
-<a name="line-165"></a><span class='comment'>-- Build validation functions for the content model of an element.</span>
-<a name="line-166"></a><span class='comment'>-- Validity constraint: Element Valid (3 \/ p.18 in Spec)</span>
-<a name="line-167"></a><span class='comment'>--</span>
-<a name="line-168"></a><span class='comment'>--    * 1.parameter nd :  element declaration for which the content validation functions</span>
-<a name="line-169"></a><span class='comment'>--                  are built</span>
-<a name="line-170"></a><span class='comment'>--</span>
-<a name="line-171"></a><span class='comment'>--    - returns : a function which takes an element (XTag), checks if its</span>
-<a name="line-172"></a><span class='comment'>--                  children match its content model and returns a list of errors</span>
-<a name="line-173"></a>
-<a name="line-174"></a><a name="buildContentValidation"></a><span class='definition'>buildContentValidation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-175"></a><span class='definition'>buildContentValidation</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-176"></a>    <span class='keyglyph'>=</span> <span class='varid'>contentValidation</span> <span class='varid'>attrType</span> <span class='varid'>nd</span>
-<a name="line-177"></a>      <span class='keyword'>where</span>
-<a name="line-178"></a>      <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>
-<a name="line-179"></a>
-<a name="line-180"></a>
-<a name="line-181"></a>      <span class='comment'>-- Delegates construction of the validation function on the basis of the</span>
-<a name="line-182"></a>      <span class='comment'>-- content model type</span>
-<a name="line-183"></a>      <span class='varid'>contentValidation</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-184"></a>      <span class='varid'>contentValidation</span> <span class='varid'>typ</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-185"></a>          <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_pcdata</span>   <span class='keyglyph'>=</span> <span class='varid'>contentValidationPcdata</span>
-<a name="line-186"></a>          <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_empty</span>    <span class='keyglyph'>=</span> <span class='varid'>contentValidationEmpty</span>
-<a name="line-187"></a>          <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_any</span>      <span class='keyglyph'>=</span> <span class='varid'>contentValidationAny</span>
-<a name="line-188"></a>          <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>v_children</span> <span class='keyglyph'>=</span> <span class='varid'>contentValidationChildren</span> <span class='varid'>cs</span>
-<a name="line-189"></a>          <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span>    <span class='keyglyph'>=</span> <span class='varid'>contentValidationMixed</span> <span class='varid'>cs</span>
-<a name="line-190"></a>          <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>         <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidation: unknown type: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>typ</span><span class='layout'>)</span>
-<a name="line-191"></a>
-<a name="line-192"></a>      <span class='varid'>contentValidation</span> <span class='keyword'>_</span> <span class='varid'>nd'</span>
-<a name="line-193"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd'</span><span class='layout'>)</span>
-<a name="line-194"></a>
-<a name="line-195"></a>
-<a name="line-196"></a>      <span class='comment'>-- Checks #PCDATA content models</span>
-<a name="line-197"></a>      <span class='varid'>contentValidationPcdata</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-198"></a>      <span class='varid'>contentValidationPcdata</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-199"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>
-<a name="line-200"></a>            <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-201"></a>            <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-202"></a>	              <span class='str'>" must match (#PCDATA). "</span><span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-203"></a>	    <span class='keyword'>where</span>
-<a name="line-204"></a>	    <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_rep</span> <span class='layout'>(</span><span class='varid'>re_sym</span> <span class='varid'>k_pcdata</span><span class='layout'>)</span>
-<a name="line-205"></a>	    <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-206"></a>
-<a name="line-207"></a>      <span class='varid'>contentValidationPcdata</span> <span class='varid'>n</span>
-<a name="line-208"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationPcdata: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-209"></a>
-<a name="line-210"></a>
-<a name="line-211"></a>      <span class='comment'>-- Checks EMPTY content models</span>
-<a name="line-212"></a>      <span class='varid'>contentValidationEmpty</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-213"></a>      <span class='varid'>contentValidationEmpty</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-214"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>
-<a name="line-215"></a>            <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-216"></a>            <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-217"></a>	              <span class='str'>" must match EMPTY. "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-218"></a>	    <span class='keyword'>where</span>
-<a name="line-219"></a>	    <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_unit</span>
-<a name="line-220"></a>	    <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-221"></a>
-<a name="line-222"></a>      <span class='varid'>contentValidationEmpty</span> <span class='varid'>n</span>
-<a name="line-223"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationEmpty: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-224"></a>
-<a name="line-225"></a>
-<a name="line-226"></a>      <span class='comment'>-- Checks ANY content models</span>
-<a name="line-227"></a>      <span class='varid'>contentValidationAny</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-228"></a>      <span class='varid'>contentValidationAny</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-229"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>
-<a name="line-230"></a>            <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-231"></a>            <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-232"></a>	              <span class='str'>" must match ANY. "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-233"></a>	    <span class='keyword'>where</span>
-<a name="line-234"></a>	    <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_rep</span> <span class='layout'>(</span><span class='varid'>re_dot</span><span class='layout'>)</span>
-<a name="line-235"></a>	    <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-236"></a>
-<a name="line-237"></a>      <span class='varid'>contentValidationAny</span> <span class='varid'>n</span>
-<a name="line-238"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationAny: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-239"></a>
-<a name="line-240"></a>
-<a name="line-241"></a>      <span class='comment'>-- Checks "children" content models</span>
-<a name="line-242"></a>      <span class='varid'>contentValidationChildren</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-243"></a>      <span class='varid'>contentValidationChildren</span> <span class='varid'>cm</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-244"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>
-<a name="line-245"></a>            <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-246"></a>            <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-247"></a>	              <span class='str'>" must match "</span> <span class='varop'>++</span> <span class='varid'>printRE</span> <span class='varid'>re</span> <span class='varop'>++</span> <span class='str'>". "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-248"></a>	    <span class='keyword'>where</span>
-<a name="line-249"></a>	    <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>createRE</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cm</span><span class='layout'>)</span>
-<a name="line-250"></a>	    <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-251"></a>
-<a name="line-252"></a>      <span class='varid'>contentValidationChildren</span> <span class='keyword'>_</span> <span class='varid'>n</span>
-<a name="line-253"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationChildren: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-254"></a>
-<a name="line-255"></a>
-<a name="line-256"></a>      <span class='comment'>-- Checks "mixed content" content models</span>
-<a name="line-257"></a>      <span class='varid'>contentValidationMixed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-258"></a>      <span class='varid'>contentValidationMixed</span> <span class='varid'>cm</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-259"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>
-<a name="line-260"></a>            <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-261"></a>            <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-262"></a>	              <span class='str'>" must match "</span> <span class='varop'>++</span> <span class='varid'>printRE</span> <span class='varid'>re</span> <span class='varop'>++</span> <span class='str'>". "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-263"></a>	    <span class='keyword'>where</span>
-<a name="line-264"></a>	    <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_rep</span> <span class='layout'>(</span><span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>re_sym</span> <span class='varid'>k_pcdata</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>createRE</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cm</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-265"></a>	    <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-266"></a>
-<a name="line-267"></a>      <span class='varid'>contentValidationMixed</span> <span class='keyword'>_</span> <span class='varid'>n</span>
-<a name="line-268"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationMixed: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-269"></a>
-<a name="line-270"></a>
-<a name="line-271"></a><span class='definition'>buildContentValidation</span> <span class='varid'>nd</span>
-<a name="line-272"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildContentValidation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-273"></a>
-<a name="line-274"></a>
-<a name="line-275"></a>
-<a name="line-276"></a><span class='comment'>-- |</span>
-<a name="line-277"></a><span class='comment'>-- Build a regular expression from the content model. The regular expression</span>
-<a name="line-278"></a><span class='comment'>-- is provided by the module XmlRE.</span>
-<a name="line-279"></a><span class='comment'>--</span>
-<a name="line-280"></a><span class='comment'>--    * 1.parameter nd :  node of the content model. Expected: @CONTENT@ or</span>
-<a name="line-281"></a><span class='comment'>--              @NAME@</span>
-<a name="line-282"></a><span class='comment'>--</span>
-<a name="line-283"></a><span class='comment'>--    - returns : regular expression of the content model</span>
-<a name="line-284"></a>
-<a name="line-285"></a><a name="createRE"></a><span class='definition'>createRE</span> <span class='keyglyph'>::</span>  <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='conid'>String</span>
-<a name="line-286"></a><span class='definition'>createRE</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>CONTENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-287"></a>    <span class='keyglyph'>=</span> <span class='varid'>processModifier</span> <span class='varid'>modifier</span>
-<a name="line-288"></a>      <span class='keyword'>where</span>
-<a name="line-289"></a>      <span class='varid'>modifier</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_modifier</span> <span class='varid'>al</span>
-<a name="line-290"></a>      <span class='varid'>kind</span>     <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span>
-<a name="line-291"></a>
-<a name="line-292"></a>      <span class='varid'>processModifier</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='conid'>String</span>
-<a name="line-293"></a>      <span class='varid'>processModifier</span> <span class='varid'>m</span>
-<a name="line-294"></a>          <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_plus</span>	  <span class='keyglyph'>=</span> <span class='varid'>re_plus</span> <span class='layout'>(</span><span class='varid'>processKind</span> <span class='varid'>kind</span><span class='layout'>)</span>
-<a name="line-295"></a>	  <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_star</span>	  <span class='keyglyph'>=</span> <span class='varid'>re_rep</span>  <span class='layout'>(</span><span class='varid'>processKind</span> <span class='varid'>kind</span><span class='layout'>)</span>
-<a name="line-296"></a>	  <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_option</span> <span class='keyglyph'>=</span> <span class='varid'>re_opt</span>  <span class='layout'>(</span><span class='varid'>processKind</span> <span class='varid'>kind</span><span class='layout'>)</span>
-<a name="line-297"></a>	  <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_null</span>	  <span class='keyglyph'>=</span> <span class='varid'>processKind</span> <span class='varid'>kind</span>
-<a name="line-298"></a>	  <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>     <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"Unknown modifier: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>m</span><span class='layout'>)</span>
-<a name="line-299"></a>
-<a name="line-300"></a>      <span class='varid'>processKind</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='conid'>String</span>
-<a name="line-301"></a>      <span class='varid'>processKind</span> <span class='varid'>k</span>
-<a name="line-302"></a>          <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>v_seq</span>	  <span class='keyglyph'>=</span> <span class='varid'>makeSequence</span> <span class='varid'>cs</span>
-<a name="line-303"></a>	  <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>v_choice</span> <span class='keyglyph'>=</span> <span class='varid'>makeChoice</span> <span class='varid'>cs</span>
-<a name="line-304"></a>	  <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	  <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"Unknown kind: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>k</span><span class='layout'>)</span>
-<a name="line-305"></a>
-<a name="line-306"></a>      <span class='varid'>makeSequence</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='conid'>String</span>
-<a name="line-307"></a>      <span class='varid'>makeSequence</span> <span class='conid'>[]</span>     <span class='keyglyph'>=</span> <span class='varid'>re_unit</span>
-<a name="line-308"></a>      <span class='varid'>makeSequence</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>createRE</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>makeSequence</span> <span class='varid'>xs</span><span class='layout'>)</span>
-<a name="line-309"></a>
-<a name="line-310"></a>      <span class='varid'>makeChoice</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='conid'>String</span>
-<a name="line-311"></a>      <span class='varid'>makeChoice</span> <span class='conid'>[]</span>       <span class='keyglyph'>=</span> <span class='varid'>re_zero</span> <span class='str'>""</span>
-<a name="line-312"></a>      <span class='varid'>makeChoice</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>   <span class='keyglyph'>=</span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>createRE</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>makeChoice</span> <span class='varid'>xs</span><span class='layout'>)</span>
-<a name="line-313"></a>
-<a name="line-314"></a><span class='definition'>createRE</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-315"></a>    <span class='keyglyph'>=</span> <span class='varid'>re_sym</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span><span class='layout'>)</span>
-<a name="line-316"></a>
-<a name="line-317"></a><span class='definition'>createRE</span> <span class='varid'>nd</span>
-<a name="line-318"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"createRE: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-319"></a>
-<a name="line-320"></a>
-<a name="line-321"></a>
-<a name="line-322"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-323"></a>
-<a name="line-324"></a>
-<a name="line-325"></a>
-<a name="line-326"></a><span class='comment'>-- |</span>
-<a name="line-327"></a><span class='comment'>-- Build validation functions for the attributes of an element.</span>
-<a name="line-328"></a><span class='comment'>--</span>
-<a name="line-329"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-330"></a><span class='comment'>--</span>
-<a name="line-331"></a><span class='comment'>--    - 2.parameter nd :  element declaration for which the attribute validation functions</span>
-<a name="line-332"></a><span class='comment'>--                  are created</span>
-<a name="line-333"></a><span class='comment'>--</span>
-<a name="line-334"></a><span class='comment'>--    - returns : a function which takes an element (XTag), checks if its</span>
-<a name="line-335"></a><span class='comment'>--                  attributes are valid and returns a list of errors</span>
-<a name="line-336"></a>
-<a name="line-337"></a><a name="buildAttributeValidation"></a><span class='definition'>buildAttributeValidation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-338"></a><span class='definition'>buildAttributeValidation</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span> <span class='keyglyph'>=</span>
-<a name="line-339"></a>    <span class='varid'>noDoublicateAttributes</span>
-<a name="line-340"></a>    <span class='varop'>+++</span>
-<a name="line-341"></a>    <span class='varid'>checkNotDeclardAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>nd</span>
-<a name="line-342"></a>    <span class='varop'>+++</span>
-<a name="line-343"></a>    <span class='varid'>checkRequiredAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>nd</span>
-<a name="line-344"></a>    <span class='varop'>+++</span>
-<a name="line-345"></a>    <span class='varid'>checkFixedAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>nd</span>
-<a name="line-346"></a>    <span class='varop'>+++</span>
-<a name="line-347"></a>    <span class='varid'>checkValuesOfAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span>
-<a name="line-348"></a>    <span class='keyword'>where</span>
-<a name="line-349"></a>    <span class='varid'>attrDecls</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlist</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-350"></a>
-<a name="line-351"></a>
-<a name="line-352"></a><span class='comment'>-- |</span>
-<a name="line-353"></a><span class='comment'>-- Validate that all attributes of an element are unique.</span>
-<a name="line-354"></a><span class='comment'>-- Well-formdness constraint: Unique AttSpec (3.1 \/ p.19 in Spec)</span>
-<a name="line-355"></a><span class='comment'>--</span>
-<a name="line-356"></a><span class='comment'>--    - returns : a function which takes an element (XTag), checks if its</span>
-<a name="line-357"></a><span class='comment'>--                  attributes are unique and returns a list of errors</span>
-<a name="line-358"></a>
-<a name="line-359"></a><a name="noDoublicateAttributes"></a><span class='definition'>noDoublicateAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-360"></a><span class='definition'>noDoublicateAttributes</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-361"></a>    <span class='keyglyph'>=</span> <span class='varid'>doubles</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>$</span> <span class='varid'>names</span>
-<a name="line-362"></a>      <span class='keyword'>where</span>
-<a name="line-363"></a>      <span class='varid'>tagname</span> <span class='keyglyph'>=</span> <span class='varid'>nameOf</span> <span class='varid'>n</span>
-<a name="line-364"></a>      <span class='varid'>names</span>   <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>nameOf</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>n</span>
-<a name="line-365"></a>
-<a name="line-366"></a>      <span class='varid'>doubles</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-367"></a>      <span class='varid'>doubles</span> <span class='conid'>[]</span>
-<a name="line-368"></a>	  <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-369"></a>      <span class='varid'>doubles</span> <span class='layout'>(</span><span class='varid'>n1</span><span class='conop'>:</span><span class='varid'>ns</span><span class='layout'>)</span>
-<a name="line-370"></a>	  <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>n1</span> <span class='varop'>`elem`</span> <span class='varid'>ns</span>
-<a name="line-371"></a>	      <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span> <span class='varop'>++</span> <span class='str'>" was already specified for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>tagname</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-372"></a>	      <span class='keyword'>else</span> <span class='conid'>[]</span>
-<a name="line-373"></a>	    <span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>doubles</span> <span class='varid'>ns</span>
-<a name="line-374"></a>
-<a name="line-375"></a><span class='definition'>noDoublicateAttributes</span> <span class='varid'>n</span>
-<a name="line-376"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"noDoublicateAttributes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-377"></a>
-<a name="line-378"></a>
-<a name="line-379"></a><span class='comment'>-- |</span>
-<a name="line-380"></a><span class='comment'>-- Validate that all \#REQUIRED attributes are provided.</span>
-<a name="line-381"></a><span class='comment'>-- Validity constraint: Required Attributes (3.3.2 \/ p.28 in Spec)</span>
-<a name="line-382"></a><span class='comment'>--</span>
-<a name="line-383"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-384"></a><span class='comment'>--</span>
-<a name="line-385"></a><span class='comment'>--    - 2.parameter nd :  element declaration which attributes have to be checked</span>
-<a name="line-386"></a><span class='comment'>--</span>
-<a name="line-387"></a><span class='comment'>--    - returns : a function which takes an element (XTag), checks if all</span>
-<a name="line-388"></a><span class='comment'>--                  required attributes are provided and returns a list of errors</span>
-<a name="line-389"></a>
-<a name="line-390"></a><a name="checkRequiredAttributes"></a><span class='definition'>checkRequiredAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-391"></a><span class='definition'>checkRequiredAttributes</span> <span class='varid'>attrDecls</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-392"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkRequired</span> <span class='varid'>requiredAtts</span>
-<a name="line-393"></a>      <span class='keyword'>where</span>
-<a name="line-394"></a>      <span class='varid'>elemName</span>     <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-395"></a>      <span class='varid'>requiredAtts</span> <span class='keyglyph'>=</span> <span class='varid'>isRequiredAttrKind</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span><span class='layout'>)</span>
-<a name="line-396"></a>
-<a name="line-397"></a>
-<a name="line-398"></a>      <span class='varid'>checkRequired</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-399"></a>      <span class='varid'>checkRequired</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-400"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasAttr</span> <span class='varid'>attName</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-401"></a>	    <span class='keyword'>then</span> <span class='varid'>checkRequired</span> <span class='varid'>xs</span> <span class='varid'>n</span>
-<a name="line-402"></a>	    <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attName</span> <span class='varop'>++</span> <span class='str'>" must be declared for element type "</span> <span class='varop'>++</span>
-<a name="line-403"></a>	             <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-404"></a>	         <span class='varop'>++</span>
-<a name="line-405"></a>		 <span class='varid'>checkRequired</span> <span class='varid'>xs</span> <span class='varid'>n</span>
-<a name="line-406"></a>	    <span class='keyword'>where</span>
-<a name="line-407"></a>	    <span class='varid'>attName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span>
-<a name="line-408"></a>
-<a name="line-409"></a>      <span class='varid'>checkRequired</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-410"></a>
-<a name="line-411"></a>      <span class='varid'>checkRequired</span> <span class='varid'>nd</span> <span class='varid'>n</span>
-<a name="line-412"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkRequired: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-413"></a>
-<a name="line-414"></a>
-<a name="line-415"></a><span class='definition'>checkRequiredAttributes</span> <span class='keyword'>_</span> <span class='varid'>nd</span>
-<a name="line-416"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkRequiredAttributes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-417"></a>
-<a name="line-418"></a>
-<a name="line-419"></a>
-<a name="line-420"></a><span class='comment'>-- |</span>
-<a name="line-421"></a><span class='comment'>-- Validate that \#FIXED attributes match the default value.</span>
-<a name="line-422"></a><span class='comment'>-- Validity constraint: Fixed Attribute Default (3.3.2 \/ p.28 in Spec)</span>
-<a name="line-423"></a><span class='comment'>--</span>
-<a name="line-424"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-425"></a><span class='comment'>--</span>
-<a name="line-426"></a><span class='comment'>--    - 2.parameter nd :  element declaration which attributes have to be checked</span>
-<a name="line-427"></a><span class='comment'>--</span>
-<a name="line-428"></a><span class='comment'>--    - returns : a function which takes an element (XTag), checks if all</span>
-<a name="line-429"></a><span class='comment'>--                  fixed attributes match the default value and returns a list of errors</span>
-<a name="line-430"></a>
-<a name="line-431"></a><a name="checkFixedAttributes"></a><span class='definition'>checkFixedAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-432"></a><span class='definition'>checkFixedAttributes</span> <span class='varid'>attrDecls</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-433"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkFixed</span> <span class='varid'>fixedAtts</span>
-<a name="line-434"></a>      <span class='keyword'>where</span>
-<a name="line-435"></a>      <span class='varid'>elemName</span>  <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-436"></a>      <span class='varid'>fixedAtts</span> <span class='keyglyph'>=</span> <span class='varid'>isFixedAttrKind</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span><span class='layout'>)</span>
-<a name="line-437"></a>
-<a name="line-438"></a>
-<a name="line-439"></a>      <span class='varid'>checkFixed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-440"></a>      <span class='varid'>checkFixed</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-441"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasAttr</span> <span class='varid'>attName</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-442"></a>	    <span class='keyword'>then</span> <span class='keyword'>if</span> <span class='varid'>attValue</span> <span class='varop'>==</span> <span class='varid'>fixedValue</span>
-<a name="line-443"></a>	         <span class='keyword'>then</span> <span class='varid'>checkFixed</span> <span class='varid'>xs</span> <span class='varid'>n</span>
-<a name="line-444"></a>	         <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attName</span> <span class='varop'>++</span> <span class='str'>" of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-445"></a>		           <span class='str'>" with value "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attValue</span> <span class='varop'>++</span> <span class='str'>" must have a value of "</span> <span class='varop'>++</span>
-<a name="line-446"></a>			   <span class='varid'>show</span> <span class='varid'>fixedValue</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-447"></a>	              <span class='varop'>++</span>
-<a name="line-448"></a>		      <span class='varid'>checkFixed</span> <span class='varid'>xs</span> <span class='varid'>n</span>
-<a name="line-449"></a>	    <span class='keyword'>else</span> <span class='varid'>checkFixed</span> <span class='varid'>xs</span> <span class='varid'>n</span>
-<a name="line-450"></a>	    <span class='keyword'>where</span>
-<a name="line-451"></a>	    <span class='varid'>attName</span>    <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span>
-<a name="line-452"></a>	    <span class='varid'>fixedValue</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_default</span> <span class='varid'>al'</span><span class='layout'>)</span>
-<a name="line-453"></a>	    <span class='varid'>attValue</span>   <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>attName</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-454"></a>
-<a name="line-455"></a>      <span class='varid'>checkFixed</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-456"></a>
-<a name="line-457"></a>      <span class='varid'>checkFixed</span> <span class='varid'>nd</span> <span class='varid'>n</span>
-<a name="line-458"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkFixed: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-459"></a>
-<a name="line-460"></a>
-<a name="line-461"></a><span class='definition'>checkFixedAttributes</span> <span class='keyword'>_</span> <span class='varid'>nd</span>
-<a name="line-462"></a>    <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkFixedAttributes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-463"></a>
-<a name="line-464"></a>
-<a name="line-465"></a><span class='comment'>-- |</span>
-<a name="line-466"></a><span class='comment'>-- Validate that an element has no attributes which are not declared.</span>
-<a name="line-467"></a><span class='comment'>-- Validity constraint: Attribute Value Type (3.1 \/ p.19 in Spec)</span>
-<a name="line-468"></a><span class='comment'>--</span>
-<a name="line-469"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-470"></a><span class='comment'>--</span>
-<a name="line-471"></a><span class='comment'>--    - 2.parameter nd :  element declaration which attributes have to be checked</span>
-<a name="line-472"></a><span class='comment'>--</span>
-<a name="line-473"></a><span class='comment'>--    - returns : a function which takes an element (XTag), checks if all</span>
-<a name="line-474"></a><span class='comment'>--                  attributes are declared and returns a list of errors</span>
-<a name="line-475"></a>
-<a name="line-476"></a><a name="checkNotDeclardAttributes"></a><span class='definition'>checkNotDeclardAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-477"></a><span class='definition'>checkNotDeclardAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>elemDescr</span>
-<a name="line-478"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkNotDeclared</span>
-<a name="line-479"></a>      <span class='keyword'>where</span>
-<a name="line-480"></a>      <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>
-<a name="line-481"></a>      <span class='varid'>decls</span>    <span class='keyglyph'>=</span> <span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span>
-<a name="line-482"></a>
-<a name="line-483"></a>      <span class='varid'>checkNotDeclared</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-484"></a>      <span class='varid'>checkNotDeclared</span> <span class='varid'>n</span>
-<a name="line-485"></a>	  <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isXTag</span>
-<a name="line-486"></a>	      <span class='varop'>`guards`</span>
-<a name="line-487"></a>	      <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>searchForDeclaredAtt</span> <span class='varid'>elemName</span> <span class='varid'>decls</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-488"></a>	    <span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-489"></a>
-<a name="line-490"></a>      <span class='varid'>searchForDeclaredAtt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-491"></a>      <span class='varid'>searchForDeclaredAtt</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>att</span>
-<a name="line-492"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>nameOf</span> <span class='varid'>att</span>
-<a name="line-493"></a>            <span class='keyword'>then</span> <span class='varid'>none</span>
-<a name="line-494"></a>	    <span class='keyword'>else</span> <span class='varid'>searchForDeclaredAtt</span> <span class='varid'>name</span> <span class='varid'>xs</span> <span class='varid'>att</span>
-<a name="line-495"></a>
-<a name="line-496"></a>      <span class='varid'>searchForDeclaredAtt</span> <span class='varid'>name</span> <span class='conid'>[]</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>attrName</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-497"></a>          <span class='keyglyph'>=</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>attrName</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" is not declared in DTD."</span><span class='layout'>)</span>
-<a name="line-498"></a>
-<a name="line-499"></a>      <span class='varid'>searchForDeclaredAtt</span> <span class='keyword'>_</span> <span class='varid'>nd</span> <span class='varid'>a</span>
-<a name="line-500"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"searchForDeclaredAtt: illegeal paramter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>a</span><span class='layout'>)</span>
-<a name="line-501"></a>
-<a name="line-502"></a><span class='comment'>-- |</span>
-<a name="line-503"></a><span class='comment'>-- Validate that the attribute value meets the lexical constraints of its type.</span>
-<a name="line-504"></a><span class='comment'>-- Validity constaint: Attribute Value Type (3.1 \/ p.19 in Spec)</span>
-<a name="line-505"></a><span class='comment'>--</span>
-<a name="line-506"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-507"></a><span class='comment'>--</span>
-<a name="line-508"></a><span class='comment'>--    - 2.parameter nd :  element declaration which attributes have to be checked</span>
-<a name="line-509"></a><span class='comment'>--</span>
-<a name="line-510"></a><span class='comment'>--    - returns : a function which takes an element (XTag), checks if all</span>
-<a name="line-511"></a><span class='comment'>--                  attributes meet the lexical constraints and returns a list of errors</span>
-<a name="line-512"></a>
-<a name="line-513"></a><a name="checkValuesOfAttributes"></a><span class='definition'>checkValuesOfAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-514"></a><span class='definition'>checkValuesOfAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>dtdPart</span> <span class='varid'>elemDescr</span>
-<a name="line-515"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkValues</span>
-<a name="line-516"></a>      <span class='keyword'>where</span>
-<a name="line-517"></a>      <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>
-<a name="line-518"></a>      <span class='varid'>decls</span>    <span class='keyglyph'>=</span> <span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span>
-<a name="line-519"></a>
-<a name="line-520"></a>      <span class='varid'>checkValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-521"></a>      <span class='varid'>checkValues</span> <span class='varid'>n</span>
-<a name="line-522"></a>          <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isXTag</span>
-<a name="line-523"></a>	      <span class='varop'>`guards`</span>
-<a name="line-524"></a>	      <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValue</span> <span class='varid'>decls</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-525"></a>	    <span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-526"></a>
-<a name="line-527"></a>      <span class='varid'>checkValue</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-528"></a>      <span class='varid'>checkValue</span> <span class='layout'>(</span><span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>att</span>
-<a name="line-529"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>nameOf</span> <span class='varid'>att</span>
-<a name="line-530"></a>            <span class='keyword'>then</span> <span class='varid'>checkAttributeValue</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span>
-<a name="line-531"></a>	    <span class='keyword'>else</span> <span class='varid'>checkValue</span> <span class='varid'>xs</span> <span class='varid'>att</span>
-<a name="line-532"></a>
-<a name="line-533"></a>      <span class='varid'>checkValue</span> <span class='conid'>[]</span> <span class='keyword'>_</span>
-<a name="line-534"></a>          <span class='keyglyph'>=</span> <span class='varid'>none</span>  <span class='comment'>-- undeclared attribute, reported by separate function</span>
-<a name="line-535"></a>
-<a name="line-536"></a>      <span class='varid'>checkValue</span> <span class='varid'>n</span> <span class='keyword'>_</span>
-<a name="line-537"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValue: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-538"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-IdValidation.html b/doc/hdoc/src/Text-XML-HXT-Validator-IdValidation.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-IdValidation.html
+++ /dev/null
@@ -1,279 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides functions for checking special ID/IDREF/IDREFS constraints.</span>
-<a name="line-3"></a>
-<a name="line-4"></a><span class='comment'>-- Checking special ID/IDREF/IDREFS constraints means:</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>--  - checking that all ID values are unique.</span>
-<a name="line-7"></a><span class='comment'>--</span>
-<a name="line-8"></a><span class='comment'>--  - checking that all IDREF/IDREFS values match the value of some ID attribute</span>
-<a name="line-9"></a><span class='comment'>--</span>
-<a name="line-10"></a>
-<a name="line-11"></a>
-<a name="line-12"></a><span class='comment'>-- ID-Validation should be started before or after validating the document.</span>
-<a name="line-13"></a>
-<a name="line-14"></a>
-<a name="line-15"></a><span class='comment'>-- First all nodes with ID attributes are collected from the document, then</span>
-<a name="line-16"></a><span class='comment'>-- it is validated that values of ID attributes do not occure more than once.</span>
-<a name="line-17"></a><span class='comment'>-- During a second iteration over the document it is validated that there exists</span>
-<a name="line-18"></a><span class='comment'>-- an ID attribute value for IDREF/IDREFS attribute values.</span>
-<a name="line-19"></a>
-<a name="line-20"></a><span class='comment'>-- Special namings in source code:</span>
-<a name="line-21"></a><span class='comment'>--</span>
-<a name="line-22"></a><span class='comment'>--  - nd - XDTD node</span>
-<a name="line-23"></a><span class='comment'>--</span>
-<a name="line-24"></a><span class='comment'>--  - n  - XTag node</span>
-<a name="line-25"></a><span class='comment'>--</span>
-<a name="line-26"></a><span class='comment'>-- Author : .\\artin Schmidt</span>
-<a name="line-27"></a><span class='comment'>-- Version : $Id: IdValidation.hs,v 1.1 2004/09/02 19:12:03 hxml Exp $</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>IdValidation</span>
-<a name="line-30"></a>    <span class='layout'>(</span> <span class='varid'>validateIds</span>
-<a name="line-31"></a>    <span class='layout'>)</span>
-<a name="line-32"></a><span class='keyword'>where</span>
-<a name="line-33"></a>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>
-<a name="line-37"></a>
-<a name="line-38"></a>
-<a name="line-39"></a>
-<a name="line-40"></a><span class='comment'>-- |</span>
-<a name="line-41"></a><span class='comment'>-- Lookup-table which maps element names to their validation functions. The</span>
-<a name="line-42"></a><span class='comment'>-- validation functions are XmlFilters.</span>
-<a name="line-43"></a>
-<a name="line-44"></a><a name="IdEnvTable"></a><span class='keyword'>type</span> <span class='conid'>IdEnvTable</span>		<span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>IdEnv</span><span class='keyglyph'>]</span>
-<a name="line-45"></a><a name="IdEnv"></a><span class='keyword'>type</span> <span class='conid'>IdEnv</span> 		<span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>ElemName</span><span class='layout'>,</span> <span class='conid'>IdFct</span><span class='layout'>)</span>
-<a name="line-46"></a><a name="ElemName"></a><span class='keyword'>type</span> <span class='conid'>ElemName</span>		<span class='keyglyph'>=</span> <span class='conid'>String</span>
-<a name="line-47"></a><a name="IdFct"></a><span class='keyword'>type</span> <span class='conid'>IdFct</span>		<span class='keyglyph'>=</span> <span class='conid'>XmlFilter</span>
-<a name="line-48"></a>
-<a name="line-49"></a>
-<a name="line-50"></a>
-<a name="line-51"></a><span class='comment'>-- |</span>
-<a name="line-52"></a><span class='comment'>-- Perform the validation of the ID/IDREF/IDREFS constraints.</span>
-<a name="line-53"></a><span class='comment'>--</span>
-<a name="line-54"></a><span class='comment'>--    * 1.parameter dtdPart :  the DTD subset (Node @DOCTYPE@) of the XmlTree</span>
-<a name="line-55"></a><span class='comment'>--</span>
-<a name="line-56"></a><span class='comment'>--    - 2.parameter doc :  the document subset of the XmlTree</span>
-<a name="line-57"></a><span class='comment'>--</span>
-<a name="line-58"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-59"></a>
-<a name="line-60"></a><a name="validateIds"></a><span class='definition'>validateIds</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-61"></a><span class='definition'>validateIds</span> <span class='varid'>dtdPart</span> <span class='varid'>doc</span>
-<a name="line-62"></a>    <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "checkForUniqueIds" #-}</span> <span class='varid'>checkForUniqueIds</span> <span class='varid'>idNodeList</span> <span class='varid'>dtdNodes</span>
-<a name="line-63"></a>      <span class='varop'>++</span>
-<a name="line-64"></a>      <span class='comment'>{-# SCC "checkIdReferences" #-}</span> <span class='varid'>checkIdReferences</span> <span class='varid'>idRefEnv</span> <span class='varid'>doc</span>
-<a name="line-65"></a>      <span class='keyword'>where</span>
-<a name="line-66"></a>      <span class='varid'>idEnv</span>      <span class='keyglyph'>=</span> <span class='varid'>buildIdCollectorFcts</span> <span class='varid'>dtdNodes</span>
-<a name="line-67"></a>      <span class='varid'>idRefEnv</span>   <span class='keyglyph'>=</span> <span class='varid'>buildIdrefValidationFcts</span> <span class='varid'>dtdNodes</span> <span class='varid'>idNodeList</span>
-<a name="line-68"></a>      <span class='varid'>idNodeList</span> <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>idEnv</span> <span class='varid'>doc</span>
-<a name="line-69"></a>      <span class='varid'>dtdNodes</span>   <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>
-<a name="line-70"></a>
-<a name="line-71"></a>
-<a name="line-72"></a><span class='comment'>-- |</span>
-<a name="line-73"></a><span class='comment'>-- Traverse the XmlTree in preorder.</span>
-<a name="line-74"></a><span class='comment'>--</span>
-<a name="line-75"></a><span class='comment'>--    * 1.parameter idEnv :  lookup-table which maps element names to their validation functions</span>
-<a name="line-76"></a><span class='comment'>--</span>
-<a name="line-77"></a><span class='comment'>--    - returns : list of errors</span>
-<a name="line-78"></a>
-<a name="line-79"></a><a name="traverseTree"></a><span class='definition'>traverseTree</span> <span class='keyglyph'>::</span> <span class='conid'>IdEnvTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-80"></a><span class='definition'>traverseTree</span> <span class='varid'>idEnv</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>
-<a name="line-81"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>idFct</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>traverseTree</span> <span class='varid'>idEnv</span><span class='layout'>)</span> <span class='varid'>cs</span>
-<a name="line-82"></a>      <span class='keyword'>where</span>
-<a name="line-83"></a>      <span class='varid'>idFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-84"></a>      <span class='varid'>idFct</span>
-<a name="line-85"></a>          <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>idEnv</span><span class='layout'>)</span> <span class='keyword'>of</span>
-<a name="line-86"></a>	    <span class='conid'>Nothing</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>none</span>
-<a name="line-87"></a>	    <span class='conid'>Just</span> <span class='varid'>f</span>  <span class='keyglyph'>-&gt;</span> <span class='varid'>f</span>
-<a name="line-88"></a>
-<a name="line-89"></a><span class='definition'>traverseTree</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-90"></a>
-<a name="line-91"></a>
-<a name="line-92"></a>
-<a name="line-93"></a><span class='comment'>-- |</span>
-<a name="line-94"></a><span class='comment'>-- Returns the value of an element's ID attribute. The attribute name has to be</span>
-<a name="line-95"></a><span class='comment'>-- retrieved first from the DTD.</span>
-<a name="line-96"></a><span class='comment'>--</span>
-<a name="line-97"></a><span class='comment'>--    * 1.parameter dtdPart :  list of ID attribute definitions from the DTD</span>
-<a name="line-98"></a><span class='comment'>--</span>
-<a name="line-99"></a><span class='comment'>--    - 2.parameter n :  element which ID attribute value should be returned</span>
-<a name="line-100"></a><span class='comment'>--</span>
-<a name="line-101"></a><span class='comment'>--    - returns : normalized value of the ID attribute</span>
-<a name="line-102"></a>
-<a name="line-103"></a><a name="getIdValue"></a><span class='definition'>getIdValue</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-104"></a><span class='definition'>getIdValue</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='sel'>_al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-105"></a>    <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>elemName</span>
-<a name="line-106"></a>      <span class='keyword'>then</span> <span class='varid'>attrValue</span>
-<a name="line-107"></a>      <span class='keyword'>else</span> <span class='varid'>getIdValue</span> <span class='varid'>xs</span> <span class='varid'>n</span>
-<a name="line-108"></a>      <span class='keyword'>where</span>
-<a name="line-109"></a>      <span class='varid'>elemName</span>  <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-110"></a>      <span class='varid'>attrName</span>  <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>
-<a name="line-111"></a>      <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>attrName</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-112"></a>
-<a name="line-113"></a><span class='definition'>getIdValue</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-114"></a>
-<a name="line-115"></a>
-<a name="line-116"></a>
-<a name="line-117"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-118"></a>
-<a name="line-119"></a>
-<a name="line-120"></a><span class='comment'>-- |</span>
-<a name="line-121"></a><span class='comment'>-- Build collector functions which return XTag nodes with ID attributes from</span>
-<a name="line-122"></a><span class='comment'>-- a document.</span>
-<a name="line-123"></a><span class='comment'>--</span>
-<a name="line-124"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-125"></a><span class='comment'>--</span>
-<a name="line-126"></a><span class='comment'>--    - returns : lookup-table which maps element names to their collector function</span>
-<a name="line-127"></a>
-<a name="line-128"></a><a name="buildIdCollectorFcts"></a><span class='definition'>buildIdCollectorFcts</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IdEnvTable</span>
-<a name="line-129"></a><span class='definition'>buildIdCollectorFcts</span> <span class='varid'>dtdPart</span>
-<a name="line-130"></a>    <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>buildIdCollectorFct</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>
-<a name="line-131"></a>      <span class='keyword'>where</span>
-<a name="line-132"></a>      <span class='varid'>buildIdCollectorFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IdEnv</span>
-<a name="line-133"></a>      <span class='varid'>buildIdCollectorFct</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-134"></a>          <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>elemName</span><span class='layout'>,</span> <span class='varid'>hasAttr</span> <span class='varid'>attrName</span><span class='layout'>)</span>
-<a name="line-135"></a>            <span class='keyword'>where</span>
-<a name="line-136"></a>            <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-137"></a>            <span class='varid'>attrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>
-<a name="line-138"></a>
-<a name="line-139"></a>      <span class='varid'>buildIdCollectorFct</span> <span class='varid'>nd</span>
-<a name="line-140"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildIdCollectorFct: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-141"></a>
-<a name="line-142"></a>
-<a name="line-143"></a><span class='comment'>-- |</span>
-<a name="line-144"></a><span class='comment'>-- Build validation functions for checking if IDREF\/IDREFS values match a value</span>
-<a name="line-145"></a><span class='comment'>-- of some ID attributes.</span>
-<a name="line-146"></a><span class='comment'>--</span>
-<a name="line-147"></a><span class='comment'>--    * 1.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-148"></a><span class='comment'>--</span>
-<a name="line-149"></a><span class='comment'>--    - 2.parameter idNodeList :  list of all XTag nodes with ID attributes</span>
-<a name="line-150"></a><span class='comment'>--</span>
-<a name="line-151"></a><span class='comment'>--    - returns : lookup-table which maps element names to their validation function</span>
-<a name="line-152"></a>
-<a name="line-153"></a><a name="buildIdrefValidationFcts"></a><span class='definition'>buildIdrefValidationFcts</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IdEnvTable</span>
-<a name="line-154"></a><span class='definition'>buildIdrefValidationFcts</span> <span class='varid'>dtdPart</span> <span class='varid'>idNodeList</span>
-<a name="line-155"></a>    <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>buildElemValidationFct</span> <span class='varid'>elements</span>
-<a name="line-156"></a>      <span class='keyword'>where</span>
-<a name="line-157"></a>      <span class='varid'>elements</span>    <span class='keyglyph'>=</span> <span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-158"></a>      <span class='varid'>idValueList</span> <span class='keyglyph'>=</span> <span class='varid'>getIdValues</span> <span class='layout'>(</span><span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>
-<a name="line-159"></a>
-<a name="line-160"></a>      <span class='varid'>getIdValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>
-<a name="line-161"></a>      <span class='varid'>getIdValues</span> <span class='varid'>idAttrTypes</span>
-<a name="line-162"></a>          <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getIdValue</span> <span class='varid'>idAttrTypes</span><span class='layout'>)</span> <span class='varid'>idNodeList</span>
-<a name="line-163"></a>
-<a name="line-164"></a>
-<a name="line-165"></a>      <span class='varid'>buildElemValidationFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>IdEnv</span>
-<a name="line-166"></a>      <span class='varid'>buildElemValidationFct</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-167"></a>          <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>elemName</span><span class='layout'>,</span> <span class='varid'>buildIdrefValidationFct</span> <span class='varid'>idRefAttrTypes</span><span class='layout'>)</span>
-<a name="line-168"></a>	  <span class='keyword'>where</span>
-<a name="line-169"></a>	  <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>
-<a name="line-170"></a>	  <span class='varid'>idRefAttrTypes</span> <span class='keyglyph'>=</span> <span class='varid'>isIdRefAttrType</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-171"></a>
-<a name="line-172"></a>      <span class='varid'>buildElemValidationFct</span> <span class='varid'>nd</span>
-<a name="line-173"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildIdrefValidationFct: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-174"></a>
-<a name="line-175"></a>
-<a name="line-176"></a>      <span class='varid'>buildIdrefValidationFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlFilter</span>
-<a name="line-177"></a>      <span class='varid'>buildIdrefValidationFct</span> <span class='layout'>(</span><span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>
-<a name="line-178"></a>          <span class='keyglyph'>=</span> <span class='varid'>checkIdref</span> <span class='varop'>+++</span> <span class='varid'>buildIdrefValidationFct</span> <span class='varid'>xs</span>
-<a name="line-179"></a>            <span class='keyword'>where</span>
-<a name="line-180"></a>            <span class='varid'>attrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>
-<a name="line-181"></a>	    <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>
-<a name="line-182"></a>
-<a name="line-183"></a>            <span class='varid'>checkIdref</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-184"></a>            <span class='varid'>checkIdref</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>
-<a name="line-185"></a>                <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasAttr</span> <span class='varid'>attrName</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-186"></a>	          <span class='keyword'>then</span> <span class='keyword'>if</span> <span class='varid'>attrType</span> <span class='varop'>==</span> <span class='varid'>k_idref</span>
-<a name="line-187"></a>		       <span class='keyword'>then</span> <span class='varid'>checkValueDeclared</span> <span class='varid'>n</span> <span class='varid'>attrValue</span>
-<a name="line-188"></a>		       <span class='keyword'>else</span> <span class='keyword'>let</span> <span class='varid'>valueList</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>attrValue</span>
-<a name="line-189"></a>		            <span class='keyword'>in</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>valueList</span>
-<a name="line-190"></a>		               <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrName</span> <span class='varop'>++</span>
-<a name="line-191"></a>					 <span class='str'>" of Element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>
-<a name="line-192"></a>					 <span class='str'>" must have at least one name."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-193"></a>		               <span class='keyword'>else</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkValueDeclared</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>words</span> <span class='varid'>attrValue</span><span class='layout'>)</span>
-<a name="line-194"></a>	          <span class='keyword'>else</span> <span class='conid'>[]</span>
-<a name="line-195"></a>		  <span class='keyword'>where</span>
-<a name="line-196"></a>		  <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>nd</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>attrName</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-197"></a>
-<a name="line-198"></a>	    <span class='varid'>checkIdref</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-199"></a>
-<a name="line-200"></a>
-<a name="line-201"></a>	    <span class='varid'>checkValueDeclared</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-202"></a>	    <span class='varid'>checkValueDeclared</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>
-<a name="line-203"></a>	        <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>idValueList</span>
-<a name="line-204"></a>		  <span class='keyword'>then</span> <span class='conid'>[]</span>
-<a name="line-205"></a>		  <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"An Element with identifier "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span>
-<a name="line-206"></a>		            <span class='str'>" must appear in the document."</span><span class='layout'>)</span> <span class='varid'>n</span>
-<a name="line-207"></a>
-<a name="line-208"></a>            <span class='varid'>checkValueDeclared</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-209"></a>
-<a name="line-210"></a>      <span class='varid'>buildIdrefValidationFct</span> <span class='conid'>[]</span>
-<a name="line-211"></a>          <span class='keyglyph'>=</span> <span class='varid'>none</span>
-<a name="line-212"></a>
-<a name="line-213"></a>      <span class='varid'>buildIdrefValidationFct</span> <span class='varid'>nd</span>
-<a name="line-214"></a>          <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildIdCollectorFct: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>
-<a name="line-215"></a>
-<a name="line-216"></a>
-<a name="line-217"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-218"></a>
-<a name="line-219"></a>
-<a name="line-220"></a><span class='comment'>-- |</span>
-<a name="line-221"></a><span class='comment'>-- Validate that all ID values are unique within a document.</span>
-<a name="line-222"></a><span class='comment'>-- Validity constraint: ID (3.3.1 \/p. 25 in Spec)</span>
-<a name="line-223"></a><span class='comment'>--</span>
-<a name="line-224"></a><span class='comment'>--    * 1.parameter idNodeList :  list of all XTag nodes with ID attributes</span>
-<a name="line-225"></a><span class='comment'>--</span>
-<a name="line-226"></a><span class='comment'>--    - 2.parameter dtdPart :  the children of the @DOCTYPE@ node</span>
-<a name="line-227"></a><span class='comment'>--</span>
-<a name="line-228"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-229"></a>
-<a name="line-230"></a><a name="checkForUniqueIds"></a><span class='definition'>checkForUniqueIds</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-231"></a><span class='definition'>checkForUniqueIds</span> <span class='varid'>idNodeList</span> <span class='varid'>dtdPart</span>
-<a name="line-232"></a>    <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueId</span> <span class='varid'>idNodeList</span> <span class='conid'>[]</span>
-<a name="line-233"></a>      <span class='keyword'>where</span>
-<a name="line-234"></a>      <span class='varid'>idAttrTypes</span> <span class='keyglyph'>=</span> <span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>
-<a name="line-235"></a>
-<a name="line-236"></a>      <span class='varid'>checkForUniqueId</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-237"></a>      <span class='varid'>checkForUniqueId</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>
-<a name="line-238"></a>          <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>
-<a name="line-239"></a>	    <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute value "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span> <span class='str'>" of type ID for element "</span> <span class='varop'>++</span>
-<a name="line-240"></a>	              <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be unique within the document."</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-241"></a>		 <span class='varop'>++</span>
-<a name="line-242"></a>		 <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='varid'>used</span>
-<a name="line-243"></a>
-<a name="line-244"></a>	    <span class='keyword'>else</span> <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>attrValue</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>
-<a name="line-245"></a>	    <span class='keyword'>where</span>
-<a name="line-246"></a>	    <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>getIdValue</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>idAttrTypes</span><span class='layout'>)</span> <span class='varid'>x</span>
-<a name="line-247"></a>
-<a name="line-248"></a>      <span class='varid'>checkForUniqueId</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>
-<a name="line-249"></a>
-<a name="line-250"></a>
-<a name="line-251"></a>
-<a name="line-252"></a><span class='comment'>-- |</span>
-<a name="line-253"></a><span class='comment'>-- Validate that all IDREF\/IDREFS values match the value of some ID attribute.</span>
-<a name="line-254"></a><span class='comment'>-- Validity constraint: IDREF (3.3.1 \/ p.26 in Spec)</span>
-<a name="line-255"></a><span class='comment'>--</span>
-<a name="line-256"></a><span class='comment'>--    * 1.parameter idRefEnv :  lookup-table which maps element names to their validation function</span>
-<a name="line-257"></a><span class='comment'>--</span>
-<a name="line-258"></a><span class='comment'>--    - 2.parameter doc :  the document to validate</span>
-<a name="line-259"></a><span class='comment'>--</span>
-<a name="line-260"></a><span class='comment'>--    - returns : a list of errors</span>
-<a name="line-261"></a>
-<a name="line-262"></a><a name="checkIdReferences"></a><span class='definition'>checkIdReferences</span> <span class='keyglyph'>::</span> <span class='conid'>IdEnvTable</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span>
-<a name="line-263"></a><span class='definition'>checkIdReferences</span> <span class='varid'>idRefEnv</span> <span class='varid'>doc</span>
-<a name="line-264"></a>    <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>idRefEnv</span> <span class='varid'>doc</span>
-<a name="line-265"></a>
-<a name="line-266"></a>
-<a name="line-267"></a>
-<a name="line-268"></a>
-<a name="line-269"></a>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-RE.html b/doc/hdoc/src/Text-XML-HXT-Validator-RE.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-RE.html
+++ /dev/null
@@ -1,340 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- A module for regular expression matching based on derivatives of regular expressions.</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- The code was taken from Joe English (&lt;<a href="http://www.flightlab.com/~joe/sgml/validate.html">http://www.flightlab.com/~joe/sgml/validate.html</a>&gt;).</span>
-<a name="line-5"></a><span class='comment'>-- Tested and extended by Martin Schmidt.</span>
-<a name="line-6"></a><span class='comment'>--</span>
-<a name="line-7"></a><span class='comment'>-- Further references for the algorithm:</span>
-<a name="line-8"></a><span class='comment'>--</span>
-<a name="line-9"></a><span class='comment'>-- Janusz A. Brzozowski.</span>
-<a name="line-10"></a><span class='comment'>--</span>
-<a name="line-11"></a><span class='comment'>-- 	Derivatives of Regular Expressions. Journal of the ACM, Volume 11, Issue 4, 1964. </span>
-<a name="line-12"></a><span class='comment'>--</span>
-<a name="line-13"></a><span class='comment'>-- Mark Hopkins.</span>
-<a name="line-14"></a><span class='comment'>--</span>
-<a name="line-15"></a><span class='comment'>--	Regular Expression Package. Posted to comp.compilers, 1994.</span>
-<a name="line-16"></a><span class='comment'>--      Available per FTP at &lt;ftp://iecc.com/pub/file/regex.tar.gz&gt;.</span>
-<a name="line-17"></a><span class='comment'>--</span>
-<a name="line-18"></a><span class='comment'>-- Version : $Id: RE.hs,v 1.1 2004/09/02 19:12:03 hxml Exp $</span>
-<a name="line-19"></a>
-<a name="line-20"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>RE</span>
-<a name="line-21"></a>    <span class='layout'>(</span> <span class='conid'>RE</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>
-<a name="line-22"></a>
-<a name="line-23"></a>    <span class='layout'>,</span> <span class='varid'>re_unit</span>
-<a name="line-24"></a>    <span class='layout'>,</span> <span class='varid'>re_zero</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>re_sym</span>
-<a name="line-26"></a>    <span class='layout'>,</span> <span class='varid'>re_rep</span>
-<a name="line-27"></a>    <span class='layout'>,</span> <span class='varid'>re_plus</span>
-<a name="line-28"></a>    <span class='layout'>,</span> <span class='varid'>re_opt</span>
-<a name="line-29"></a>    <span class='layout'>,</span> <span class='varid'>re_seq</span>
-<a name="line-30"></a>    <span class='layout'>,</span> <span class='varid'>re_alt</span>
-<a name="line-31"></a>    <span class='layout'>,</span> <span class='varid'>re_dot</span>
-<a name="line-32"></a>
-<a name="line-33"></a>    <span class='layout'>,</span> <span class='varid'>checkRE</span>
-<a name="line-34"></a>    <span class='layout'>,</span> <span class='varid'>matches</span>
-<a name="line-35"></a>    <span class='layout'>,</span> <span class='varid'>nullable</span>
-<a name="line-36"></a>    <span class='layout'>,</span> <span class='varid'>printRE</span>
-<a name="line-37"></a>  <span class='layout'>)</span>
-<a name="line-38"></a><span class='keyword'>where</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class='comment'>-- |</span>
-<a name="line-41"></a><span class='comment'>-- Data type for regular expressions.</span>
-<a name="line-42"></a>
-<a name="line-43"></a><a name="RE"></a><span class='keyword'>data</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>=</span>
-<a name="line-44"></a>	<span class='conid'>RE_ZERO</span>	<span class='conid'>String</span>		<span class='comment'>--' L(0)   = {} (empty set)</span>
-<a name="line-45"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_UNIT</span>		<span class='comment'>--' L(1)   = { [] } (empty sequence)</span>
-<a name="line-46"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_SYM</span> <span class='varid'>a</span>		<span class='comment'>--' L(x)   = { [x] }</span>
-<a name="line-47"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_DOT</span>                <span class='comment'>--' accept any single symbol</span>
-<a name="line-48"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_REP</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span>		<span class='comment'>--' L(e*)  = { [] } `union` L(e+)</span>
-<a name="line-49"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_PLUS</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span>	<span class='comment'>--' L(e+)  = { x ++ y | x &lt;- L(e), y &lt;- L(e*) }</span>
-<a name="line-50"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_OPT</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span>		<span class='comment'>--' L(e?)  = L(e) `union` { [] }</span>
-<a name="line-51"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_SEQ</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span>	<span class='comment'>--' L(e,f) = { x ++ y | x &lt;- L(e), y &lt;- L(f) }</span>
-<a name="line-52"></a>	<span class='keyglyph'>|</span> <span class='conid'>RE_ALT</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span>	<span class='comment'>--' L(e|f) = L(e) `union` L(f)</span>
-<a name="line-53"></a>	<span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Eq</span><span class='layout'>)</span>
-<a name="line-54"></a>
-<a name="line-55"></a>
-<a name="line-56"></a>
-<a name="line-57"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-58"></a><span class='comment'>-- Constructor functions to simplify regular expressions when constructing them.</span>
-<a name="line-59"></a>
-<a name="line-60"></a><span class='comment'>-- |</span>
-<a name="line-61"></a><span class='comment'>-- Constructs a regular expression for an empty set.</span>
-<a name="line-62"></a><span class='comment'>--</span>
-<a name="line-63"></a><span class='comment'>--    * 1.parameter errMsg :  error message</span>
-<a name="line-64"></a><span class='comment'>--</span>
-<a name="line-65"></a><span class='comment'>--    - returns : regular expression for an empty set</span>
-<a name="line-66"></a>
-<a name="line-67"></a><a name="re_zero"></a><span class='definition'>re_zero</span>			<span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-68"></a><span class='definition'>re_zero</span> <span class='varid'>m</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>
-<a name="line-69"></a>
-<a name="line-70"></a>
-<a name="line-71"></a><span class='comment'>-- |</span>
-<a name="line-72"></a><span class='comment'>-- Constructs a regular expression for an empty sequence.</span>
-<a name="line-73"></a><span class='comment'>--</span>
-<a name="line-74"></a><span class='comment'>--    - returns : regular expression for an empty sequence</span>
-<a name="line-75"></a>
-<a name="line-76"></a><a name="re_unit"></a><span class='definition'>re_unit</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-77"></a><span class='definition'>re_unit</span>			<span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>
-<a name="line-78"></a>
-<a name="line-79"></a>
-<a name="line-80"></a><span class='comment'>-- |</span>
-<a name="line-81"></a><span class='comment'>-- Constructs a regular expression for accepting a symbol</span>
-<a name="line-82"></a><span class='comment'>--</span>
-<a name="line-83"></a><span class='comment'>--    * 1.parameter sym :  the symbol to be accepted</span>
-<a name="line-84"></a><span class='comment'>--</span>
-<a name="line-85"></a><span class='comment'>--    - returns : regular expression for accepting a symbol</span>
-<a name="line-86"></a>
-<a name="line-87"></a><a name="re_sym"></a><span class='definition'>re_sym</span>			<span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-88"></a><span class='definition'>re_sym</span> <span class='varid'>x</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_SYM</span> <span class='varid'>x</span>
-<a name="line-89"></a>
-<a name="line-90"></a>
-<a name="line-91"></a><span class='comment'>-- |</span>
-<a name="line-92"></a><span class='comment'>-- Constructs a regular expression for accepting any singel symbol</span>
-<a name="line-93"></a><span class='comment'>--</span>
-<a name="line-94"></a><span class='comment'>--    - returns : regular expression for accepting any singel symbol</span>
-<a name="line-95"></a>
-<a name="line-96"></a><a name="re_dot"></a><span class='definition'>re_dot</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-97"></a><span class='definition'>re_dot</span>			<span class='keyglyph'>=</span> <span class='conid'>RE_DOT</span>
-<a name="line-98"></a>
-<a name="line-99"></a>
-<a name="line-100"></a><span class='comment'>-- |</span>
-<a name="line-101"></a><span class='comment'>-- Constructs an optional repetition (*) of a regular expression</span>
-<a name="line-102"></a><span class='comment'>--</span>
-<a name="line-103"></a><span class='comment'>--    * 1.parameter re_a :  regular expression to be repeted</span>
-<a name="line-104"></a><span class='comment'>--</span>
-<a name="line-105"></a><span class='comment'>--    - returns : new regular expression</span>
-<a name="line-106"></a>
-<a name="line-107"></a><a name="re_rep"></a><span class='definition'>re_rep</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-108"></a><span class='definition'>re_rep</span> <span class='conid'>RE_UNIT</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>
-<a name="line-109"></a><span class='definition'>re_rep</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>
-<a name="line-110"></a><span class='definition'>re_rep</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>RE_REP</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>RE_REP</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e</span><span class='layout'>)</span>		<span class='comment'>-- remove nested reps</span>
-<a name="line-111"></a><span class='definition'>re_rep</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>RE_REP</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e</span><span class='layout'>)</span>		<span class='comment'>-- remove nested reps in alternatives</span>
-<a name="line-112"></a><span class='definition'>re_rep</span> <span class='varid'>e</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_REP</span> <span class='varid'>e</span>
-<a name="line-113"></a>
-<a name="line-114"></a><span class='comment'>-- |</span>
-<a name="line-115"></a><span class='comment'>-- remove redundant nested *'s in RE</span>
-<a name="line-116"></a><span class='comment'>-- theoretically this is unneccessary,</span>
-<a name="line-117"></a><span class='comment'>-- but without this simplification the runtime can increase exponentally</span>
-<a name="line-118"></a><span class='comment'>-- when computing deltas, e.g. for a** or (a|b*)* which is the same as (a|b)*</span>
-<a name="line-119"></a>
-<a name="line-120"></a><a name="rem_rep"></a><span class='definition'>rem_rep</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-121"></a><span class='definition'>rem_rep</span> <span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>RE_ALT</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e2</span><span class='layout'>)</span>
-<a name="line-122"></a><span class='definition'>rem_rep</span> <span class='layout'>(</span><span class='conid'>RE_REP</span> <span class='varid'>e1</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>rem_rep</span> <span class='varid'>e1</span>
-<a name="line-123"></a><span class='definition'>rem_rep</span> <span class='varid'>e1</span>		<span class='keyglyph'>=</span> <span class='varid'>e1</span>
-<a name="line-124"></a>
-<a name="line-125"></a>
-<a name="line-126"></a><span class='comment'>-- |</span>
-<a name="line-127"></a><span class='comment'>-- Constructs a repetition (+) of a regular expression</span>
-<a name="line-128"></a><span class='comment'>--</span>
-<a name="line-129"></a><span class='comment'>--    * 1.parameter re_a :  regular expression to be repeted</span>
-<a name="line-130"></a><span class='comment'>--</span>
-<a name="line-131"></a><span class='comment'>--    - returns : new regular expression</span>
-<a name="line-132"></a>
-<a name="line-133"></a><a name="re_plus"></a><span class='definition'>re_plus</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-134"></a><span class='definition'>re_plus</span> <span class='conid'>RE_UNIT</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>
-<a name="line-135"></a><span class='definition'>re_plus</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span> 	<span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>
-<a name="line-136"></a><span class='definition'>re_plus</span> <span class='varid'>e</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_PLUS</span> <span class='varid'>e</span>
-<a name="line-137"></a>
-<a name="line-138"></a>
-<a name="line-139"></a><span class='comment'>-- |</span>
-<a name="line-140"></a><span class='comment'>-- Constructs an option (?) of a regular expression</span>
-<a name="line-141"></a><span class='comment'>--</span>
-<a name="line-142"></a><span class='comment'>--    * 1.parameter re_a :  regular expression to be optional</span>
-<a name="line-143"></a><span class='comment'>--</span>
-<a name="line-144"></a><span class='comment'>--    - returns : new regular expression</span>
-<a name="line-145"></a>
-<a name="line-146"></a><a name="re_opt"></a><span class='definition'>re_opt</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-147"></a><span class='definition'>re_opt</span> <span class='conid'>RE_UNIT</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>
-<a name="line-148"></a><span class='definition'>re_opt</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>
-<a name="line-149"></a><span class='definition'>re_opt</span> <span class='varid'>e</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_OPT</span> <span class='varid'>e</span>
-<a name="line-150"></a>
-<a name="line-151"></a>
-<a name="line-152"></a><span class='comment'>-- |</span>
-<a name="line-153"></a><span class='comment'>-- Constructs a sequence (,) of two regular expressions</span>
-<a name="line-154"></a><span class='comment'>--</span>
-<a name="line-155"></a><span class='comment'>--    * 1.parameter re_a :  first regular expression in sequence</span>
-<a name="line-156"></a><span class='comment'>--</span>
-<a name="line-157"></a><span class='comment'>--    - 2.parameter re_b :  second regular expression in sequence</span>
-<a name="line-158"></a><span class='comment'>--</span>
-<a name="line-159"></a><span class='comment'>--    - returns : new regular expression</span>
-<a name="line-160"></a>
-<a name="line-161"></a><a name="re_seq"></a><span class='definition'>re_seq</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-162"></a><span class='definition'>re_seq</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyword'>_</span>	<span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>
-<a name="line-163"></a><span class='definition'>re_seq</span> <span class='conid'>RE_UNIT</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>f</span>
-<a name="line-164"></a><span class='definition'>re_seq</span> <span class='keyword'>_</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>
-<a name="line-165"></a><span class='definition'>re_seq</span> <span class='varid'>e</span> <span class='conid'>RE_UNIT</span>	<span class='keyglyph'>=</span> <span class='varid'>e</span>
-<a name="line-166"></a><span class='definition'>re_seq</span> <span class='varid'>e</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span>
-<a name="line-167"></a>
-<a name="line-168"></a>
-<a name="line-169"></a><span class='comment'>-- |</span>
-<a name="line-170"></a><span class='comment'>-- Constructs an alternative (|) of two regular expressions</span>
-<a name="line-171"></a><span class='comment'>--</span>
-<a name="line-172"></a><span class='comment'>--    * 1.parameter re_a :  first regular expression of alternative</span>
-<a name="line-173"></a><span class='comment'>--</span>
-<a name="line-174"></a><span class='comment'>--    - 2.parameter re_b :  second regular expression of alternative</span>
-<a name="line-175"></a><span class='comment'>--</span>
-<a name="line-176"></a><span class='comment'>--    - returns : new regular expression</span>
-<a name="line-177"></a>
-<a name="line-178"></a><a name="re_alt"></a><span class='definition'>re_alt</span>			<span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-179"></a><span class='definition'>re_alt</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>f</span>	<span class='keyglyph'>=</span> <span class='varid'>f</span>
-<a name="line-180"></a><span class='definition'>re_alt</span> <span class='varid'>e</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>e</span>
-<a name="line-181"></a><span class='definition'>re_alt</span> <span class='varid'>e</span> <span class='varid'>f</span>		<span class='keyglyph'>=</span> <span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span>
-<a name="line-182"></a>
-<a name="line-183"></a>
-<a name="line-184"></a>
-<a name="line-185"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-186"></a>
-<a name="line-187"></a>
-<a name="line-188"></a><span class='comment'>-- |</span>
-<a name="line-189"></a><span class='comment'>-- Checks if a regular expression matches the empty sequence.</span>
-<a name="line-190"></a><span class='comment'>--</span>
-<a name="line-191"></a><span class='comment'>-- nullable e == [] `in` L(e)</span>
-<a name="line-192"></a><span class='comment'>--</span>
-<a name="line-193"></a><span class='comment'>-- This check indicates if a regular expression fits to a sentence or not.</span>
-<a name="line-194"></a><span class='comment'>--</span>
-<a name="line-195"></a><span class='comment'>--    * 1.parameter re :  regular expression to be checked</span>
-<a name="line-196"></a><span class='comment'>--</span>
-<a name="line-197"></a><span class='comment'>--    - returns : true if regular expression matches the empty sequence,</span>
-<a name="line-198"></a><span class='comment'>--                otherwise false</span>
-<a name="line-199"></a>
-<a name="line-200"></a><a name="nullable"></a><span class='definition'>nullable</span>		<span class='keyglyph'>::</span>  <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-201"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-202"></a><span class='definition'>nullable</span> <span class='conid'>RE_UNIT</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-203"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_SYM</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-204"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_REP</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-205"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_PLUS</span> <span class='varid'>e</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e</span>
-<a name="line-206"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_OPT</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-207"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>nullable</span> <span class='varid'>f</span>
-<a name="line-208"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e</span> <span class='varop'>||</span> <span class='varid'>nullable</span> <span class='varid'>f</span>
-<a name="line-209"></a><span class='definition'>nullable</span> <span class='conid'>RE_DOT</span>		<span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-210"></a>
-<a name="line-211"></a>
-<a name="line-212"></a><span class='comment'>-- |</span>
-<a name="line-213"></a><span class='comment'>-- Derives a regular expression with respect to one symbol.</span>
-<a name="line-214"></a><span class='comment'>--</span>
-<a name="line-215"></a><span class='comment'>-- L(delta e x) = x \ L(e)</span>
-<a name="line-216"></a><span class='comment'>--</span>
-<a name="line-217"></a><span class='comment'>--    * 1.parameter re :  regular expression to be derived</span>
-<a name="line-218"></a><span class='comment'>--</span>
-<a name="line-219"></a><span class='comment'>--    - 2.parameter sym :  the symbol on which the regular expression is applied</span>
-<a name="line-220"></a><span class='comment'>--</span>
-<a name="line-221"></a><span class='comment'>--    - returns : the derived regular expression</span>
-<a name="line-222"></a>
-<a name="line-223"></a><a name="delta"></a><span class='definition'>delta</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Eq</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-224"></a><span class='definition'>delta</span> <span class='varid'>re</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>re</span> <span class='keyword'>of</span>
-<a name="line-225"></a>	<span class='conid'>RE_ZERO</span>	<span class='keyword'>_</span>		<span class='keyglyph'>-&gt;</span> <span class='varid'>re</span>					<span class='comment'>-- re_zero m</span>
-<a name="line-226"></a>	<span class='conid'>RE_UNIT</span>			<span class='keyglyph'>-&gt;</span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Symbol "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>" unexpected."</span><span class='layout'>)</span>
-<a name="line-227"></a>	<span class='conid'>RE_SYM</span> <span class='varid'>sym</span>
-<a name="line-228"></a>		<span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>sym</span>	<span class='keyglyph'>-&gt;</span> <span class='varid'>re_unit</span>
-<a name="line-229"></a>		<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>-&gt;</span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Symbol "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sym</span> <span class='varop'>++</span> <span class='str'>" expected, but symbol "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>" found."</span><span class='layout'>)</span>
-<a name="line-230"></a>	<span class='conid'>RE_REP</span>  <span class='varid'>e</span>		<span class='keyglyph'>-&gt;</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varid'>re</span>		<span class='comment'>-- (re_rep e)</span>
-<a name="line-231"></a>	<span class='conid'>RE_PLUS</span> <span class='varid'>e</span>		<span class='keyglyph'>-&gt;</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>re_rep</span> <span class='varid'>e</span><span class='layout'>)</span>
-<a name="line-232"></a>	<span class='conid'>RE_OPT</span>  <span class='varid'>e</span>		<span class='keyglyph'>-&gt;</span> <span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span>
-<a name="line-233"></a>	<span class='conid'>RE_SEQ</span>  <span class='varid'>e</span> <span class='varid'>f</span>
-<a name="line-234"></a>		<span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>e</span>	<span class='keyglyph'>-&gt;</span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>x</span><span class='layout'>)</span>
-<a name="line-235"></a>		<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>-&gt;</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varid'>f</span>
-<a name="line-236"></a>	<span class='conid'>RE_ALT</span>  <span class='varid'>e</span> <span class='varid'>f</span>		<span class='keyglyph'>-&gt;</span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>x</span><span class='layout'>)</span>
-<a name="line-237"></a>	<span class='conid'>RE_DOT</span>			<span class='keyglyph'>-&gt;</span> <span class='varid'>re_unit</span>
-<a name="line-238"></a>
-<a name="line-239"></a>
-<a name="line-240"></a><span class='comment'>-- |</span>
-<a name="line-241"></a><span class='comment'>-- Derives a regular expression with respect to a sentence.</span>
-<a name="line-242"></a><span class='comment'>--</span>
-<a name="line-243"></a><span class='comment'>--    * 1.parameter re :  regular expression</span>
-<a name="line-244"></a><span class='comment'>--</span>
-<a name="line-245"></a><span class='comment'>--    - 2.parameter s :  sentence to which the regular expression is applied</span>
-<a name="line-246"></a><span class='comment'>--</span>
-<a name="line-247"></a><span class='comment'>--    - returns : the derived regular expression</span>
-<a name="line-248"></a>
-<a name="line-249"></a><a name="matches"></a><span class='definition'>matches</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Eq</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span>
-<a name="line-250"></a><span class='definition'>matches</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>delta</span> <span class='varid'>e</span>
-<a name="line-251"></a>
-<a name="line-252"></a>
-<a name="line-253"></a><span class='comment'>-- |</span>
-<a name="line-254"></a><span class='comment'>-- Checks if an input matched a regular expression. The function should be</span>
-<a name="line-255"></a><span class='comment'>-- called after matches.</span>
-<a name="line-256"></a><span class='comment'>--</span>
-<a name="line-257"></a><span class='comment'>-- Was the sentence used in @matches@ in the language of the regular expression?</span>
-<a name="line-258"></a><span class='comment'>-- -&gt; matches e s == s `in` L(e)?</span>
-<a name="line-259"></a><span class='comment'>--</span>
-<a name="line-260"></a><span class='comment'>--    * 1.parameter re :  the derived regular expression</span>
-<a name="line-261"></a><span class='comment'>--</span>
-<a name="line-262"></a><span class='comment'>--    - returns : empty String if input matched the regular expression, otherwise</span>
-<a name="line-263"></a><span class='comment'>--               an error message is returned</span>
-<a name="line-264"></a>
-<a name="line-265"></a><a name="checkRE"></a><span class='definition'>checkRE</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-266"></a><span class='definition'>checkRE</span> <span class='layout'>(</span><span class='conid'>RE_UNIT</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-267"></a><span class='definition'>checkRE</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='varid'>m</span>
-<a name="line-268"></a><span class='definition'>checkRE</span> <span class='varid'>re</span>
-<a name="line-269"></a>	<span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span>	<span class='keyglyph'>=</span> <span class='str'>""</span>
-<a name="line-270"></a>	<span class='keyglyph'>|</span> <span class='varid'>otherwise</span>	<span class='keyglyph'>=</span> <span class='str'>"Input must match "</span> <span class='varop'>++</span> <span class='varid'>printRE</span> <span class='varid'>re</span>
-<a name="line-271"></a>
-<a name="line-272"></a>
-<a name="line-273"></a>
-<a name="line-274"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-275"></a>
-<a name="line-276"></a>
-<a name="line-277"></a>
-<a name="line-278"></a><span class='comment'>-- |</span>
-<a name="line-279"></a><span class='comment'>-- Constructs a string representation of a regular expression.</span>
-<a name="line-280"></a><span class='comment'>--</span>
-<a name="line-281"></a><span class='comment'>--    * 1.parameter re :  a regular expression</span>
-<a name="line-282"></a><span class='comment'>--</span>
-<a name="line-283"></a><span class='comment'>--    - returns : the string representation of the regular expression</span>
-<a name="line-284"></a>
-<a name="line-285"></a><a name="printRE"></a><span class='definition'>printRE</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-286"></a><span class='definition'>printRE</span> <span class='varid'>re'</span>
-<a name="line-287"></a>    <span class='keyglyph'>=</span> <span class='str'>"( "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>re'</span> <span class='varop'>++</span> <span class='str'>" )"</span>
-<a name="line-288"></a>      <span class='keyword'>where</span>
-<a name="line-289"></a>      <span class='varid'>printRE1</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=&gt;</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-290"></a>      <span class='varid'>printRE1</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>re</span> <span class='keyword'>of</span>
-<a name="line-291"></a>	  <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>				<span class='keyglyph'>-&gt;</span> <span class='str'>"ERROR: "</span> <span class='varop'>++</span> <span class='varid'>m</span>
-<a name="line-292"></a>	  <span class='conid'>RE_UNIT</span>				<span class='keyglyph'>-&gt;</span> <span class='str'>""</span>
-<a name="line-293"></a>	  <span class='conid'>RE_SYM</span> <span class='varid'>sym</span>				<span class='keyglyph'>-&gt;</span> <span class='varid'>show</span> <span class='varid'>sym</span>
-<a name="line-294"></a>	  <span class='conid'>RE_DOT</span>				<span class='keyglyph'>-&gt;</span> <span class='str'>"."</span>
-<a name="line-295"></a>	  <span class='conid'>RE_REP</span> <span class='varid'>e</span>
-<a name="line-296"></a>	      <span class='keyglyph'>|</span> <span class='varid'>isSingle</span> <span class='varid'>e</span>			<span class='keyglyph'>-&gt;</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>"*"</span>
-<a name="line-297"></a>	      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>-&gt;</span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>")*"</span>
-<a name="line-298"></a>	  <span class='conid'>RE_PLUS</span> <span class='varid'>e</span>
-<a name="line-299"></a>	      <span class='keyglyph'>|</span> <span class='varid'>isSingle</span> <span class='varid'>e</span>			<span class='keyglyph'>-&gt;</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>"+"</span>
-<a name="line-300"></a>	      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>-&gt;</span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>")+"</span>
-<a name="line-301"></a>	  <span class='conid'>RE_OPT</span> <span class='varid'>e</span>
-<a name="line-302"></a>	      <span class='keyglyph'>|</span> <span class='varid'>isSingle</span> <span class='varid'>e</span>			<span class='keyglyph'>-&gt;</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>"?"</span>
-<a name="line-303"></a>	      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>-&gt;</span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>")?"</span>
-<a name="line-304"></a>	  <span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span>
-<a name="line-305"></a>	      <span class='keyglyph'>|</span> <span class='varid'>isAlt</span> <span class='varid'>e</span>  <span class='varop'>&amp;&amp;</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isAlt</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='keyglyph'>-&gt;</span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") , "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>
-<a name="line-306"></a>	      <span class='keyglyph'>|</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isAlt</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>isAlt</span> <span class='varid'>f</span>	<span class='keyglyph'>-&gt;</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" , ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>
-<a name="line-307"></a>	      <span class='keyglyph'>|</span> <span class='varid'>isAlt</span> <span class='varid'>e</span>  <span class='varop'>&amp;&amp;</span> <span class='varid'>isAlt</span> <span class='varid'>f</span>		<span class='keyglyph'>-&gt;</span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") , ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>
-<a name="line-308"></a>	      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>-&gt;</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" , "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>
-<a name="line-309"></a>	  <span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span>
-<a name="line-310"></a>	      <span class='keyglyph'>|</span> <span class='varid'>isSeq</span> <span class='varid'>e</span>  <span class='varop'>&amp;&amp;</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isSeq</span> <span class='varid'>f</span><span class='layout'>)</span>	<span class='keyglyph'>-&gt;</span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") | "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>
-<a name="line-311"></a>	      <span class='keyglyph'>|</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isSeq</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varop'>&amp;&amp;</span> <span class='varid'>isSeq</span> <span class='varid'>f</span>	<span class='keyglyph'>-&gt;</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" | ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>
-<a name="line-312"></a>	      <span class='keyglyph'>|</span> <span class='varid'>isSeq</span> <span class='varid'>e</span>  <span class='varop'>&amp;&amp;</span> <span class='varid'>isSeq</span> <span class='varid'>f</span>		<span class='keyglyph'>-&gt;</span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") | ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>
-<a name="line-313"></a>	      <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>			<span class='keyglyph'>-&gt;</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" | "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>
-<a name="line-314"></a>
-<a name="line-315"></a>
-<a name="line-316"></a>      <span class='varid'>isSingle</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-317"></a>      <span class='varid'>isSingle</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span>    <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-318"></a>      <span class='varid'>isSingle</span> <span class='conid'>RE_UNIT</span>        <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-319"></a>      <span class='varid'>isSingle</span> <span class='layout'>(</span><span class='conid'>RE_SYM</span> <span class='keyword'>_</span><span class='layout'>)</span>     <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-320"></a>      <span class='varid'>isSingle</span> <span class='keyword'>_</span>              <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-321"></a>
-<a name="line-322"></a>
-<a name="line-323"></a>      <span class='varid'>isSeq</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-324"></a>      <span class='varid'>isSeq</span> <span class='layout'>(</span><span class='conid'>RE_SEQ</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span>      <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-325"></a>      <span class='varid'>isSeq</span> <span class='keyword'>_</span>                 <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-326"></a>
-<a name="line-327"></a>
-<a name="line-328"></a>      <span class='varid'>isAlt</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-329"></a>      <span class='varid'>isAlt</span> <span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span>      <span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-330"></a>      <span class='varid'>isAlt</span> <span class='keyword'>_</span>                 <span class='keyglyph'>=</span> <span class='conid'>False</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-Validation.html b/doc/hdoc/src/Text-XML-HXT-Validator-Validation.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-Validation.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides a state filter as a main function for validating XML documents.</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- The real validation is done with pure filters from module 'Text.XML.HXT.Validator.ValidationFilter'</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>-- Author : .\\artin Schmidt</span>
-<a name="line-7"></a><span class='comment'>-- Version : $Id: Validation.hs,v 1.2 2004/11/23 15:50:23 hxml Exp $</span>
-<a name="line-8"></a>
-<a name="line-9"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>
-<a name="line-10"></a>    <span class='layout'>(</span> <span class='varid'>getValidatedDoc</span>
-<a name="line-11"></a>    <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>ValidationFilter</span>
-<a name="line-12"></a>    <span class='layout'>)</span>
-<a name="line-13"></a>
-<a name="line-14"></a><span class='keyword'>where</span>
-<a name="line-15"></a>
-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>
-<a name="line-18"></a>
-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>ValidationFilter</span>
-<a name="line-20"></a>
-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>
-<a name="line-22"></a>    <span class='layout'>(</span> <span class='varid'>traceTree</span>
-<a name="line-23"></a>    <span class='layout'>,</span> <span class='varid'>traceSource</span>
-<a name="line-24"></a>    <span class='layout'>,</span> <span class='varid'>traceMsg</span>
-<a name="line-25"></a>    <span class='layout'>)</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class='comment'>-- ------------------------------------------------------------</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='comment'>-- |</span>
-<a name="line-30"></a><span class='comment'>-- monadic filter for validating and transforming a wellformed document.</span>
-<a name="line-31"></a><span class='comment'>--</span>
-<a name="line-32"></a><span class='comment'>-- the "main" function for validation.</span>
-<a name="line-33"></a><span class='comment'>--</span>
-<a name="line-34"></a><span class='comment'>-- the input tree must consist of a root node with a complete document and DTD.</span>
-<a name="line-35"></a><span class='comment'>-- Result is the single element list containing same tree but tranformed with respect to the DTD,</span>
-<a name="line-36"></a><span class='comment'>-- or, in case of errors, the root with an empty list of children</span>
-<a name="line-37"></a>
-<a name="line-38"></a><a name="getValidatedDoc"></a><span class='definition'>getValidatedDoc</span>		<span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>
-<a name="line-39"></a><span class='definition'>getValidatedDoc</span>
-<a name="line-40"></a>    <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"validating document"</span>
-<a name="line-41"></a>      <span class='varop'>.&gt;&gt;</span>
-<a name="line-42"></a>      <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>runValidation</span>
-<a name="line-43"></a>	  <span class='varop'>.&gt;&gt;</span>
-<a name="line-44"></a>	  <span class='varid'>traceTree</span>
-<a name="line-45"></a>	  <span class='varop'>.&gt;&gt;</span>
-<a name="line-46"></a>	  <span class='varid'>traceSource</span>
-<a name="line-47"></a>	<span class='layout'>)</span>
-<a name="line-48"></a>	<span class='varop'>`whenM`</span> <span class='layout'>(</span><span class='varid'>isRoot</span> <span class='varop'>.&gt;</span> <span class='varid'>getChildren</span><span class='layout'>)</span>
-<a name="line-49"></a>      <span class='layout'>)</span>
-<a name="line-50"></a>      <span class='keyword'>where</span>
-<a name="line-51"></a>      <span class='varid'>runValidation</span> <span class='varid'>t</span>
-<a name="line-52"></a>	  <span class='keyglyph'>=</span> <span class='keyword'>do</span>
-<a name="line-53"></a>	    <span class='varid'>issueError</span> <span class='varop'>$$&lt;</span> <span class='varid'>res</span>
-<a name="line-54"></a>	    <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>errs</span>
-<a name="line-55"></a>	      <span class='keyword'>then</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"transforming validated document"</span>
-<a name="line-56"></a>		     <span class='varop'>.&gt;&gt;</span>
-<a name="line-57"></a>		     <span class='varid'>liftMf</span> <span class='varid'>transform</span>
-<a name="line-58"></a>		   <span class='layout'>)</span>
-<a name="line-59"></a>	      <span class='keyword'>else</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_err</span> <span class='str'>"validating document"</span><span class='layout'>)</span>
-<a name="line-60"></a>	      <span class='layout'>)</span> <span class='varid'>t</span>
-<a name="line-61"></a>	    <span class='keyword'>where</span>
-<a name="line-62"></a>	    <span class='varid'>res</span>  <span class='keyglyph'>=</span> <span class='varid'>validate</span> <span class='varid'>t</span>
-<a name="line-63"></a>	    <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>isXError</span> <span class='varop'>.&gt;</span> <span class='varid'>neg</span> <span class='varid'>isWarning</span> <span class='varop'>$$</span> <span class='varid'>res</span>
-<a name="line-64"></a>
-<a name="line-65"></a><span class='comment'>-- ------------------------------------------------------------</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-ValidationFilter.html b/doc/hdoc/src/Text-XML-HXT-Validator-ValidationFilter.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-ValidationFilter.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating XML documents represented as</span>
-<a name="line-3"></a><span class='comment'>-- XmlTree.</span>
-<a name="line-4"></a>
-<a name="line-5"></a><span class='comment'>-- Unlike other popular XML validation tools the validation functions return</span>
-<a name="line-6"></a><span class='comment'>-- a list of errors instead of aborting after the first error was found.</span>
-<a name="line-7"></a><span class='comment'>-- </span>
-<a name="line-8"></a><span class='comment'>-- Note: The validation process has been split into validation and transformation!</span>
-<a name="line-9"></a><span class='comment'>--       If @validate@ did not report any errors, @transform@</span>
-<a name="line-10"></a><span class='comment'>--       should be called, to change the document the way a validating parser</span>
-<a name="line-11"></a><span class='comment'>--       is expected to do.</span>
-<a name="line-12"></a>
-<a name="line-13"></a><span class='comment'>--</span>
-<a name="line-14"></a><span class='comment'>-- Author : .\\artin Schmidt</span>
-<a name="line-15"></a><span class='comment'>-- Version : $Id: ValidationFilter.hs,v 1.1 2004/11/23 15:50:23 hxml Exp $</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>ValidationFilter</span>
-<a name="line-18"></a>    <span class='layout'>(</span> <span class='varid'>getDTDSubset</span>
-<a name="line-19"></a>    <span class='layout'>,</span> <span class='varid'>validate</span>
-<a name="line-20"></a>    <span class='layout'>,</span> <span class='varid'>validateDTD</span>
-<a name="line-21"></a>    <span class='layout'>,</span> <span class='varid'>validateDoc</span>
-<a name="line-22"></a>    <span class='layout'>,</span> <span class='varid'>removeDoublicateDefs</span>
-<a name="line-23"></a>    <span class='layout'>,</span> <span class='varid'>transform</span>
-<a name="line-24"></a>    <span class='layout'>)</span>
-<a name="line-25"></a>
-<a name="line-26"></a><span class='keyword'>where</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DTDValidation</span> <span class='keyword'>as</span> <span class='conid'>DTDValidation</span>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocValidation</span> <span class='keyword'>as</span> <span class='conid'>DocValidation</span>
-<a name="line-32"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>IdValidation</span> <span class='keyword'>as</span> <span class='conid'>IdValidation</span>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocTransformation</span> <span class='keyword'>as</span> <span class='conid'>DocTransformation</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='comment'>-- |</span>
-<a name="line-36"></a><span class='comment'>-- Main validation filter. Check if the DTD and the document are valid.</span>
-<a name="line-37"></a><span class='comment'>--</span>
-<a name="line-38"></a><span class='comment'>--</span>
-<a name="line-39"></a><span class='comment'>--    - returns : a function which expects a complete document as XmlTree input</span>
-<a name="line-40"></a><span class='comment'>--                     and returns a list of all errors found.</span>
-<a name="line-41"></a>
-<a name="line-42"></a><a name="validate"></a><span class='definition'>validate</span> 	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-43"></a><span class='definition'>validate</span>	<span class='keyglyph'>=</span> <span class='varid'>validateDTD</span> <span class='varop'>+++</span> <span class='varid'>validateDoc</span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class='comment'>-- |</span>
-<a name="line-46"></a><span class='comment'>-- Check if the DTD is valid.</span>
-<a name="line-47"></a><span class='comment'>--</span>
-<a name="line-48"></a><span class='comment'>--</span>
-<a name="line-49"></a><span class='comment'>--    - returns : a function which expects an XmlTree from the parser as input</span>
-<a name="line-50"></a><span class='comment'>--                     and returns a list of all errors found in the DTD.</span>
-<a name="line-51"></a>
-<a name="line-52"></a><a name="validateDTD"></a><span class='definition'>validateDTD</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-53"></a><span class='definition'>validateDTD</span>
-<a name="line-54"></a>    <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>getDTDSubset</span>
-<a name="line-55"></a>	       <span class='conop'>:-&gt;</span> <span class='conid'>DTDValidation</span><span class='varop'>.</span><span class='varid'>validateDTD</span>
-<a name="line-56"></a>	     <span class='layout'>,</span> <span class='varid'>this</span>
-<a name="line-57"></a>               <span class='conop'>:-&gt;</span> <span class='varid'>err</span> <span class='str'>"Can't validate DTD: There is no DOCTYPE declaration in the document."</span>
-<a name="line-58"></a>	     <span class='keyglyph'>]</span>
-<a name="line-59"></a><span class='comment'>-- |</span>
-<a name="line-60"></a><span class='comment'>-- Check if the document corresponds to the given DTD.</span>
-<a name="line-61"></a><span class='comment'>--</span>
-<a name="line-62"></a><span class='comment'>--</span>
-<a name="line-63"></a><span class='comment'>--    - returns : a function which expects a complete document as XmlTree input</span>
-<a name="line-64"></a><span class='comment'>--                     and returns a list of all errors found in the content part.</span>
-<a name="line-65"></a>
-<a name="line-66"></a><a name="validateDoc"></a><span class='definition'>validateDoc</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-67"></a><span class='definition'>validateDoc</span> <span class='varid'>t</span>
-<a name="line-68"></a>    <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>dtds</span>
-<a name="line-69"></a>	<span class='keyword'>then</span> <span class='varid'>err</span> <span class='str'>"Can't validate document: There is no DOCTYPE declaration in the document."</span>
-<a name="line-70"></a>	<span class='keyword'>else</span> <span class='layout'>(</span> <span class='conid'>DocValidation</span><span class='varop'>.</span><span class='varid'>validateDoc</span> <span class='varid'>dtdPart</span>
-<a name="line-71"></a>               <span class='varop'>+++</span>
-<a name="line-72"></a>	       <span class='conid'>IdValidation</span><span class='varop'>.</span><span class='varid'>validateIds</span> <span class='varid'>dtdPart</span>
-<a name="line-73"></a>	     <span class='layout'>)</span>
-<a name="line-74"></a>      <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t</span>
-<a name="line-75"></a>      <span class='keyword'>where</span>
-<a name="line-76"></a>      <span class='varid'>dtds</span> <span class='keyglyph'>=</span> <span class='varid'>getDTDSubset</span> <span class='varop'>.&gt;</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeDoublicateDefs</span> <span class='varop'>$</span> <span class='varid'>t</span>
-<a name="line-77"></a>      <span class='varid'>dtdPart</span>  <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varid'>dtds</span>
-<a name="line-78"></a>
-<a name="line-79"></a><span class='comment'>-- |</span>
-<a name="line-80"></a><span class='comment'>-- filter for transforming a document with respect to the given DTD.</span>
-<a name="line-81"></a><span class='comment'>--</span>
-<a name="line-82"></a><span class='comment'>-- Validating parsers</span>
-<a name="line-83"></a><span class='comment'>-- are expected to  normalize attribute values and add default values.</span>
-<a name="line-84"></a><span class='comment'>-- This function should be called after a successful validation.</span>
-<a name="line-85"></a><span class='comment'>--</span>
-<a name="line-86"></a><span class='comment'>--</span>
-<a name="line-87"></a><span class='comment'>--    - returns : a function which expects a complete XML document tree</span>
-<a name="line-88"></a><span class='comment'>--                and returns the transformed XmlTree</span>
-<a name="line-89"></a>
-<a name="line-90"></a><a name="transform"></a><span class='definition'>transform</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-91"></a><span class='definition'>transform</span>
-<a name="line-92"></a>    <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span>
-<a name="line-93"></a>               <span class='conop'>:-&gt;</span> <span class='varid'>transformDoc</span>
-<a name="line-94"></a>	     <span class='layout'>,</span> <span class='varid'>this</span>
-<a name="line-95"></a>	       <span class='conop'>:-&gt;</span> <span class='varid'>fatal</span> <span class='str'>"Can't transform document: No document root given"</span>
-<a name="line-96"></a>	     <span class='keyglyph'>]</span>
-<a name="line-97"></a>      <span class='keyword'>where</span>
-<a name="line-98"></a>      <span class='varid'>transformDoc</span> <span class='varid'>t</span>
-<a name="line-99"></a>	  <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>dtds</span>
-<a name="line-100"></a>	      <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='varid'>t</span>
-<a name="line-101"></a>	  <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>
-<a name="line-102"></a>	      <span class='keyglyph'>=</span> <span class='conid'>DocTransformation</span><span class='varop'>.</span><span class='varid'>transform</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>dtds</span><span class='layout'>)</span> <span class='varid'>t</span>
-<a name="line-103"></a>	  <span class='keyword'>where</span>
-<a name="line-104"></a>	  <span class='varid'>dtds</span> <span class='keyglyph'>=</span> <span class='varid'>getDTDSubset</span> <span class='varop'>.&gt;</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeDoublicateDefs</span> <span class='varop'>$</span> <span class='varid'>t</span>
-<a name="line-105"></a>
-<a name="line-106"></a><span class='comment'>-- |</span>
-<a name="line-107"></a><span class='comment'>-- Removes doublicate declarations from the DTD which first declaration is</span>
-<a name="line-108"></a><span class='comment'>-- binding. This is the case for ATTLIST and ENTITY declarations.</span>
-<a name="line-109"></a><span class='comment'>--</span>
-<a name="line-110"></a><span class='comment'>--</span>
-<a name="line-111"></a><span class='comment'>--    - returns : A function that replaces the children of DOCTYPE nodes by a list</span>
-<a name="line-112"></a><span class='comment'>--               where all multiple declarations are removed.</span>
-<a name="line-113"></a>
-<a name="line-114"></a><a name="removeDoublicateDefs"></a><span class='definition'>removeDoublicateDefs</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-115"></a><span class='definition'>removeDoublicateDefs</span>
-<a name="line-116"></a>    <span class='keyglyph'>=</span> <span class='conid'>DTDValidation</span><span class='varop'>.</span><span class='varid'>removeDoublicateDefs</span>
-<a name="line-117"></a>
-<a name="line-118"></a><span class='comment'>--</span>
-<a name="line-119"></a><span class='comment'>-- selects the DTD part of a document</span>
-<a name="line-120"></a><span class='comment'>-- but only, if there is more than the internal part for the 4 predefined XML entities</span>
-<a name="line-121"></a>
-<a name="line-122"></a><a name="getDTDSubset"></a><span class='definition'>getDTDSubset</span>	<span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-123"></a><span class='definition'>getDTDSubset</span>
-<a name="line-124"></a>    <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varop'>.&gt;</span> <span class='varid'>isDoctype</span> <span class='varop'>.&gt;</span> <span class='varid'>hasRootName</span>
-<a name="line-125"></a>      <span class='keyword'>where</span>
-<a name="line-126"></a>      <span class='varid'>hasRootName</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>a_name</span> <span class='varop'>.</span> <span class='varid'>attrlOfDTD</span><span class='layout'>)</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Validator-XmlRE.html b/doc/hdoc/src/Text-XML-HXT-Validator-XmlRE.html
deleted file mode 100644
--- a/doc/hdoc/src/Text-XML-HXT-Validator-XmlRE.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
-<title>Haskell Code by HsColour</title>
-<link type='text/css' rel='stylesheet' href='hscolour.css' />
-</head>
-<body>
-<pre><a name="line-1"></a><span class='comment'>-- |</span>
-<a name="line-2"></a><span class='comment'>-- A module for regular expression matching, adapted for XML DTDs.</span>
-<a name="line-3"></a><span class='comment'>--</span>
-<a name="line-4"></a><span class='comment'>-- This module is based on the module RE.</span>
-<a name="line-5"></a><span class='comment'>--</span>
-<a name="line-6"></a><span class='comment'>-- Author .\\artin Schmidt</span>
-<a name="line-7"></a>
-<a name="line-8"></a><span class='comment'>-- Version : $Id: XmlRE.hs,v 1.1 2004/09/02 19:12:03 hxml Exp $</span>
-<a name="line-9"></a>
-<a name="line-10"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>XmlRE</span>
-<a name="line-11"></a>    <span class='layout'>(</span> <span class='conid'>RE</span>
-<a name="line-12"></a>
-<a name="line-13"></a>    <span class='layout'>,</span> <span class='varid'>checkRE</span>
-<a name="line-14"></a>    <span class='layout'>,</span> <span class='varid'>matches</span>
-<a name="line-15"></a>    <span class='layout'>,</span> <span class='varid'>printRE</span>
-<a name="line-16"></a>
-<a name="line-17"></a>    <span class='layout'>,</span> <span class='varid'>re_unit</span>
-<a name="line-18"></a>    <span class='layout'>,</span> <span class='varid'>re_zero</span>
-<a name="line-19"></a>    <span class='layout'>,</span> <span class='varid'>re_sym</span>
-<a name="line-20"></a>    <span class='layout'>,</span> <span class='varid'>re_rep</span>
-<a name="line-21"></a>    <span class='layout'>,</span> <span class='varid'>re_plus</span>
-<a name="line-22"></a>    <span class='layout'>,</span> <span class='varid'>re_opt</span>
-<a name="line-23"></a>    <span class='layout'>,</span> <span class='varid'>re_seq</span>
-<a name="line-24"></a>    <span class='layout'>,</span> <span class='varid'>re_alt</span>
-<a name="line-25"></a>    <span class='layout'>,</span> <span class='varid'>re_dot</span>
-<a name="line-26"></a>    <span class='layout'>)</span>
-<a name="line-27"></a><span class='keyword'>where</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='comment'>-- import Debug.Trace(trace)</span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>RE</span> <span class='varid'>hiding</span> <span class='layout'>(</span><span class='varid'>matches</span><span class='layout'>)</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>
-<a name="line-36"></a>    <span class='layout'>(</span> <span class='varid'>removeComment</span>
-<a name="line-37"></a>    <span class='layout'>,</span> <span class='varid'>removeWhiteSpace</span>
-<a name="line-38"></a>    <span class='layout'>)</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class='comment'>-- |</span>
-<a name="line-41"></a><span class='comment'>-- Derives a regular expression with respect to a list of elements.</span>
-<a name="line-42"></a><span class='comment'>--</span>
-<a name="line-43"></a><span class='comment'>--    * 1.parameter re :  regular expression</span>
-<a name="line-44"></a><span class='comment'>--</span>
-<a name="line-45"></a><span class='comment'>--    - 2.parameter list :  list of elements to which the regular expression is applied</span>
-<a name="line-46"></a><span class='comment'>--</span>
-<a name="line-47"></a><span class='comment'>--    - returns : the derived regular expression</span>
-<a name="line-48"></a>
-<a name="line-49"></a><a name="matches"></a><span class='definition'>matches</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='conid'>String</span>
-<a name="line-50"></a><span class='definition'>matches</span> <span class='varid'>re</span> <span class='varid'>list</span>
-<a name="line-51"></a>    <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>delta</span> <span class='varid'>re</span> <span class='layout'>(</span><span class='varid'>removeUnimportantStuff</span> <span class='varop'>$$</span> <span class='varid'>list</span><span class='layout'>)</span>
-<a name="line-52"></a>      <span class='keyword'>where</span>
-<a name="line-53"></a>      <span class='varid'>removeUnimportantStuff</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>
-<a name="line-54"></a>      <span class='varid'>removeUnimportantStuff</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='layout'>(</span><span class='varid'>removeWhiteSpace</span> <span class='varop'>`o`</span> <span class='varid'>removeComment</span><span class='layout'>)</span>
-<a name="line-55"></a>      <span class='comment'>-- trace of growth of REs</span>
-<a name="line-56"></a>      <span class='comment'>-- delta' re el = delta (trace (("RE : " ++) . (++ "\n" ) . show $ re) re) el</span>
-<a name="line-57"></a>
-<a name="line-58"></a>
-<a name="line-59"></a><span class='comment'>-- |</span>
-<a name="line-60"></a><span class='comment'>-- Derives a regular expression with respect to one element.</span>
-<a name="line-61"></a><span class='comment'>--</span>
-<a name="line-62"></a><span class='comment'>-- L(delta e x) = x \ L(e)</span>
-<a name="line-63"></a><span class='comment'>--</span>
-<a name="line-64"></a><span class='comment'>--    * 1.parameter re :  regular expression to be derived</span>
-<a name="line-65"></a><span class='comment'>--</span>
-<a name="line-66"></a><span class='comment'>--    - 2.parameter el :  the element on which the regular expression is applied</span>
-<a name="line-67"></a><span class='comment'>--</span>
-<a name="line-68"></a><span class='comment'>--    - returns : the derived regular expression</span>
-<a name="line-69"></a>
-<a name="line-70"></a><a name="delta"></a><span class='definition'>delta</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>RE</span> <span class='conid'>String</span>
-<a name="line-71"></a><span class='definition'>delta</span> <span class='varid'>re</span> <span class='varid'>el</span>
-<a name="line-72"></a>    <span class='keyglyph'>|</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>allowed</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>re</span>
-<a name="line-73"></a>    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>        <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>re</span> <span class='keyword'>of</span>
-<a name="line-74"></a>        <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>		 <span class='keyglyph'>-&gt;</span> <span class='varid'>re_zero</span> <span class='varid'>m</span>
-<a name="line-75"></a>        <span class='conid'>RE_UNIT</span>			 <span class='keyglyph'>-&gt;</span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='varid'>elemName</span> <span class='varid'>el</span> <span class='varop'>++</span><span class='str'>" unexpected."</span><span class='layout'>)</span>
-<a name="line-76"></a>        <span class='conid'>RE_SYM</span> <span class='varid'>sym</span>
-<a name="line-77"></a>    	    <span class='keyglyph'>|</span> <span class='varid'>sym</span> <span class='varop'>==</span> <span class='varid'>k_pcdata</span>	 <span class='keyglyph'>-&gt;</span> <span class='keyword'>let</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>getNode</span> <span class='varid'>el</span> <span class='keyword'>in</span>
-<a name="line-78"></a>	                            <span class='keyword'>if</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>isXTextNode</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>isXCdataNode</span> <span class='varid'>node</span><span class='layout'>)</span><span class='layout'>)</span>
-<a name="line-79"></a>				    <span class='keyword'>then</span> <span class='varid'>re_unit</span>
-<a name="line-80"></a>				    <span class='keyword'>else</span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Character data expected, but "</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>el</span> <span class='varop'>++</span><span class='str'>" found."</span><span class='layout'>)</span>
-<a name="line-81"></a>       	    <span class='keyglyph'>|</span> <span class='varid'>expectedNode</span> <span class='varid'>el</span> <span class='varid'>sym</span> <span class='keyglyph'>-&gt;</span> <span class='varid'>re_unit</span>
-<a name="line-82"></a>	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>           <span class='keyglyph'>-&gt;</span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sym</span> <span class='varop'>++</span><span class='str'>" expected, but "</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>el</span> <span class='varop'>++</span><span class='str'>" found."</span><span class='layout'>)</span>
-<a name="line-83"></a>        <span class='conid'>RE_REP</span> <span class='varid'>e</span>                  <span class='keyglyph'>-&gt;</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>re_rep</span> <span class='varid'>e</span><span class='layout'>)</span>
-<a name="line-84"></a>        <span class='conid'>RE_PLUS</span> <span class='varid'>e</span>                 <span class='keyglyph'>-&gt;</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>re_rep</span> <span class='varid'>e</span><span class='layout'>)</span>
-<a name="line-85"></a>        <span class='conid'>RE_OPT</span> <span class='varid'>e</span>                  <span class='keyglyph'>-&gt;</span> <span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span>
-<a name="line-86"></a>        <span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span>
-<a name="line-87"></a>       	    <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>e</span>          <span class='keyglyph'>-&gt;</span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>el</span><span class='layout'>)</span>
-<a name="line-88"></a>       	    <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>           <span class='keyglyph'>-&gt;</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='varid'>f</span>
-<a name="line-89"></a>        <span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span>                <span class='keyglyph'>-&gt;</span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>el</span><span class='layout'>)</span>
-<a name="line-90"></a>        <span class='conid'>RE_DOT</span>                    <span class='keyglyph'>-&gt;</span> <span class='varid'>re_unit</span>
-<a name="line-91"></a>
-<a name="line-92"></a>    <span class='keyword'>where</span>
-<a name="line-93"></a>    <span class='varid'>expectedNode</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-94"></a>    <span class='varid'>expectedNode</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>sym</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>sym</span>
-<a name="line-95"></a>    <span class='varid'>expectedNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span>			  <span class='keyglyph'>=</span> <span class='conid'>False</span>
-<a name="line-96"></a>
-<a name="line-97"></a>    <span class='varid'>elemName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>String</span>
-<a name="line-98"></a>    <span class='varid'>elemName</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='str'>"element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>n</span><span class='layout'>)</span>
-<a name="line-99"></a>    <span class='varid'>elemName</span> <span class='keyword'>_</span>				<span class='keyglyph'>=</span> <span class='str'>"character data"</span>
-<a name="line-100"></a>
-<a name="line-101"></a>    <span class='varid'>allowed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-&gt;</span> <span class='conid'>Bool</span>
-<a name="line-102"></a>    <span class='varid'>allowed</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-103"></a>    <span class='varid'>allowed</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>		<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-104"></a>    <span class='varid'>allowed</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>	<span class='keyglyph'>=</span> <span class='conid'>True</span>
-<a name="line-105"></a>    <span class='varid'>allowed</span> <span class='keyword'>_</span>				<span class='keyglyph'>=</span> <span class='conid'>False</span>
-</pre></body>
-</html>
diff --git a/doc/hdoc/src/Text-XML-HXT-Version.html b/doc/hdoc/src/Text-XML-HXT-Version.html
new file mode 100644
--- /dev/null
+++ b/doc/hdoc/src/Text-XML-HXT-Version.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
+<title>Haskell Code by HsColour</title>
+<link type='text/css' rel='stylesheet' href='hscolour.css' />
+</head>
+<body>
+<pre><a name="line-1"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Version</span>
+<a name="line-2"></a><span class='keyword'>where</span>
+<a name="line-3"></a><a name="hxt_version"></a><span class='definition'>hxt_version</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>
+<a name="line-4"></a><span class='definition'>hxt_version</span> <span class='keyglyph'>=</span> <span class='str'>"8.1.0"</span>
+</pre></body>
+</html>
diff --git a/doc/index.html b/doc/index.html
--- a/doc/index.html
+++ b/doc/index.html
@@ -1,12 +1,12 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
-    <title>Haskell XML Toolbox 8.0.0</title>
+    <title>Haskell XML Toolbox 8.1.0</title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   </head>
 
   <body style="background-color: #ffffff;">
-    <h1>Haskell XML Toolbox 8.0.0</h1>
+    <h1>Haskell XML Toolbox 8.1.0</h1>
 
     <h3>Contents</h3>
     <ul>
@@ -173,7 +173,7 @@
     <a name="req"></a>
     <h3>Requirements</h3>
     <ul>
-      <li>ghc-6.8 or ghc-6.6 with cabal 1.2, HXT 8.0.0 works with
+      <li>ghc-6.8 or ghc-6.6 with cabal 1.2, HXT 8.1.0 works with
 	ghc-6.6 and cabal &lt; 1.2</li>
       <li><a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTP">HTTP package >= 3001.0.4</a></li>
       <li><a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/tagsoup">tagsoup package >= 0.6</a></li>
@@ -186,8 +186,8 @@
     <a name="down"></a>
     <h3>Downloads</h3>
     <p>
-      <a href="hxt-8.0.0.tar.gz">Haskell XML Toolbox 8.0.0</a>,
-      released 2008-04-24:
+      <a href="hxt-8.1.0.tar.gz">Haskell XML Toolbox 8.1.0</a>,
+      released 2008-06-23:
     </p>
     <ul>
       <li>This version works with ghc 6.8 and ghc 6.6 with cabal
@@ -229,7 +229,7 @@
     <p>
       Before installing this version, install the <a href="http://www.haskell.org/">Haskell HTTP module</a>.
       For a quick install with Cabal execute the following commands in
-      <tt>.../HXT-8.0.0</tt>
+      <tt>.../HXT-8.1.0</tt>
     </p>
     <pre>
     make setup
@@ -256,6 +256,37 @@
     <a name="change"></a>
     <h3>Change History</h3>
     <ul>
+      <li>In <a href="hxt-8.1.0.tar.gz">Version 8.1.0</a>
+	<ul>
+	  <li>
+	    HTTP interface changed to work with libcurl
+	    via curl bindings with package <a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl">curl</a>.
+	    So the HTTP package is not longer needed, also the old
+	    and somewhat inefficent interface to curl by starting an external process and
+	    communicate via a pipe is not longer needed.
+	    When installing the curl bindings, be aware that the
+	    libcurl development packages including the C header files
+	    must be installed. Otherwise the Setup.hs will complain of
+	    missing files.
+	  </li>
+	  <li>
+	    New input option for ignoring none XML/HTML contents
+	    when reading documents (useful for crawler like applications).
+	  </li>
+	  <li>
+	    Mime type support for the <tt>file:</tt> protocol. Mime type mapping
+	    can be controlled by a config file in the format of
+	    <tt>/etc/mime.types</tt> on some linux systems.
+	  </li
+	  <li>
+	    A few more picklers for de-serialization from/to XML, e.g. for maps.
+	  </li>
+	  <li>
+	    A new option for ignoring decoding errors when reading XML documents.
+	    This may be useful for crawler like applications.
+	  </li>
+	</ul>
+      </li>
       <li>In <a href="hxt-8.0.0.tar.gz">Version 8.0.0</a>
 	<ul>
 	  <li>
@@ -518,7 +549,7 @@
 	    </a>
 	  </td>
 	</tr>
-	<tr><td><i>Last modified: 2008-04-24</i></td><td>&nbsp;</td></tr>
+	<tr><td><i>Last modified: 2008-06-23</i></td><td>&nbsp;</td></tr>
     </table>
 
   </body>
diff --git a/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Baseball. b/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Baseball.
deleted file mode 100644
--- a/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Baseball.
+++ /dev/null
@@ -1,313 +0,0 @@
-{- |
-  Example for usage of pickler functions
-  to de-/serialise from/to XML
-
-  Example data is taken from haskell wiki
-  http://www.haskell.org/haskellwiki/HXT/Practical/Simple2
--}
-
-module Main
-where
-
-import           Data.Map (Map, fromList, toList)
-import qualified Data.Map as M
-
-import Text.XML.HXT.Arrow
-
--- Example data drawn from:
--- http://www.ibiblio.org/xml/books/bible/examples/05/5-1.xml
-
--- ------------------------------------------------------------
--- the data modell
-
-data Season = Season
-    { sYear    :: Int
-    , sLeagues :: Leagues
-    }
-	      deriving (Show, Eq)
-
-type Leagues   = Map String Divisions
-
-type Divisions = Map String [Team]
-
-data Team = Team
-    { teamName :: String
-    , city     :: String
-    , players  :: [Player]
-    }
-	    deriving (Show, Eq)
-	     
-data Player = Player
-    { firstName :: String
-    , lastName  :: String
-    , position  :: String
-    , atBats    :: Maybe Int
-    , hits      :: Maybe Int
-    , era       :: Maybe Float
-    }
-	      deriving (Show, Eq)
-
--- ------------------------------------------------------------
--- the pickler instance declarations
--- in this case just for uniform naming
-
-instance XmlPickler Season where
-    xpickle = xpSeason
-
-instance XmlPickler Team where
-    xpickle = xpTeam
-
-instance XmlPickler Player where
-    xpickle = xpPlayer
-
--- ------------------------------------------------------------
--- for every data type there is a pickler
-
--- the XML root element
-
-xpSeason	:: PU Season
-xpSeason
-    = xpElem "SEASON" $
-      xpWrap ( uncurry Season
-	     , \ s -> (sYear s, sLeagues s)) $
-      xpPair (xpAttr "YEAR" xpickle) xpLeagues
-
-xpLeagues	:: PU Leagues
-xpLeagues
-    = xpWrap ( fromList
-	     , toList ) $
-      xpList $
-      xpElem "LEAGUE" $
-      xpPair (xpAttr "NAME" xpText) xpDivisions
-
-xpDivisions	:: PU Divisions
-xpDivisions
-    = xpWrap ( fromList
-	     , toList
-	     ) $
-      xpList $
-      xpElem "DIVISION" $
-      xpPair (xpAttr "NAME" xpText) xpickle
-
-xpTeam	:: PU Team
-xpTeam
-    = xpElem "TEAM" $
-      xpWrap ( uncurry3 Team
-	     , \ t -> (teamName t, city t, players t)) $
-      xpTriple (xpAttr "NAME" xpText) (xpAttr "CITY" xpText) (xpList xpickle)
-
-xpPlayer	:: PU Player
-xpPlayer
-    = xpElem "PLAYER" $
-      xpWrap ( \ ((f,l,p),(a,h,e)) -> Player f l p a h e
-	     , \ t -> ((firstName t, lastName t, position t),(atBats t, hits t, era t))) $
-      xpPair (xpTriple (xpAttr "GIVEN_NAME" xpText)
-	               (xpAttr "SURNAME"    xpText)
-	               (xpAttr "POSITION"   xpText))
-             (xpTriple (xpOption (xpAttr "AT_BATS" xpickle))
-	               (xpOption (xpAttr "HITS"    xpickle))
-	               (xpOption (xpAttr "ERA"     xpPrim )))
-
-
--- ------------------------------------------------------------
-
--- a simple pickle/unpickle application
-
-main	:: IO ()
-main
-    = do
-      runX ( xunpickleDocument xpSeason [ (a_validate,v_0)
-					, (a_trace, v_1)
-					, (a_remove_whitespace,v_1)
-					, (a_preserve_comment, v_0)
-					] "simple2.xml"
-	     >>>
-	     processSeason
-	     >>>
-	     xpickleDocument xpSeason [ (a_indent, v_1)
-				      ] "new-simple2.xml"
-	   )
-      return ()
-
--- the dummy for processing the unpickled data
-
-processSeason	:: IOSArrow Season Season
-processSeason
-    = arrIO ( \ x -> do {print x ; return x})
-
--- ------------------------------------------------------------
-
--- the internal data of "simple2.xml"
-
-season1998	:: Season
-season1998
-    = Season
-      { sYear = 1998
-      , sLeagues = fromList
-	[ ( "American League"
-	  , fromList
-	    [ ( "Central"
-	      , [ Team { teamName = "White Sox"
-		       , city = "Chicago"
-		       , players = []}
-		, Team { teamName = "Royals"
-		       , city = "Kansas City"
-		       , players = []}
-		, Team { teamName = "Tigers"
-		       , city = "Detroit"
-		       , players = []}
-		, Team { teamName = "Indians"
-		       , city = "Cleveland"
-		       , players = []}
-		, Team { teamName = "Twins"
-		       , city = "Minnesota"
-		       , players = []}
-		])
-	    , ( "East"
-	      , [ Team { teamName = "Orioles"
-		       , city = "Baltimore"
-		       , players = []}
-		, Team { teamName = "Red Sox"
-		       , city = "Boston"
-		       , players = []}
-		, Team { teamName = "Yankees"
-		       , city = "New York"
-		       , players = []}
-		, Team { teamName = "Devil Rays"
-		       , city = "Tampa Bay"
-		       , players = []}
-		, Team { teamName = "Blue Jays"
-		       , city = "Toronto"
-		       , players = []}
-		])
-	    , ( "West"
-	      , [ Team { teamName = "Angels"
-		       , city = "Anaheim"
-		       , players = []}
-		, Team { teamName = "Athletics"
-		       , city = "Oakland"
-		       , players = []}
-		, Team { teamName = "Mariners"
-		       , city = "Seattle"
-		       , players = []}
-		, Team { teamName = "Rangers"
-		       , city = "Texas"
-		       , players = []}
-		])
-	    ])
-	, ( "National League"
-	  , fromList
-	    [ ( "Central"
-	      , [ Team { teamName = "Cubs"
-		       , city = "Chicago"
-		       , players = []}
-		, Team { teamName = "Reds"
-		       , city = "Cincinnati"
-		       , players = []}
-		, Team { teamName = "Astros"
-		       , city = "Houston"
-		       , players = []}
-		, Team { teamName = "Brewers"
-		       , city = "Milwaukee"
-		       , players = []}
-		, Team { teamName = "Pirates"
-		       , city = "Pittsburgh"
-		       , players = []}
-		, Team { teamName = "Cardinals"
-		       , city = "St. Louis"
-		       , players = []}
-		])
-	    , ( "East"
-	      , [ Team { teamName = "Braves"
-		       , city = "Atlanta"
-		       , players =
-			 [ Player { firstName = "Marty"
-				  , lastName = "Malloy"
-				  , position = "Second Base"
-				  , atBats = Just 28
-				  , hits = Just 5
-				  , era = Nothing}
-			 , Player { firstName = "Ozzie"
-				  , lastName = "Guillen"
-				  , position = "Shortstop"
-				  , atBats = Just 264
-				  , hits = Just 73
-				  , era = Nothing}
-			 , Player { firstName = "Danny"
-				  , lastName = "Bautista"
-				  , position = "Outfield"
-				  , atBats = Just 144
-				  , hits = Just 36
-				  , era = Nothing}
-			 , Player { firstName = "Gerald"
-				  , lastName = "Williams"
-				  , position = "Outfield"
-				  , atBats = Just 266
-				  , hits = Just 81
-				  , era = Nothing}
-			 , Player { firstName = "Tom"
-				  , lastName = "Glavine"
-				  , position = "Starting Pitcher"
-				  , atBats = Nothing
-				  , hits = Nothing
-				  , era = Just 2.47}
-			 , Player { firstName = "Javier"
-				  , lastName = "Lopez"
-				  , position = "Catcher"
-				  , atBats = Just 489
-				  , hits = Just 139
-				  , era = Nothing}
-			 , Player { firstName = "Ryan"
-				  , lastName = "Klesko"
-				  , position = "Outfield"
-				  , atBats = Just 427
-				  , hits = Just 117
-				  , era = Nothing}
-			 , Player { firstName = "Andres"
-				  , lastName = "Galarraga"
-				  , position = "First Base"
-				  , atBats = Just 555
-				  , hits = Just 169
-				  , era = Nothing}
-			 , Player { firstName = "Wes"
-				  , lastName = "Helms"
-				  , position = "Third Base"
-				  , atBats = Just 13
-				  , hits = Just 4
-				  , era = Nothing}
-			 ]}
-		, Team { teamName = "Marlins"
-		       , city = "Florida"
-		       , players = []}
-		, Team { teamName = "Expos"
-		       , city = "Montreal"
-		       , players = []}
-		, Team { teamName = "Mets"
-		       , city = "New York"
-		       , players = []}
-		, Team { teamName = "Phillies"
-		       , city = "Philadelphia"
-		       , players = []}
-		])
-	    , ( "West"
-	      , [ Team { teamName = "Diamondbacks"
-		       , city = "Arizona"
-		       , players = []}
-		, Team { teamName = "Rockies"
-		       , city = "Colorado"
-		       , players = []}
-		, Team { teamName = "Dodgers"
-		       , city = "Los Angeles"
-		       , players = []}
-		, Team { teamName = "Padres"
-		       , city = "San Diego"
-		       , players = []}
-		, Team { teamName = "Giants"
-		       , city = "San Francisco"
-		       , players = []}
-		])
-	    ])
-	]
-      }
-
--- ------------------------------------------------------------
diff --git a/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Football. b/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Football.
deleted file mode 100644
--- a/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Football.
+++ /dev/null
@@ -1,313 +0,0 @@
-{- |
-  Example for usage of pickler functions
-  to de-/serialise from/to XML
-
-  Example data is taken from haskell wiki
-  http://www.haskell.org/haskellwiki/HXT/Practical/Simple2
--}
-
-module Main
-where
-
-import           Data.Map (Map, fromList, toList)
-import qualified Data.Map as M
-
-import Text.XML.HXT.Arrow
-
--- Example data drawn from:
--- http://www.ibiblio.org/xml/books/bible/examples/05/5-1.xml
-
--- ------------------------------------------------------------
--- the data modell
-
-data Season = Season
-    { sYear    :: Int
-    , sLeagues :: Leagues
-    }
-	      deriving (Show, Eq)
-
-type Leagues   = Map String Divisions
-
-type Divisions = Map String [Team]
-
-data Team = Team
-    { teamName :: String
-    , city     :: String
-    , players  :: [Player]
-    }
-	    deriving (Show, Eq)
-	     
-data Player = Player
-    { firstName :: String
-    , lastName  :: String
-    , position  :: String
-    , atBats    :: Maybe Int
-    , hits      :: Maybe Int
-    , era       :: Maybe Float
-    }
-	      deriving (Show, Eq)
-
--- ------------------------------------------------------------
--- the pickler instance declarations
--- in this case just for uniform naming
-
-instance XmlPickler Season where
-    xpickle = xpSeason
-
-instance XmlPickler Team where
-    xpickle = xpTeam
-
-instance XmlPickler Player where
-    xpickle = xpPlayer
-
--- ------------------------------------------------------------
--- for every data type there is a pickler
-
--- the XML root element
-
-xpSeason	:: PU Season
-xpSeason
-    = xpElem "SEASON" $
-      xpWrap ( uncurry Season
-	     , \ s -> (sYear s, sLeagues s)) $
-      xpPair (xpAttr "YEAR" xpickle) xpLeagues
-
-xpLeagues	:: PU Leagues
-xpLeagues
-    = xpWrap ( fromList
-	     , toList ) $
-      xpList $
-      xpElem "LEAGUE" $
-      xpPair (xpAttr "NAME" xpText) xpDivisions
-
-xpDivisions	:: PU Divisions
-xpDivisions
-    = xpWrap ( fromList
-	     , toList
-	     ) $
-      xpList $
-      xpElem "DIVISION" $
-      xpPair (xpAttr "NAME" xpText) xpickle
-
-xpTeam	:: PU Team
-xpTeam
-    = xpElem "TEAM" $
-      xpWrap ( uncurry3 Team
-	     , \ t -> (teamName t, city t, players t)) $
-      xpTriple (xpAttr "NAME" xpText) (xpAttr "CITY" xpText) (xpList xpickle)
-
-xpPlayer	:: PU Player
-xpPlayer
-    = xpElem "PLAYER" $
-      xpWrap ( \ ((f,l,p),(a,h,e)) -> Player f l p a h e
-	     , \ t -> ((firstName t, lastName t, position t),(atBats t, hits t, era t))) $
-      xpPair (xpTriple (xpAttr "GIVEN_NAME" xpText)
-	               (xpAttr "SURNAME"    xpText)
-	               (xpAttr "POSITION"   xpText))
-             (xpTriple (xpOption (xpAttr "AT_BATS" xpickle))
-	               (xpOption (xpAttr "HITS"    xpickle))
-	               (xpOption (xpAttr "ERA"     xpPrim )))
-
-
--- ------------------------------------------------------------
-
--- a simple pickle/unpickle application
-
-main	:: IO ()
-main
-    = do
-      runX ( xunpickleDocument xpSeason [ (a_validate,v_0)
-					, (a_trace, v_1)
-					, (a_remove_whitespace,v_1)
-					, (a_preserve_comment, v_0)
-					] "simple2.xml"
-	     >>>
-	     processSeason
-	     >>>
-	     xpickleDocument xpSeason [ (a_indent, v_1)
-				      ] "new-simple2.xml"
-	   )
-      return ()
-
--- the dummy for processing the unpickled data
-
-processSeason	:: IOSArrow Season Season
-processSeason
-    = arrIO ( \ x -> do {print x ; return x})
-
--- ------------------------------------------------------------
-
--- the internal data of "simple2.xml"
-
-season1998	:: Season
-season1998
-    = Season
-      { sYear = 1998
-      , sLeagues = fromList
-	[ ( "American League"
-	  , fromList
-	    [ ( "Central"
-	      , [ Team { teamName = "White Sox"
-		       , city = "Chicago"
-		       , players = []}
-		, Team { teamName = "Royals"
-		       , city = "Kansas City"
-		       , players = []}
-		, Team { teamName = "Tigers"
-		       , city = "Detroit"
-		       , players = []}
-		, Team { teamName = "Indians"
-		       , city = "Cleveland"
-		       , players = []}
-		, Team { teamName = "Twins"
-		       , city = "Minnesota"
-		       , players = []}
-		])
-	    , ( "East"
-	      , [ Team { teamName = "Orioles"
-		       , city = "Baltimore"
-		       , players = []}
-		, Team { teamName = "Red Sox"
-		       , city = "Boston"
-		       , players = []}
-		, Team { teamName = "Yankees"
-		       , city = "New York"
-		       , players = []}
-		, Team { teamName = "Devil Rays"
-		       , city = "Tampa Bay"
-		       , players = []}
-		, Team { teamName = "Blue Jays"
-		       , city = "Toronto"
-		       , players = []}
-		])
-	    , ( "West"
-	      , [ Team { teamName = "Angels"
-		       , city = "Anaheim"
-		       , players = []}
-		, Team { teamName = "Athletics"
-		       , city = "Oakland"
-		       , players = []}
-		, Team { teamName = "Mariners"
-		       , city = "Seattle"
-		       , players = []}
-		, Team { teamName = "Rangers"
-		       , city = "Texas"
-		       , players = []}
-		])
-	    ])
-	, ( "National League"
-	  , fromList
-	    [ ( "Central"
-	      , [ Team { teamName = "Cubs"
-		       , city = "Chicago"
-		       , players = []}
-		, Team { teamName = "Reds"
-		       , city = "Cincinnati"
-		       , players = []}
-		, Team { teamName = "Astros"
-		       , city = "Houston"
-		       , players = []}
-		, Team { teamName = "Brewers"
-		       , city = "Milwaukee"
-		       , players = []}
-		, Team { teamName = "Pirates"
-		       , city = "Pittsburgh"
-		       , players = []}
-		, Team { teamName = "Cardinals"
-		       , city = "St. Louis"
-		       , players = []}
-		])
-	    , ( "East"
-	      , [ Team { teamName = "Braves"
-		       , city = "Atlanta"
-		       , players =
-			 [ Player { firstName = "Marty"
-				  , lastName = "Malloy"
-				  , position = "Second Base"
-				  , atBats = Just 28
-				  , hits = Just 5
-				  , era = Nothing}
-			 , Player { firstName = "Ozzie"
-				  , lastName = "Guillen"
-				  , position = "Shortstop"
-				  , atBats = Just 264
-				  , hits = Just 73
-				  , era = Nothing}
-			 , Player { firstName = "Danny"
-				  , lastName = "Bautista"
-				  , position = "Outfield"
-				  , atBats = Just 144
-				  , hits = Just 36
-				  , era = Nothing}
-			 , Player { firstName = "Gerald"
-				  , lastName = "Williams"
-				  , position = "Outfield"
-				  , atBats = Just 266
-				  , hits = Just 81
-				  , era = Nothing}
-			 , Player { firstName = "Tom"
-				  , lastName = "Glavine"
-				  , position = "Starting Pitcher"
-				  , atBats = Nothing
-				  , hits = Nothing
-				  , era = Just 2.47}
-			 , Player { firstName = "Javier"
-				  , lastName = "Lopez"
-				  , position = "Catcher"
-				  , atBats = Just 489
-				  , hits = Just 139
-				  , era = Nothing}
-			 , Player { firstName = "Ryan"
-				  , lastName = "Klesko"
-				  , position = "Outfield"
-				  , atBats = Just 427
-				  , hits = Just 117
-				  , era = Nothing}
-			 , Player { firstName = "Andres"
-				  , lastName = "Galarraga"
-				  , position = "First Base"
-				  , atBats = Just 555
-				  , hits = Just 169
-				  , era = Nothing}
-			 , Player { firstName = "Wes"
-				  , lastName = "Helms"
-				  , position = "Third Base"
-				  , atBats = Just 13
-				  , hits = Just 4
-				  , era = Nothing}
-			 ]}
-		, Team { teamName = "Marlins"
-		       , city = "Florida"
-		       , players = []}
-		, Team { teamName = "Expos"
-		       , city = "Montreal"
-		       , players = []}
-		, Team { teamName = "Mets"
-		       , city = "New York"
-		       , players = []}
-		, Team { teamName = "Phillies"
-		       , city = "Philadelphia"
-		       , players = []}
-		])
-	    , ( "West"
-	      , [ Team { teamName = "Diamondbacks"
-		       , city = "Arizona"
-		       , players = []}
-		, Team { teamName = "Rockies"
-		       , city = "Colorado"
-		       , players = []}
-		, Team { teamName = "Dodgers"
-		       , city = "Los Angeles"
-		       , players = []}
-		, Team { teamName = "Padres"
-		       , city = "San Diego"
-		       , players = []}
-		, Team { teamName = "Giants"
-		       , city = "San Francisco"
-		       , players = []}
-		])
-	    ])
-	]
-      }
-
--- ------------------------------------------------------------
diff --git a/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Makefile b/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Makefile
deleted file mode 100644
--- a/examples/arrows/AGentleIntroductionToHXT/AGentleIntroductionToHXT/PicklerExample/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# $Id: Makefile,v 1.2 2006/11/17 17:16:24 hxml Exp $
-#
-# hello world application of Haskell XML Toolbox
-
-HXT_HOME	= ../../../..
-PKGFLAGS	= 
-GHCFLAGS	= -W -O2
-GHC		= ghc $(GHCFLAGS) $(PKGFLAGS)
-
-DIST		= $(HXT_HOME)/dist/examples/arrows/AGentleIntroductionToHXT/
-DIST_DIR	= $(DIST)/AGentleIntroductionToHXT/PicklerExample/
-
-src		= Baseball.hs
-prog		= ./Baseball
-
-all		:
-		$(MAKE) $(prog)
-
-force		:
-		$(MAKE) distclean all
-
-test		: $(prog)
-		$(prog)
-
-dist		:
-		[ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)
-		cp $(src) simple2.xm new-simple2.xm Makefile $(DIST_DIR)
-
-clean		:
-		rm -f *.o *.hi
-
-distclean	:
-		$(MAKE) clean
-		rm -f $(prog)
-
-.PHONY		: all test dist clean distclean force
-
-$(prog)		: $(src)
-		$(GHC) --make -o $@ $<
-
-
diff --git a/examples/arrows/AGentleIntroductionToHXT/Makefile b/examples/arrows/AGentleIntroductionToHXT/Makefile
--- a/examples/arrows/AGentleIntroductionToHXT/Makefile
+++ b/examples/arrows/AGentleIntroductionToHXT/Makefile
@@ -2,6 +2,8 @@
 #
 # hello world application of Haskell XML Toolbox
 
+EXAMPLES	= PicklerExample
+
 HXT_HOME	= ../../..
 PKGFLAGS	= 
 GHCFLAGS	= -W -O2
@@ -29,22 +31,24 @@
 		toAbsRefs \
 		toAbsRefs1
 
-all		: $(prog)
+all		:
+		$(MAKE) $(prog)
+		$(foreach i,$(EXAMPLES),$(MAKE) -C $i PKGFLAGS="$(PKGFLAGS)" $@ ;)
 
 force		:
 		$(MAKE) distclean all
 
 test		: $(prog)
-		for op in $(tests) ; \
-		do \
-			$(prog) $$op "http://www.haskell.org/" "-" ; \
-		done
+		$(foreach op,$(tests),$(prog) $(op) "http://www.haskell.org/" "-" ;)
+		$(foreach i,$(EXAMPLES),$(MAKE) -C $i $@ ;)
 
 dist		:
 		[ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)
+		$(foreach i,$(EXAMPLES),$(MAKE) -C $i dist DIST=../$(DIST_DIR) ;)
 		cp $(src) Makefile $(DIST_DIR)
 
 clean		:
+		$(foreach i,$(EXAMPLES),$(MAKE) -C $i $@ ;)
 		rm -f *.o *.hi
 
 distclean	:
diff --git a/examples/arrows/AGentleIntroductionToHXT/PicklerExample/Baseball.hs b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/Baseball.hs
new file mode 100644
--- /dev/null
+++ b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/Baseball.hs
@@ -0,0 +1,313 @@
+{- |
+  Example for usage of pickler functions
+  to de-/serialise from/to XML
+
+  Example data is taken from haskell wiki
+  http://www.haskell.org/haskellwiki/HXT/Practical/Simple2
+-}
+
+module Main
+where
+
+import           Data.Map (Map, fromList, toList)
+import qualified Data.Map as M
+
+import Text.XML.HXT.Arrow
+
+-- Example data drawn from:
+-- http://www.ibiblio.org/xml/books/bible/examples/05/5-1.xml
+
+-- ------------------------------------------------------------
+-- the data modell
+
+data Season = Season
+    { sYear    :: Int
+    , sLeagues :: Leagues
+    }
+	      deriving (Show, Eq)
+
+type Leagues   = Map String Divisions
+
+type Divisions = Map String [Team]
+
+data Team = Team
+    { teamName :: String
+    , city     :: String
+    , players  :: [Player]
+    }
+	    deriving (Show, Eq)
+	     
+data Player = Player
+    { firstName :: String
+    , lastName  :: String
+    , position  :: String
+    , atBats    :: Maybe Int
+    , hits      :: Maybe Int
+    , era       :: Maybe Float
+    }
+	      deriving (Show, Eq)
+
+-- ------------------------------------------------------------
+-- the pickler instance declarations
+-- in this case just for uniform naming
+
+instance XmlPickler Season where
+    xpickle = xpSeason
+
+instance XmlPickler Team where
+    xpickle = xpTeam
+
+instance XmlPickler Player where
+    xpickle = xpPlayer
+
+-- ------------------------------------------------------------
+-- for every data type there is a pickler
+
+-- the XML root element
+
+xpSeason	:: PU Season
+xpSeason
+    = xpElem "SEASON" $
+      xpWrap ( uncurry Season
+	     , \ s -> (sYear s, sLeagues s)) $
+      xpPair (xpAttr "YEAR" xpickle) xpLeagues
+
+xpLeagues	:: PU Leagues
+xpLeagues
+    = xpWrap ( fromList
+	     , toList ) $
+      xpList $
+      xpElem "LEAGUE" $
+      xpPair (xpAttr "NAME" xpText) xpDivisions
+
+xpDivisions	:: PU Divisions
+xpDivisions
+    = xpWrap ( fromList
+	     , toList
+	     ) $
+      xpList $
+      xpElem "DIVISION" $
+      xpPair (xpAttr "NAME" xpText) xpickle
+
+xpTeam	:: PU Team
+xpTeam
+    = xpElem "TEAM" $
+      xpWrap ( uncurry3 Team
+	     , \ t -> (teamName t, city t, players t)) $
+      xpTriple (xpAttr "NAME" xpText) (xpAttr "CITY" xpText) (xpList xpickle)
+
+xpPlayer	:: PU Player
+xpPlayer
+    = xpElem "PLAYER" $
+      xpWrap ( \ ((f,l,p),(a,h,e)) -> Player f l p a h e
+	     , \ t -> ((firstName t, lastName t, position t),(atBats t, hits t, era t))) $
+      xpPair (xpTriple (xpAttr "GIVEN_NAME" xpText)
+	               (xpAttr "SURNAME"    xpText)
+	               (xpAttr "POSITION"   xpText))
+             (xpTriple (xpOption (xpAttr "AT_BATS" xpickle))
+	               (xpOption (xpAttr "HITS"    xpickle))
+	               (xpOption (xpAttr "ERA"     xpPrim )))
+
+
+-- ------------------------------------------------------------
+
+-- a simple pickle/unpickle application
+
+main	:: IO ()
+main
+    = do
+      runX ( xunpickleDocument xpSeason [ (a_validate,v_0)
+					, (a_trace, v_1)
+					, (a_remove_whitespace,v_1)
+					, (a_preserve_comment, v_0)
+					] "simple2.xml"
+	     >>>
+	     processSeason
+	     >>>
+	     xpickleDocument xpSeason [ (a_indent, v_1)
+				      ] "new-simple2.xml"
+	   )
+      return ()
+
+-- the dummy for processing the unpickled data
+
+processSeason	:: IOSArrow Season Season
+processSeason
+    = arrIO ( \ x -> do {print x ; return x})
+
+-- ------------------------------------------------------------
+
+-- the internal data of "simple2.xml"
+
+season1998	:: Season
+season1998
+    = Season
+      { sYear = 1998
+      , sLeagues = fromList
+	[ ( "American League"
+	  , fromList
+	    [ ( "Central"
+	      , [ Team { teamName = "White Sox"
+		       , city = "Chicago"
+		       , players = []}
+		, Team { teamName = "Royals"
+		       , city = "Kansas City"
+		       , players = []}
+		, Team { teamName = "Tigers"
+		       , city = "Detroit"
+		       , players = []}
+		, Team { teamName = "Indians"
+		       , city = "Cleveland"
+		       , players = []}
+		, Team { teamName = "Twins"
+		       , city = "Minnesota"
+		       , players = []}
+		])
+	    , ( "East"
+	      , [ Team { teamName = "Orioles"
+		       , city = "Baltimore"
+		       , players = []}
+		, Team { teamName = "Red Sox"
+		       , city = "Boston"
+		       , players = []}
+		, Team { teamName = "Yankees"
+		       , city = "New York"
+		       , players = []}
+		, Team { teamName = "Devil Rays"
+		       , city = "Tampa Bay"
+		       , players = []}
+		, Team { teamName = "Blue Jays"
+		       , city = "Toronto"
+		       , players = []}
+		])
+	    , ( "West"
+	      , [ Team { teamName = "Angels"
+		       , city = "Anaheim"
+		       , players = []}
+		, Team { teamName = "Athletics"
+		       , city = "Oakland"
+		       , players = []}
+		, Team { teamName = "Mariners"
+		       , city = "Seattle"
+		       , players = []}
+		, Team { teamName = "Rangers"
+		       , city = "Texas"
+		       , players = []}
+		])
+	    ])
+	, ( "National League"
+	  , fromList
+	    [ ( "Central"
+	      , [ Team { teamName = "Cubs"
+		       , city = "Chicago"
+		       , players = []}
+		, Team { teamName = "Reds"
+		       , city = "Cincinnati"
+		       , players = []}
+		, Team { teamName = "Astros"
+		       , city = "Houston"
+		       , players = []}
+		, Team { teamName = "Brewers"
+		       , city = "Milwaukee"
+		       , players = []}
+		, Team { teamName = "Pirates"
+		       , city = "Pittsburgh"
+		       , players = []}
+		, Team { teamName = "Cardinals"
+		       , city = "St. Louis"
+		       , players = []}
+		])
+	    , ( "East"
+	      , [ Team { teamName = "Braves"
+		       , city = "Atlanta"
+		       , players =
+			 [ Player { firstName = "Marty"
+				  , lastName = "Malloy"
+				  , position = "Second Base"
+				  , atBats = Just 28
+				  , hits = Just 5
+				  , era = Nothing}
+			 , Player { firstName = "Ozzie"
+				  , lastName = "Guillen"
+				  , position = "Shortstop"
+				  , atBats = Just 264
+				  , hits = Just 73
+				  , era = Nothing}
+			 , Player { firstName = "Danny"
+				  , lastName = "Bautista"
+				  , position = "Outfield"
+				  , atBats = Just 144
+				  , hits = Just 36
+				  , era = Nothing}
+			 , Player { firstName = "Gerald"
+				  , lastName = "Williams"
+				  , position = "Outfield"
+				  , atBats = Just 266
+				  , hits = Just 81
+				  , era = Nothing}
+			 , Player { firstName = "Tom"
+				  , lastName = "Glavine"
+				  , position = "Starting Pitcher"
+				  , atBats = Nothing
+				  , hits = Nothing
+				  , era = Just 2.47}
+			 , Player { firstName = "Javier"
+				  , lastName = "Lopez"
+				  , position = "Catcher"
+				  , atBats = Just 489
+				  , hits = Just 139
+				  , era = Nothing}
+			 , Player { firstName = "Ryan"
+				  , lastName = "Klesko"
+				  , position = "Outfield"
+				  , atBats = Just 427
+				  , hits = Just 117
+				  , era = Nothing}
+			 , Player { firstName = "Andres"
+				  , lastName = "Galarraga"
+				  , position = "First Base"
+				  , atBats = Just 555
+				  , hits = Just 169
+				  , era = Nothing}
+			 , Player { firstName = "Wes"
+				  , lastName = "Helms"
+				  , position = "Third Base"
+				  , atBats = Just 13
+				  , hits = Just 4
+				  , era = Nothing}
+			 ]}
+		, Team { teamName = "Marlins"
+		       , city = "Florida"
+		       , players = []}
+		, Team { teamName = "Expos"
+		       , city = "Montreal"
+		       , players = []}
+		, Team { teamName = "Mets"
+		       , city = "New York"
+		       , players = []}
+		, Team { teamName = "Phillies"
+		       , city = "Philadelphia"
+		       , players = []}
+		])
+	    , ( "West"
+	      , [ Team { teamName = "Diamondbacks"
+		       , city = "Arizona"
+		       , players = []}
+		, Team { teamName = "Rockies"
+		       , city = "Colorado"
+		       , players = []}
+		, Team { teamName = "Dodgers"
+		       , city = "Los Angeles"
+		       , players = []}
+		, Team { teamName = "Padres"
+		       , city = "San Diego"
+		       , players = []}
+		, Team { teamName = "Giants"
+		       , city = "San Francisco"
+		       , players = []}
+		])
+	    ])
+	]
+      }
+
+-- ------------------------------------------------------------
diff --git a/examples/arrows/AGentleIntroductionToHXT/PicklerExample/Makefile b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/Makefile
new file mode 100644
--- /dev/null
+++ b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/Makefile
@@ -0,0 +1,41 @@
+# $Id: Makefile,v 1.2 2006/11/17 17:16:24 hxml Exp $
+#
+# hello world application of Haskell XML Toolbox
+
+HXT_HOME	= ../../../..
+PKGFLAGS	= 
+GHCFLAGS	= -W -O2
+GHC		= ghc $(GHCFLAGS) $(PKGFLAGS)
+
+DIST		= $(HXT_HOME)/dist/examples/arrows/AGentleIntroductionToHXT
+DIST_DIR	= $(DIST)/PicklerExample
+
+src		= Baseball.hs
+prog		= ./Baseball
+
+all		:
+		$(MAKE) $(prog)
+
+force		:
+		$(MAKE) distclean all
+
+test		: $(prog)
+		$(prog)
+
+dist		:
+		[ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)
+		cp $(src) simple2.xml new-simple2.xml Makefile $(DIST_DIR)
+
+clean		:
+		rm -f *.o *.hi
+
+distclean	:
+		$(MAKE) clean
+		rm -f $(prog)
+
+.PHONY		: all test dist clean distclean force
+
+$(prog)		: $(src)
+		$(GHC) --make -o $@ $<
+
+
diff --git a/examples/arrows/AGentleIntroductionToHXT/PicklerExample/new-simple2.xml b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/new-simple2.xml
new file mode 100644
--- /dev/null
+++ b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/new-simple2.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SEASON YEAR="1998">
+  <LEAGUE NAME="American League">
+    <DIVISION NAME="Central">
+      <TEAM NAME="White Sox" CITY="Chicago"/>
+      <TEAM NAME="Royals" CITY="Kansas City"/>
+      <TEAM NAME="Tigers" CITY="Detroit"/>
+      <TEAM NAME="Indians" CITY="Cleveland"/>
+      <TEAM NAME="Twins" CITY="Minnesota"/>
+    </DIVISION>
+    <DIVISION NAME="East">
+      <TEAM NAME="Orioles" CITY="Baltimore"/>
+      <TEAM NAME="Red Sox" CITY="Boston"/>
+      <TEAM NAME="Yankees" CITY="New York"/>
+      <TEAM NAME="Devil Rays" CITY="Tampa Bay"/>
+      <TEAM NAME="Blue Jays" CITY="Toronto"/>
+    </DIVISION>
+    <DIVISION NAME="West">
+      <TEAM NAME="Angels" CITY="Anaheim"/>
+      <TEAM NAME="Athletics" CITY="Oakland"/>
+      <TEAM NAME="Mariners" CITY="Seattle"/>
+      <TEAM NAME="Rangers" CITY="Texas"/>
+    </DIVISION>
+  </LEAGUE>
+  <LEAGUE NAME="National League">
+    <DIVISION NAME="Central">
+      <TEAM NAME="Cubs" CITY="Chicago"/>
+      <TEAM NAME="Reds" CITY="Cincinnati"/>
+      <TEAM NAME="Astros" CITY="Houston"/>
+      <TEAM NAME="Brewers" CITY="Milwaukee"/>
+      <TEAM NAME="Pirates" CITY="Pittsburgh"/>
+      <TEAM NAME="Cardinals" CITY="St. Louis"/>
+    </DIVISION>
+    <DIVISION NAME="East">
+      <TEAM NAME="Braves" CITY="Atlanta">
+        <PLAYER GIVEN_NAME="Marty" SURNAME="Malloy" POSITION="Second Base" AT_BATS="28" HITS="5"/>
+        <PLAYER GIVEN_NAME="Ozzie" SURNAME="Guillen" POSITION="Shortstop" AT_BATS="264" HITS="73"/>
+        <PLAYER GIVEN_NAME="Danny" SURNAME="Bautista" POSITION="Outfield" AT_BATS="144" HITS="36"/>
+        <PLAYER GIVEN_NAME="Gerald" SURNAME="Williams" POSITION="Outfield" AT_BATS="266" HITS="81"/>
+        <PLAYER GIVEN_NAME="Tom" SURNAME="Glavine" POSITION="Starting Pitcher" ERA="2.47"/>
+        <PLAYER GIVEN_NAME="Javier" SURNAME="Lopez" POSITION="Catcher" AT_BATS="489" HITS="139"/>
+        <PLAYER GIVEN_NAME="Ryan" SURNAME="Klesko" POSITION="Outfield" AT_BATS="427" HITS="117"/>
+        <PLAYER GIVEN_NAME="Andres" SURNAME="Galarraga" POSITION="First Base" AT_BATS="555" HITS="169"/>
+        <PLAYER GIVEN_NAME="Wes" SURNAME="Helms" POSITION="Third Base" AT_BATS="13" HITS="4"/>
+      </TEAM>
+      <TEAM NAME="Marlins" CITY="Florida"/>
+      <TEAM NAME="Expos" CITY="Montreal"/>
+      <TEAM NAME="Mets" CITY="New York"/>
+      <TEAM NAME="Phillies" CITY="Philadelphia"/>
+    </DIVISION>
+    <DIVISION NAME="West">
+      <TEAM NAME="Diamondbacks" CITY="Arizona"/>
+      <TEAM NAME="Rockies" CITY="Colorado"/>
+      <TEAM NAME="Dodgers" CITY="Los Angeles"/>
+      <TEAM NAME="Padres" CITY="San Diego"/>
+      <TEAM NAME="Giants" CITY="San Francisco"/>
+    </DIVISION>
+  </LEAGUE>
+</SEASON>
+
diff --git a/examples/arrows/AGentleIntroductionToHXT/PicklerExample/simple2.xml b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/simple2.xml
new file mode 100644
--- /dev/null
+++ b/examples/arrows/AGentleIntroductionToHXT/PicklerExample/simple2.xml
@@ -0,0 +1,103 @@
+<SEASON YEAR="1998">
+<LEAGUE NAME="National League">
+  <DIVISION NAME="East">
+
+  <TEAM CITY="Atlanta" NAME="Braves">
+<PLAYER GIVEN_NAME="Marty" SURNAME="Malloy" POSITION="Second Base" GAMES="11" GAMES_STARTED="8" AT_BATS="28" RUNS="3" HITS="5" DOUBLES="1" TRIPLES="0" HOME_RUNS="1" RBI="1" STEALS="0" CAUGHT_STEALING="0" SACRIFICE_HITS="0" SACRIFICE_FLIES="0" ERRORS="0" WALKS="2" STRUCK_OUT="2" HIT_BY_PITCH="0">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Ozzie" SURNAME="Guillen" POSITION="Shortstop" GAMES="83" GAMES_STARTED="59" AT_BATS="264" RUNS="35" HITS="73" DOUBLES="15" TRIPLES="1" HOME_RUNS="1" RBI="22" STEALS="1" CAUGHT_STEALING="4" SACRIFICE_HITS="4" SACRIFICE_FLIES="2" ERRORS="6" WALKS="24" STRUCK_OUT="25" HIT_BY_PITCH="1">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Danny" SURNAME="Bautista" POSITION="Outfield" GAMES="82" GAMES_STARTED="27" AT_BATS="144" RUNS="17" HITS="36" DOUBLES="11" TRIPLES="0" HOME_RUNS="3" RBI="17" STEALS="1" CAUGHT_STEALING="0" SACRIFICE_HITS="3" SACRIFICE_FLIES="2" ERRORS="2" WALKS="7" STRUCK_OUT="21" HIT_BY_PITCH="0">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Gerald" SURNAME="Williams" POSITION="Outfield" GAMES="129" GAMES_STARTED="51" AT_BATS="266" RUNS="46" HITS="81" DOUBLES="18" TRIPLES="3" HOME_RUNS="10" RBI="44" STEALS="11" CAUGHT_STEALING="5" SACRIFICE_HITS="2" SACRIFICE_FLIES="1" ERRORS="5" WALKS="17" STRUCK_OUT="48" HIT_BY_PITCH="3">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Tom" SURNAME="Glavine" POSITION="Starting Pitcher" GAMES="33" GAMES_STARTED="33" WINS="20" LOSSES="6" SAVES="0" COMPLETE_GAMES="4" SHUT_OUTS="3" ERA="2.47" INNINGS="229.1" HOME_RUNS_AGAINST="13" RUNS_AGAINST="67" EARNED_RUNS="63" HIT_BATTER="2" WILD_PITCHES="3" BALK="0" WALKED_BATTER="74" STRUCK_OUT_BATTER="157">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Javier" SURNAME="Lopez" POSITION="Catcher" GAMES="133" GAMES_STARTED="124" AT_BATS="489" RUNS="73" HITS="139" DOUBLES="21" TRIPLES="1" HOME_RUNS="34" RBI="106" STEALS="5" CAUGHT_STEALING="3" SACRIFICE_HITS="1" SACRIFICE_FLIES="8" ERRORS="5" WALKS="30" STRUCK_OUT="85" HIT_BY_PITCH="6">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Ryan" SURNAME="Klesko" POSITION="Outfield" GAMES="129" GAMES_STARTED="124" AT_BATS="427" RUNS="69" HITS="117" DOUBLES="29" TRIPLES="1" HOME_RUNS="18" RBI="70" STEALS="5" CAUGHT_STEALING="3" SACRIFICE_HITS="0" SACRIFICE_FLIES="4" ERRORS="2" WALKS="56" STRUCK_OUT="66" HIT_BY_PITCH="3">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Andres" SURNAME="Galarraga" POSITION="First Base" GAMES="153" GAMES_STARTED="151" AT_BATS="555" RUNS="103" HITS="169" DOUBLES="27" TRIPLES="1" HOME_RUNS="44" RBI="121" STEALS="7" CAUGHT_STEALING="6" SACRIFICE_HITS="0" SACRIFICE_FLIES="5" ERRORS="11" WALKS="63" STRUCK_OUT="146" HIT_BY_PITCH="25">
+        </PLAYER>
+<PLAYER GIVEN_NAME="Wes" SURNAME="Helms" POSITION="Third Base" GAMES="7" GAMES_STARTED="2" AT_BATS="13" RUNS="2" HITS="4" DOUBLES="1" TRIPLES="0" HOME_RUNS="1" RBI="2" STEALS="0" CAUGHT_STEALING="0" SACRIFICE_HITS="0" SACRIFICE_FLIES="0" ERRORS="1" WALKS="0" STRUCK_OUT="4" HIT_BY_PITCH="0">
+        </PLAYER>
+</TEAM>
+<TEAM CITY="Florida" NAME="Marlins">
+      </TEAM>
+<TEAM CITY="Montreal" NAME="Expos">
+      </TEAM>
+<TEAM CITY="New York" NAME="Mets">
+      </TEAM>
+<TEAM CITY="Philadelphia" NAME="Phillies">
+      </TEAM>
+</DIVISION>
+
+  <DIVISION NAME="Central">
+<TEAM CITY="Chicago" NAME="Cubs">
+      </TEAM>
+<TEAM CITY="Cincinnati" NAME="Reds">
+      </TEAM>
+<TEAM CITY="Houston" NAME="Astros">
+      </TEAM>
+<TEAM CITY="Milwaukee" NAME="Brewers">
+      </TEAM>
+<TEAM CITY="Pittsburgh" NAME="Pirates">
+      </TEAM>
+<TEAM CITY="St. Louis" NAME="Cardinals">
+      </TEAM>
+</DIVISION>
+
+  <DIVISION NAME="West">
+<TEAM CITY="Arizona" NAME="Diamondbacks">
+      </TEAM>
+<TEAM CITY="Colorado" NAME="Rockies">
+      </TEAM>
+<TEAM CITY="Los Angeles" NAME="Dodgers">
+      </TEAM>
+<TEAM CITY="San Diego" NAME="Padres">
+      </TEAM>
+<TEAM CITY="San Francisco" NAME="Giants">
+      </TEAM>
+</DIVISION>
+</LEAGUE>
+
+  <LEAGUE NAME="American League">
+
+  <DIVISION NAME="East">
+<TEAM CITY="Baltimore" NAME="Orioles">
+      </TEAM>
+<TEAM CITY="Boston" NAME="Red Sox">
+      </TEAM>
+<TEAM CITY="New York" NAME="Yankees">
+      </TEAM>
+<TEAM CITY="Tampa Bay" NAME="Devil Rays">
+      </TEAM>
+<TEAM CITY="Toronto" NAME="Blue Jays">
+      </TEAM>
+</DIVISION>
+
+  <DIVISION NAME="Central">
+<TEAM CITY="Chicago" NAME="White Sox">
+      </TEAM>
+<TEAM CITY="Kansas City" NAME="Royals">
+      </TEAM>
+<TEAM CITY="Detroit" NAME="Tigers">
+      </TEAM>
+<TEAM CITY="Cleveland" NAME="Indians">
+      </TEAM>
+<TEAM CITY="Minnesota" NAME="Twins">
+      </TEAM>
+</DIVISION>
+
+  <DIVISION NAME="West">
+<TEAM CITY="Anaheim" NAME="Angels">
+      </TEAM>
+<TEAM CITY="Oakland" NAME="Athletics">
+      </TEAM>
+<TEAM CITY="Seattle" NAME="Mariners">
+      </TEAM>
+<TEAM CITY="Texas" NAME="Rangers">
+      </TEAM>
+</DIVISION>
+</LEAGUE>
+</SEASON>
diff --git a/hxt.cabal b/hxt.cabal
--- a/hxt.cabal
+++ b/hxt.cabal
@@ -1,6 +1,6 @@
 -- arch-tag: Haskell XML Toolbox main description file
 name: hxt
-version: 8.0.0
+version: 8.1.0
 license: OtherLicense
 license-file: LICENCE
 maintainer: Uwe Schmidt <uwe@fh-wedel.de>
@@ -36,7 +36,6 @@
   Data.Tree.Class,
   Data.Tree.NTree.Filter,
   Data.Tree.NTree.TypeDefs,
-  System.PipeOpen,
   Text.XML.HXT.Arrow,
   Text.XML.HXT.Arrow.DTDProcessing,
   Text.XML.HXT.Arrow.DocumentInput,
@@ -60,6 +59,8 @@
   Text.XML.HXT.DOM.FormatXmlTree,
   Text.XML.HXT.DOM.Interface,
   Text.XML.HXT.DOM.IsoLatinTables,
+  Text.XML.HXT.DOM.MimeTypeDefaults,
+  Text.XML.HXT.DOM.MimeTypes,
   Text.XML.HXT.DOM.NamespacePredicates,
   Text.XML.HXT.DOM.QualifiedName,
   Text.XML.HXT.DOM.ShowXml,
@@ -81,8 +82,7 @@
   Text.XML.HXT.DTDValidation.Validation,
   Text.XML.HXT.DTDValidation.XmlRE,
   Text.XML.HXT.IO.GetFILE,
-  Text.XML.HXT.IO.GetHTTPCurl,
-  Text.XML.HXT.IO.GetHTTPNative,
+  Text.XML.HXT.IO.GetHTTPLibCurl,
   Text.XML.HXT.Parser.HtmlParsec,
   Text.XML.HXT.Parser.ProtocolHandlerUtil,
   Text.XML.HXT.Parser.TagSoup,
@@ -113,6 +113,7 @@
   Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C,
   Text.XML.HXT.RelaxNG.XmlSchema.Regex,
   Text.XML.HXT.RelaxNG.XmlSchema.RegexParser,
+  Text.XML.HXT.Version,
   Text.XML.HXT.XPath,
   Text.XML.HXT.XPath.NavTree,
   Text.XML.HXT.XPath.XPathArithmetic,
@@ -133,9 +134,9 @@
  ghc-options: -Wall
  extensions: MultiParamTypeClasses DeriveDataTypeable FunctionalDependencies FlexibleInstances
 
- build-depends: base, haskell98 >= 1, parsec >= 2.1 && < 3, HTTP >= 3001.0.4, HUnit >= 1.2, network >= 2.1, tagsoup >= 0.6
+ build-depends: base, haskell98 >= 1, parsec >= 2.1 && < 3, HUnit >= 1.2, network >= 2.1, tagsoup >= 0.6, curl >= 1.3
  if flag(splitBase)
-   build-depends: base >= 3, containers >= 0.1, directory >= 1, process >= 1
+   build-depends: base >= 3, containers >= 0.1, directory >= 1, filepath >= 1
  else
    build-depends: base < 3
 
diff --git a/src/Control/Arrow/ArrowTree.hs b/src/Control/Arrow/ArrowTree.hs
--- a/src/Control/Arrow/ArrowTree.hs
+++ b/src/Control/Arrow/ArrowTree.hs
@@ -42,6 +42,16 @@
 
 class (ArrowPlus a, ArrowIf a) => ArrowTree a where
 
+    -- | construct a leaf
+
+    mkLeaf		:: Tree t => b -> a c (t b)
+    mkLeaf		= constA . T.mkLeaf
+
+    -- | construct an inner node
+
+    mkTree		:: Tree t => b -> [t b] -> a c (t b)
+    mkTree n		= constA . T.mkTree n
+
     -- | select the children of the root of a tree
 
     getChildren		:: Tree t => a (t b) (t b)
diff --git a/src/Makefile b/src/Makefile
--- a/src/Makefile
+++ b/src/Makefile
@@ -71,7 +71,6 @@
 	Data/Tree/Class.hs \
 	Data/Tree/NTree/Filter.hs \
 	Data/Tree/NTree/TypeDefs.hs \
-	System/PipeOpen.hs \
 	Text/XML/HXT/Arrow/DocumentInput.hs \
 	Text/XML/HXT/Arrow/DocumentOutput.hs \
 	Text/XML/HXT/Arrow/DTDProcessing.hs \
@@ -95,6 +94,8 @@
 	Text/XML/HXT/DOM/FormatXmlTree.hs \
 	Text/XML/HXT/DOM/Interface.hs \
 	Text/XML/HXT/DOM/IsoLatinTables.hs \
+	Text/XML/HXT/DOM/MimeTypeDefaults.hs \
+	Text/XML/HXT/DOM/MimeTypes.hs \
 	Text/XML/HXT/DOM/NamespacePredicates.hs \
 	Text/XML/HXT/DOM/QualifiedName.hs \
 	Text/XML/HXT/DOM/ShowXml.hs \
@@ -116,8 +117,7 @@
 	Text/XML/HXT/DTDValidation/Validation.hs \
 	Text/XML/HXT/DTDValidation/XmlRE.hs \
 	Text/XML/HXT/IO/GetFILE.hs \
-	Text/XML/HXT/IO/GetHTTPCurl.hs \
-	Text/XML/HXT/IO/GetHTTPNative.hs \
+	Text/XML/HXT/IO/GetHTTPLibCurl.hs \
 	Text/XML/HXT/Parser/HtmlParsec.hs \
 	Text/XML/HXT/Parser/ProtocolHandlerUtil.hs \
 	Text/XML/HXT/Parser/TagSoup.hs \
@@ -148,6 +148,7 @@
 	Text/XML/HXT/RelaxNG/XmlSchema/DataTypeLibW3C.hs \
 	Text/XML/HXT/RelaxNG/XmlSchema/Regex.hs \
 	Text/XML/HXT/RelaxNG/XmlSchema/RegexParser.hs \
+	Text/XML/HXT/Version.hs \
 	Text/XML/HXT/XPath.hs \
 	Text/XML/HXT/XPath/NavTree.hs \
 	Text/XML/HXT/XPath/XPathArithmetic.hs \
@@ -164,6 +165,17 @@
 	Text/XML/HXT/XSLT/CompiledStylesheet.hs \
 	Text/XML/HXT/XSLT/Names.hs \
 	Text/XML/HXT/XSLT/XsltArrows.hs
+
+# no longer in use	System/PipeOpen.hs
+# no longer in use	Text/XML/HXT/IO/GetHTTPNative.hs
+# no longer in use	Text/XML/HXT/IO/GetHTTPCurl.hs
+
+Text/XML/HXT/Version.hs	: ../Version.mk Makefile
+		( echo "module Text.XML.HXT.Version" \
+		; echo "where" \
+		; echo "hxt_version :: String" \
+		; echo "hxt_version = \"$(VERSION)\"" \
+		) > $@
 
 HXT_OBJ		= $(HXT_SRC:.hs=.o)
 HXT_HI		= $(HXT_SRC:.hs=.hi)
diff --git a/src/System/PipeOpen.hs b/src/System/PipeOpen.hs
deleted file mode 100644
--- a/src/System/PipeOpen.hs
+++ /dev/null
@@ -1,60 +0,0 @@
--- ------------------------------------------------------------
-
-{- |
-   Module     : System.PipeOpen
-   Copyright  : Copyright (C) 2005 Uwe Schmidt
-   License    : MIT
-
-   Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)
-   Stability  : experimental
-   Portability: none portable
-   Version    : $Id: PipeOpen.hs,v 1.2 2005/09/02 17:09:39 hxml Exp $
-
-pipe open implemented with System.Process functions
-
--}
-
--- ------------------------------------------------------------
-
-module System.PipeOpen
-    ( popen )
-where
-
-import IO
-    ( hGetContents
-    , hClose
-    )
-
-import System.Exit
-    ( ExitCode(..)
-    )
-
-import System.Process
-    ( runInteractiveProcess
-    , waitForProcess
-    )
-
--- | call an external program with a list of command line arguments
--- and return content of stdout, content of stderr and return code
-
-popen	:: String -> [String] -> IO (String, String, Int)
-popen prg argl
-    = do
-      (inpH, outH, errH, pH) <- runInteractiveProcess prg argl Nothing Nothing
-      hClose inpH
-      res  <- hGetContents outH
-      errs <- hGetContents errH
-
-      -- hack: stdout and stderr must be read completely, otherwise waitForProcess blocks
-      if (length res  == 0) then return () else return ()
-      if (length errs == 0) then return () else return ()
-
-      rc <- waitForProcess pH
-      return ( res
-	     , errs
-	     , case rc of
-	       ExitSuccess -> 0
-	       ExitFailure i -> i
-	     )
-
--- eof ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/Arrow.hs b/src/Text/XML/HXT/Arrow.hs
--- a/src/Text/XML/HXT/Arrow.hs
+++ b/src/Text/XML/HXT/Arrow.hs
@@ -40,6 +40,8 @@
     , module Text.XML.HXT.Arrow.Pickle
 
     , module Text.XML.HXT.XSLT.XsltArrows
+
+    , module Text.XML.HXT.Version
     )
 where
 
@@ -63,5 +65,7 @@
        Text.XML.HXT.Arrow.XPathSimple as XPS ()
 
 import Text.XML.HXT.XSLT.XsltArrows
+
+import Text.XML.HXT.Version
 
 -- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/Arrow/DocumentInput.hs b/src/Text/XML/HXT/Arrow/DocumentInput.hs
--- a/src/Text/XML/HXT/Arrow/DocumentInput.hs
+++ b/src/Text/XML/HXT/Arrow/DocumentInput.hs
@@ -30,6 +30,17 @@
 import Control.Arrow.ArrowTree
 import Control.Arrow.ArrowIO
 
+import Data.Char
+    ( toLower
+    )
+import Data.List
+    ( isPrefixOf
+    )
+import Data.Maybe
+
+import System.FilePath
+    ( takeExtension )
+
 import Text.XML.HXT.DOM.Unicode
     ( getDecodingFct
     , guessEncoding
@@ -37,29 +48,23 @@
     )
 
 import qualified Text.XML.HXT.IO.GetFILE	as FILE
+import qualified Text.XML.HXT.IO.GetHTTPLibCurl	as LibCURL
+
+{- not longer needed, libcurl is used
 import qualified Text.XML.HXT.IO.GetHTTPNative	as HTTP
 import qualified Text.XML.HXT.IO.GetHTTPCurl	as CURL
+-}
 
 import Text.XML.HXT.DOM.Interface
+
 import Text.XML.HXT.Arrow.XmlArrow
 import Text.XML.HXT.Arrow.XmlIOStateArrow
-
 import Text.XML.HXT.Arrow.ParserInterface
     ( parseXmlDocEncodingSpec
     , parseXmlEntityEncodingSpec
     , removeEncodingSpec
     )
 
-import Data.List
-    ( isPrefixOf
-    )
-
-import Data.Char
-    ( toLower
-    )
-
-import Data.Maybe
-
 -- ----------------------------------------------------------
 
 protocolHandlers	:: AssocList String (IOStateArrow s XmlTree XmlTree)
@@ -116,9 +121,11 @@
 	       >>>
 	       ( arr addError		-- io error occured
 		 |||
-		 arr addTxtContent		-- content read
+		 arr addTxtContent	-- content read
 	       )
 	     )
+      >>>
+      addMimeType
 
 getStdinContents		:: IOStateArrow s XmlTree XmlTree
 getStdinContents
@@ -126,7 +133,7 @@
 	       >>>
 	       ( arr addError		-- io error occured
 		 |||
-		 arr addTxtContent		-- content read
+		 arr addTxtContent	-- content read
 	       )
 	     )
 
@@ -136,6 +143,18 @@
       >>>
       setDocumentStatusFromSystemState "accessing documents"
 
+addMimeType	:: IOStateArrow s XmlTree XmlTree
+addMimeType
+    = addMime $< ( getAttrValue transferURI
+		   >>>
+		   ( uriToMime $< getSysParam xio_mimeTypes )
+		 )
+    where
+    addMime mt
+	= addAttr transferMimeType mt
+    uriToMime mtt
+	= arr $ ( \ uri -> extensionToMimeType (drop 1 . takeExtension $ uri) mtt )
+
 addTxtContent	:: String -> IOStateArrow s XmlTree XmlTree
 addTxtContent c
     = replaceChildren (txt c)
@@ -146,21 +165,37 @@
 
 getHttpContents		:: IOStateArrow s XmlTree XmlTree
 getHttpContents
-    = getCont $<<<< ( getAttrValue transferURI
-		      &&&
-		      getOpt a_proxy
-		      &&&
-		      getOpt a_use_curl
-		      &&&
-		      getOpt a_options_curl
+    = getCont $<< ( getAttrValue transferURI
+		    &&&
+		    ( ( getAttrlAsAssoc	-- get all attributes of root node
+			&&&
+			getAllParamsString	-- get all system params
+		      )
+		      >>^ uncurry addEntries	-- merge them, attributes overwrite system params
 		    )
+		  )
       where
-      getOpt opt
-	  = getAttrValue0 opt
-	    `orElse`
-	    getParamString opt
+      getAttrlAsAssoc				-- get the attributes as assoc list
+	  = listA ( getAttrl
+		    >>> ( getName
+			  &&&
+			  xshow getChildren
+			)
+		  )
 
-      getCont uri proxy curl curlOpt
+      getCont uri options
+	  = applyA ( ( traceMsg 2 ( "get HTTP via libcurl, uri=" ++ show uri ++ " options=" ++ show options )
+		       >>>
+		       arrIO0 ( LibCURL.getCont options uri )
+		     )
+		     >>>
+		     ( arr addError
+		       |||
+		       arr addContent
+		     )
+		   )
+		    
+{- old stuff
 	  = applyA ( ( if curl == v_1
 		       then ( traceMsg 2 ( "get HTTP via "
 					   ++ show ( "curl "
@@ -180,6 +215,11 @@
 		       arr addContent
 		     )
 		   )
+	    where
+	    proxy   = lookup1 a_proxy        options
+	    curl    = lookup1 a_use_curl     options
+	    curlOpt = lookup1 a_options_curl options
+-}
 
       addContent	:: (AssocList String String, String) -> IOStateArrow s XmlTree XmlTree
       addContent (al, c)
@@ -227,7 +267,7 @@
     getCont
 	= applyA ( getBaseURI				-- compute the handler and call it
 		   >>>
-		   traceString 2 (("getURIContents: reading" ++) . show)
+		   traceString 2 (("getURIContents: reading " ++) . show)
 		   >>>
 		   getSchemeFromURI
 		   >>>
@@ -286,11 +326,15 @@
 getXmlContents' parseEncodingSpec
     = ( getURIContents
 	>>>
-	parseEncodingSpec
-	>>>
-	filterErrorMsg
-	>>>
-	decodeDocument
+	( ( parseEncodingSpec
+	    >>>
+	    filterErrorMsg
+	    >>>
+	    decodeDocument
+	  )
+	  `when`
+	  isXmlHtml
+	)
 	>>>
 	perform ( getAttrValue transferURI
 		  >>>
@@ -303,6 +347,11 @@
       )
       `when`
       isRoot
+    where
+    isXmlHtml
+	= getAttrValue transferMimeType
+	  >>>
+	  arr (\ mt -> isHtmlMimeType mt || isXmlMimeType mt)
 
 -- ------------------------------------------------------------
 
@@ -337,7 +386,7 @@
 	found df
 	    = traceMsg 2 ("decodeDocument: encoding is " ++ show enc)
 	      >>>
-	      processChildren (decodeText df)
+	      ( decodeText df $< getAttrValue a_ignore_encoding_errors )
 	      >>>
 	      addAttr transferEncoding enc
 
@@ -346,19 +395,25 @@
 	      >>>
 	      setDocumentStatusFromSystemState "decoding document"
 
-	decodeText df
-	    = getText
-	      >>> arr df					-- result is (string, [errMsg])
-	      >>> ( ( (normalizeNL . fst) ^>> mkText )		-- take string, normalize newline and build text node
-		    <+>
-		    ( arrL snd					-- take the error messages
-		      >>>
-		      arr ((enc ++) . (" encoding error" ++))	-- prefix with enc error
-		      >>>
-		      applyA (arr issueErr)			-- build issueErr arrow and apply
-		      >>>
-		      none					-- neccessary for type match with <+>
+	decodeText df ignoreErrs
+	    = processChildren
+	      ( getText							-- get the document content
+		>>> arr df						-- decode the text, result is (string, [errMsg])
+		>>> ( ( (normalizeNL . fst) ^>> mkText )		-- take decoded string, normalize newline and build text node
+		      <+>
+		      ( if isTrueValue ignoreErrs
+			then none					-- encoding errors are ignored
+			else
+			( arrL snd					-- take the error messages
+			  >>>
+			  arr ((enc ++) . (" encoding error" ++))	-- prefix with enc error
+			  >>>
+			  applyA (arr issueErr)				-- build issueErr arrow and apply
+			  >>>
+			  none						-- neccessary for type match with <+>
+			)
+		      )
 		    )
-		  )
+	      )
       
 -- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/Arrow/Edit.hs b/src/Text/XML/HXT/Arrow/Edit.hs
--- a/src/Text/XML/HXT/Arrow/Edit.hs
+++ b/src/Text/XML/HXT/Arrow/Edit.hs
@@ -737,10 +737,11 @@
 addDoctypeDecl rootElem public system
     = fromLA $
       replaceChildren
-      ( mkDTDDoctype [ (a_name, rootElem)
-		     , (k_public, public)
-		     , (k_system, system)
-		     ] none
+      ( mkDTDDoctype ( ( if null public then id else ( (k_public, public) : ) )
+		       .
+		       ( if null system then id else ( (k_system, system) : ) )
+		       $  [ (a_name, rootElem) ]
+		     ) none
 	<+>
 	txt "\n"
 	<+>
diff --git a/src/Text/XML/HXT/Arrow/Pickle.hs b/src/Text/XML/HXT/Arrow/Pickle.hs
--- a/src/Text/XML/HXT/Arrow/Pickle.hs
+++ b/src/Text/XML/HXT/Arrow/Pickle.hs
@@ -56,6 +56,7 @@
 
     , xp4Tuple
     , xp5Tuple
+    , xp6Tuple
     , xpAddFixedAttr
     , xpAlt
     , xpAttr
@@ -63,12 +64,15 @@
     , xpAttrImplied
     , xpChoice
     , xpCondSeq
+    , xpDefault
     , xpElem
+    , xpElemWithAttrValue
     , xpickle
     , xpLift
     , xpLiftMaybe
     , xpList
     , xpList1
+    , xpMap
     , xpOption
     , xpPair
     , xpPrim
@@ -78,10 +82,12 @@
     , xpTextDT
     , xpText0DT
     , xpTree
+    , xpTrees
     , xpTriple
     , xpUnit
     , xpWrap
     , xpWrapMaybe
+    , xpXmlText
     , xpZero
 
       -- from Text.XML.HXT.Arrow.Pickle.Schema
diff --git a/src/Text/XML/HXT/Arrow/Pickle/Xml.hs b/src/Text/XML/HXT/Arrow/Pickle/Xml.hs
--- a/src/Text/XML/HXT/Arrow/Pickle/Xml.hs
+++ b/src/Text/XML/HXT/Arrow/Pickle/Xml.hs
@@ -40,6 +40,8 @@
 where
 
 import           Data.Maybe
+import		 Data.Map (Map)
+import qualified Data.Map as M
 
 import           Text.XML.HXT.DOM.Interface
 import qualified Text.XML.HXT.DOM.XmlNode as XN
@@ -47,6 +49,7 @@
 import           Control.Arrow.ListArrows
 import           Text.XML.HXT.Arrow.XmlArrow
 import           Text.XML.HXT.Arrow.Pickle.Schema
+import           Text.XML.HXT.Arrow.ReadDocument (xread)
 
 -- ------------------------------------------------------------
 
@@ -112,7 +115,7 @@
 				   , contents   =            XN.getChildren t
 				   }
     | otherwise
-	= Nothing
+	= unpickleDoc p (XN.mkRoot [] [t])
 
 -- ------------------------------------------------------------
 
@@ -196,7 +199,7 @@
 -- Run two picklers in sequence like with xpSeq.
 -- When during unpickling the first one fails,
 -- an alternative pickler (first argument) is applied.
--- This pickler only is used as combinator for unpickling.
+-- This pickler is only used as combinator for unpickling.
  
 xpChoice		:: PU b -> PU a -> (a -> PU b) -> PU b
 xpChoice pb	= xpCondSeq pb undefined
@@ -334,6 +337,8 @@
 	val [(x,"")] = Just x
 	val _        = Nothing
 
+-- ------------------------------------------------------------
+
 -- | Pickle an XmlTree by just adding it
 --
 -- Usefull for components of type XmlTree in other data structures
@@ -349,6 +354,28 @@
 	  t <- getCont st
 	  return (Just t, dropCont st)
 
+-- | Pickle a whole list of XmlTrees by just adding the list, unpickle is done by taking all element contens.
+--
+-- This pickler should always combined with 'xpElem' for taking the whole contents of an element.
+
+xpTrees	:: PU [XmlTree]
+xpTrees	= (xpList xpTree) { theSchema = Any }
+
+-- | Pickle a string representing XML contents by inserting the tree representation into the XML document.
+--
+-- Unpickling is done by converting the contents with
+-- 'Text.XML.HXT.Arrow.XmlArrow.xshow' into a string,
+-- pickling is done with 'Text.XML.HXT.Arrow.ReadDocument.xread'
+
+xpXmlText	:: PU String
+xpXmlText
+    = xpWrap ( showXML, readXML ) $ xpTrees
+    where
+    showXML = concat . runLA ( xshow unlistA )
+    readXML = runLA xread
+
+-- ------------------------------------------------------------
+
 -- | Encoding of optional data by ignoring the Nothing case during pickling
 -- and relying on failure during unpickling to recompute the Nothing case
 --
@@ -368,6 +395,20 @@
          , theSchema   = scOption (theSchema pa)
 	 }
 
+-- | Optional conversion with default value
+--
+-- The default value is not encoded in the XML document,
+-- during unpickling the default value is inserted if the pickler fails
+
+xpDefault	:: (Eq a) => a -> PU a -> PU a
+xpDefault df
+    = xpWrap ( fromMaybe df
+	     , \ x -> if x == df then Nothing else Just x
+	     ) .
+      xpOption
+
+-- ------------------------------------------------------------
+
 -- | Encoding of list values by pickling all list elements sequentially.
 --
 -- Unpickler relies on failure for detecting the end of the list.
@@ -405,6 +446,27 @@
 	xpPair pa (xpList pa)
       ) { theSchema = scList1 (theSchema pa) }
 
+-- ------------------------------------------------------------
+
+-- | Standard pickler for maps
+--
+-- This pickler converts a map into a list of pairs.
+-- All key value pairs are mapped to an element with name (1.arg),
+-- the key is encoded as an attribute named by the 2. argument,
+-- the 3. arg is the pickler for the keys, the last one for the values
+
+xpMap	:: Ord k => String -> String -> PU k -> PU v -> PU (Map k v)
+xpMap en an xpk xpv
+    = xpWrap ( M.fromList
+	     , M.toList
+	     ) $
+      xpList $
+      xpElem en $
+      xpPair ( xpAttr an $ xpk ) xpv
+
+
+-- ------------------------------------------------------------
+
 -- | Pickler for sum data types.
 --
 -- Every constructor is mapped to an index into the list of picklers.
@@ -426,10 +488,20 @@
 	 , theSchema   = scAlts (map theSchema ps)
 	 }
 
+-- ------------------------------------------------------------
+
 -- | Pickler for wrapping\/unwrapping data into an XML element
 --
 -- Extra parameter is the element name. THE pickler for constructing
 -- nested structures
+--
+-- Example:
+--
+-- > xpElem "number" $ xpickle
+--
+-- will map an (42::Int) onto
+--
+-- > <number>42</number>
 
 xpElem	:: String -> PU a -> PU a
 xpElem name pa
@@ -454,6 +526,63 @@
 		    al <- XN.getAttrl t
 		    res <- fst . appUnPickle pa $ St {attributes = al, contents = cs}
 		    return (Just res, dropCont st)
+
+-- ------------------------------------------------------------
+
+-- | Pickler for wrapping\/unwrapping data into an XML element with an attribute with given value
+--
+-- To make XML structures flexible but limit the number of different elements, it's sometimes
+-- useful to use a kind of generic element with a key value structure
+--
+-- Example:
+--
+-- > <attr name="key1">value1</attr>
+-- > <attr name="key2">value2</attr>
+-- > <attr name="key3">value3</attr>
+--
+-- the Haskell datatype may look like this
+--
+-- > type T = T { key1 :: Int ; key2 :: String ; key3 :: Double }
+--
+-- Then the picker for that type looks like this
+--
+-- > xpT :: PU T
+-- > xpT = xpWrap ( uncurry3 T, \ t -> (key1 t, key2 t, key3 t) ) $
+-- >       xpTriple (xpElemWithAttrValue "attr" "name" "key1" $ xpickle)
+-- >                (xpElemWithAttrValue "attr" "name" "key2" $ xpText0)
+-- >                (xpElemWithAttrValue "attr" "name" "key3" $ xpickle)
+
+xpElemWithAttrValue	:: String -> String -> String -> PU a -> PU a
+xpElemWithAttrValue name an av pa
+    = PU { appPickle   = ( \ (a, st) ->
+			   let
+	                   st' = appPickle pa' (a, emptySt)
+			   in
+			   addCont (XN.mkElement (mkName name) (attributes st') (contents st')) st
+			 )
+	 , appUnPickle = \ st -> fromMaybe (Nothing, st) (unpickleElement st)
+	 , theSchema   = scElem name (theSchema pa')
+	 }
+      where
+      pa' = xpAddFixedAttr an av $ pa
+      noMatch = null . runLA ( isElem
+			       >>>
+			       hasName name
+			       >>>
+			       hasAttrValue an (==av)
+			     )
+      unpickleElement st
+	  = do
+	    t <- getCont st
+	    if noMatch t
+	       then fail "element name or attr value does not match"
+	       else do
+		    let cs = XN.getChildren t
+		    al <- XN.getAttrl t
+		    res <- fst . appUnPickle pa $ St {attributes = al, contents = cs}
+		    return (Just res, dropCont st)
+
+-- ------------------------------------------------------------
 
 -- | Pickler for storing\/retreiving data into\/from an attribute value
 --
diff --git a/src/Text/XML/HXT/Arrow/ProcessDocument.hs b/src/Text/XML/HXT/Arrow/ProcessDocument.hs
--- a/src/Text/XML/HXT/Arrow/ProcessDocument.hs
+++ b/src/Text/XML/HXT/Arrow/ProcessDocument.hs
@@ -243,9 +243,7 @@
 	>>>
 	propagateNamespaces
 	>>>
-	traceTree
-	>>>
-	traceSource
+	traceDoc "propagating namespaces done"
 	>>>
 	traceMsg 1 "validating namespaces"
 	>>>
diff --git a/src/Text/XML/HXT/Arrow/ReadDocument.hs b/src/Text/XML/HXT/Arrow/ReadDocument.hs
--- a/src/Text/XML/HXT/Arrow/ReadDocument.hs
+++ b/src/Text/XML/HXT/Arrow/ReadDocument.hs
@@ -95,18 +95,34 @@
 
 - 'a_issue_warnings' : issue warnings, when parsing HTML (default), else ignore HTML parser warnings
 
-- 'a_issue_errors' : issue all error messages on stderr (default), or ignore all error messages (default)
+- 'a_issue_errors' : issue all error messages on stderr (default), or ignore all error messages
 
+- 'a_ignore_encoding_errors': ignore all encoding errors, default is issue all encoding errors
+
+- 'a_ignore_none_xml_contents': ignore document contents of none XML\/HTML documents.
+                                This option can be useful for implementing crawler like applications, e.g. an URL checker.
+                                In those cases net traffic can be reduced.
+
 - 'a_trace' : trace level: values: 0 - 4
 
 - 'a_proxy' : proxy for http access, e.g. www-cache:3128
 
-- 'a_use_curl' : for http access via external programm curl, default is native HTTP access
+- 'a_use_curl' : obsolete and ignored, HTTP acccess is always done with curl bindings for libcurl
 
-- 'a_options_curl' : more options for external program curl
+- 'a_options_curl' : deprecated but for compatibility reasons still supported.
+                     More options passed to the curl binding.
+                     Instead of using this option to set a whole bunch of options at once for curl
+                     it is recomended to use the @curl-.*@ options syntax described below.
 
-- 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', 'iso8859_2', ... , 'iso8859_16', ...)
+- 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', 'iso8859_2', ... , 'iso8859_16', ...).
+                 Only XML and HTML documents are decoded, documents with none XML\/HTML mime types are not decoded. The whole content is returned in a single text node
 
+- 'a_mime_types' : set the mime type table for file input with given file. The format of this config file must be in the syntax of a debian linux \"mime.types\" config file
+
+- curl options : the HTTP interface with libcurl can be configured with a lot of options. To support these options in an easy way, there is a naming convetion:
+                 Every option, which has the prefix @curl@ and the rest of the name forms an option as described in the curl man page, is passed to the curl binding lib.
+                 See 'Text.XML.HXT.IO.GetHTTPLibCurl.getCont' for examples. Currently most of the options concerning HTTP requests are implemented.
+
 All attributes not evaluated by readDocument are stored in the created document root node for easy access of the various
 options in e.g. the input\/output modules
 
@@ -120,19 +136,27 @@
 
 > readDocument [ (a_validate, "0")
 >              , (a_encoding, isoLatin1)
->              ] "test.xml"
+>              , (a_parse_by_mimetype, "1")
+>              ] "http://localhost/test.php"
 
-reads document \"test.xml\" without validation, default encoding 'isoLatin1'.
+reads document \"test.php\", parses it as HTML or XML depending on the mimetype given from the server, but without validation, default encoding 'isoLatin1'.
 
 
 > readDocument [ (a_parse_html, "1")
 >              , (a_encoding, isoLatin1)
->              , (a_tagsoup,    "1")
 >              ] ""
 
 reads a HTML document from standard input, no validation is done when parsing HTML, default encoding is 'isoLatin1',
 parsing is done with tagsoup parser
 
+> readDocument [ (a_encoding, isoLatin1)
+>              , (a_mime_type,    "/etc/mime.types")
+>              , (a_tagsoup,    "1")
+>              ] "test.svg"
+
+reads an SVG document from standard input, sets the mime type by looking in the system mimetype config file, default encoding is 'isoLatin1',
+parsing is done with the lightweight tagsoup parser, which implies no validation.
+
 > readDocument [ (a_parse_html,     "1")
 >              , (a_proxy,          "www-cache:3128")
 >              , (a_curl,           "1")
@@ -172,31 +196,37 @@
  	= addEntries userOptions defaultOptions
 
     defaultOptions
-	= [ ( a_parse_html,		v_0 )
-	  , ( a_tagsoup,		v_0 )
-	  , ( a_validate,		v_1 )
-	  , ( a_issue_warnings,		v_1 )
-	  , ( a_check_namespaces,	v_0 )
-	  , ( a_canonicalize,		v_1 )
-	  , ( a_preserve_comment,	v_0 )
-	  , ( a_remove_whitespace,	v_0 )
-	  , ( a_parse_by_mimetype,	v_0 )
+	= [ ( a_parse_html,		  v_0 )
+	  , ( a_tagsoup,		  v_0 )
+	  , ( a_validate,		  v_1 )
+	  , ( a_issue_warnings,		  v_1 )
+	  , ( a_check_namespaces,	  v_0 )
+	  , ( a_canonicalize,		  v_1 )
+	  , ( a_preserve_comment,	  v_0 )
+	  , ( a_remove_whitespace,	  v_0 )
+	  , ( a_parse_by_mimetype,	  v_0 )
+	  , ( a_ignore_encoding_errors,   v_0 )
+	  , ( a_ignore_none_xml_contents, v_0 )
 	  ]
 
     httpOptions
-	= [a_proxy, a_use_curl, a_options_curl]
+	= [a_proxy, a_use_curl, a_options_curl, a_mime_types]
 
     remainingOptions
-	 = filter (not . flip hasEntry defaultOptions . fst) options
+	 = options -- filter (not . flip hasEntry defaultOptions . fst) options
 
     traceLevel
 	= maybe this (setTraceLevel . read) . lookup a_trace $ options
 
     addInputOptionsToSystemState
 	= addSysOptions (filter ((`elem` httpOptions) . fst) remainingOptions)
+	  >>>
+	  loadMineTypes (lookup1 a_mime_types userOptions)
 	  where
 	  addSysOptions
 	      = seqA . map (uncurry setParamString)
+	  loadMineTypes ""	= this
+	  loadMineTypes f	= setMimeTypeTableFromFile f
 
     getMimeType
 	= getAttrValue transferMimeType >>^ map toLower
@@ -230,7 +260,8 @@
 					  isHtml
 	    | validateWithRelax		= parseXmlDocument False		-- for Relax NG use XML parser without validation
 	    | isXml			= parseXmlDocument validate		-- parse as XML
-	    | otherwise			= this					-- don't parse, mime type is not XML nor HTML
+	    | removeNoneXml		= replaceChildren none			-- don't parse, if mime type is not XML nore HTML
+	    | otherwise			= this					-- but remove contents when option is set
 	checknamespaces
 	    | (withNamespaces && not withTagSoup)
 	      ||
@@ -255,15 +286,17 @@
 	validateWithRelax	= hasEntry a_relax_schema options
 	relaxSchema		= lookup1 a_relax_schema options
 	parseHtml		= hasOption a_parse_html
-	parseXml		= hasOption a_parse_xml
 	isHtml			= parseHtml				-- force HTML
 				  ||
-				  mimeTypeIsHtml
-	isXml			= parseXml				-- force XML parsing
+				  ( parseByMimeType && isHtmlMimeType mimeType )
+	isXml			= ( not parseByMimeType && not parseHtml )
 				  ||
-				  ( not parseHtml
+				  ( parseByMimeType
 				    &&
-				    ( mimeTypeIsXml || null mimeType )	-- mime type is XML or not there
+				    ( isXmlMimeType mimeType
+				      ||
+				      null mimeType
+				    )					-- mime type is XML or not known
 				  )
 	isXmlOrHtml	= isHtml || isXml
 	parseByMimeType	= hasOption a_parse_by_mimetype
@@ -273,8 +306,7 @@
 	issueW		= hasOption a_issue_warnings
 	removeWS	= hasOption a_remove_whitespace
 	preserveCmt	= hasOption a_preserve_comment
-	mimeTypeIsHtml	= parseByMimeType && isHtmlMimeType mimeType
-	mimeTypeIsXml	= parseByMimeType && isXmlMimeType  mimeType
+	removeNoneXml	= hasOption a_ignore_none_xml_contents
 	hasOption n	= optionIsSet n options
 
 -- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/Arrow/XmlIOStateArrow.hs b/src/Text/XML/HXT/Arrow/XmlIOStateArrow.hs
--- a/src/Text/XML/HXT/Arrow/XmlIOStateArrow.hs
+++ b/src/Text/XML/HXT/Arrow/XmlIOStateArrow.hs
@@ -59,6 +59,7 @@
       unsetParam,
       getParam,
       getAllParams,
+      getAllParamsString,
       setParamString,
       getParamString,
       setParamInt,
@@ -117,7 +118,11 @@
       getQueryFromURI,
       getRegNameFromURI,
       getSchemeFromURI,
-      getUserInfoFromURI
+      getUserInfoFromURI,
+
+      -- * Mime Type Handling
+      setMimeTypeTable,
+      setMimeTypeTableFromFile
       )
 where
 
@@ -184,11 +189,12 @@
 				  , xio_baseURI			:: ! String
 				  , xio_defaultBaseURI		:: ! String
 				  , xio_attrList		:: ! (AssocList String XmlTrees)
+				  , xio_mimeTypes		::   MimeTypeTable
 				  }
 
 instance DeepSeq XIOSysState where
-    deepSeq (XIOSys tr es em emh emc eml bu du al) y
-	= deepSeq tr $ deepSeq es $ deepSeq em $ deepSeq emh $ deepSeq emc $ deepSeq eml $ deepSeq bu $ deepSeq du $ deepSeq al y
+    deepSeq (XIOSys tr es em _emh emc eml bu du al _mt) y
+	= deepSeq tr $ deepSeq es $ deepSeq em $ deepSeq emc $ deepSeq eml $ deepSeq bu $ deepSeq du $ deepSeq al y
 
 -- |
 -- state datatype consists of a system state and a user state
@@ -232,6 +238,7 @@
 			 , xio_baseURI		= ""
 			 , xio_defaultBaseURI	= ""
 			 , xio_attrList		= []
+			 , xio_mimeTypes	= defaultMimeTypeTable
 			 }
 
 -- ------------------------------------------------------------
@@ -380,6 +387,18 @@
 getAllParams
     = getSysParam xio_attrList
 
+-- | read all attributes from global state
+-- and convert the values to strings
+
+getAllParamsString	:: IOStateArrow s b (AssocList String String)
+getAllParamsString
+    = getAllParams
+      >>>
+      listA ( unlistA
+	      >>>
+	      second (xshow unlistA)
+	    )
+
 setParamString	:: String -> String -> IOStateArrow s b b
 setParamString n v
     = perform ( txt v
@@ -898,5 +917,28 @@
       getPart s = do
 		  uri <- parseURIReference s
 		  return (sel uri)
+
+-- ------------------------------------------------------------
+
+-- | set the table mapping of file extensions to mime types in the system state
+--
+-- Default table is defined in 'Text.XML.HXT.DOM.MimeTypeDefaults'.
+-- This table is used when reading loacl files, (file: protocol) to determine the mime type
+
+setMimeTypeTable	:: MimeTypeTable -> IOStateArrow s b b
+setMimeTypeTable mtt
+    = changeSysParam (\ _ s -> s {xio_mimeTypes = mtt})
+
+-- | set the table mapping of file extensions to mime types by an external config file
+--
+-- The config file must follow the conventions of /etc/mime.types on a debian linux system,
+-- that means all empty lines and all lines starting with a # are ignored. The other lines
+-- must consist of a mime type followed by a possible empty list of extensions.
+-- The list of extenstions and mime types overwrites the default list in the system state
+-- of the IOStateArrow
+
+setMimeTypeTableFromFile	:: FilePath -> IOStateArrow s b b
+setMimeTypeTableFromFile file
+    = setMimeTypeTable $< arrIO0 ( readMimeTypeTable file)
 
 -- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/DOM/Interface.hs b/src/Text/XML/HXT/DOM/Interface.hs
--- a/src/Text/XML/HXT/DOM/Interface.hs
+++ b/src/Text/XML/HXT/DOM/Interface.hs
@@ -23,6 +23,7 @@
     , module Text.XML.HXT.DOM.NamespacePredicates
     , module Text.XML.HXT.DOM.Util
     , module Text.XML.HXT.DOM.XmlOptions
+    , module Text.XML.HXT.DOM.MimeTypes
     )
 where
 
@@ -31,6 +32,7 @@
 import Text.XML.HXT.DOM.NamespacePredicates
 import Text.XML.HXT.DOM.Util
 import Text.XML.HXT.DOM.XmlOptions		-- predefined options
+import Text.XML.HXT.DOM.MimeTypes		-- mime types related stuff
 
 
 -- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/DOM/MimeTypeDefaults.hs b/src/Text/XML/HXT/DOM/MimeTypeDefaults.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/XML/HXT/DOM/MimeTypeDefaults.hs
@@ -0,0 +1,584 @@
+-- | default mime type table
+-- 
+-- this file is generated from file /etc/mime.types
+
+module Text.XML.HXT.DOM.MimeTypeDefaults
+where
+
+-- | the table with the mapping from file name extensions to mime types
+
+mimeTypeDefaults :: [(String, String)]
+mimeTypeDefaults
+  = [ ("123",	"application/vnd.lotus-1-2-3")
+    , ("3ds",	"image/x-3ds")
+    , ("3g2",	"video/x-3gpp2")
+    , ("3gp",	"video/3gpp")
+    , ("669",	"audio/x-mod")
+    , ("BAY",	"image/x-dcraw")
+    , ("BLEND",	"application/x-blender")
+    , ("BMQ",	"image/x-dcraw")
+    , ("C",	"text/x-c++src")
+    , ("CR2",	"image/x-dcraw")
+    , ("CRW",	"image/x-dcraw")
+    , ("CS1",	"image/x-dcraw")
+    , ("CSSL",	"text/css")
+    , ("DC2",	"image/x-dcraw")
+    , ("DCR",	"image/x-dcraw")
+    , ("FFF",	"image/x-dcraw")
+    , ("K25",	"image/x-dcraw")
+    , ("KDC",	"image/x-dcraw")
+    , ("MOS",	"image/x-dcraw")
+    , ("MRW",	"image/x-dcraw")
+    , ("NEF",	"image/x-dcraw")
+    , ("NSV",	"video/x-nsv")
+    , ("ORF",	"image/x-dcraw")
+    , ("PAR2",	"application/x-par2")
+    , ("PEF",	"image/x-dcraw")
+    , ("RAF",	"image/x-dcraw")
+    , ("RDC",	"image/x-dcraw")
+    , ("SRF",	"image/x-dcraw")
+    , ("TTC",	"application/x-font-ttf")
+    , ("X3F",	"image/x-dcraw")
+    , ("XM",	"audio/x-mod")
+    , ("Z",	"application/x-compress")
+    , ("a",	"application/x-archive")
+    , ("aac",	"audio/x-aac")
+    , ("abw",	"application/x-abiword")
+    , ("abw.CRASHED",	"application/x-abiword")
+    , ("abw.gz",	"application/x-abiword")
+    , ("ac3",	"audio/ac3")
+    , ("adb",	"text/x-adasrc")
+    , ("ads",	"text/x-adasrc")
+    , ("afm",	"application/x-font-afm")
+    , ("ag",	"image/x-applix-graphics")
+    , ("ai",	"application/illustrator")
+    , ("aif",	"audio/x-aiff")
+    , ("aif",	"audio/x-aiff")
+    , ("aifc",	"audio/x-aiff")
+    , ("aiff",	"audio/x-aiff")
+    , ("aiff",	"audio/x-aiff")
+    , ("al",	"application/x-perl")
+    , ("anim[1-9j]",	"video/x-anim")
+    , ("aop",	"application/x-frontline")
+    , ("arj",	"application/x-arj")
+    , ("as",	"application/x-applix-spreadsheet")
+    , ("asax",	"application/x-asax")
+    , ("asc",	"text/plain")
+    , ("ascx",	"application/x-ascx")
+    , ("asf",	"video/x-ms-asf")
+    , ("ashx",	"application/x-ashx")
+    , ("asix",	"application/x-asix")
+    , ("asmx",	"application/x-asmx")
+    , ("asp",	"application/x-asp")
+    , ("aspx",	"application/x-aspx")
+    , ("asx",	"video/x-ms-asf")
+    , ("au",	"audio/basic")
+    , ("avi",	"video/x-msvideo")
+    , ("aw",	"application/x-applix-word")
+    , ("axd",	"application/x-axd")
+    , ("bak",	"application/x-trash")
+    , ("bay",	"image/x-dcraw")
+    , ("bcpio",	"application/x-bcpio")
+    , ("bdf",	"application/x-font-bdf")
+    , ("bib",	"text/x-bibtex")
+    , ("bin",	"application/octet-stream")
+    , ("bin",	"application/x-stuffit")
+    , ("blend",	"application/x-blender")
+    , ("blender",	"application/x-blender")
+    , ("bmp",	"image/bmp")
+    , ("bmq",	"image/x-dcraw")
+    , ("boo",	"text/x-boo")
+    , ("bz",	"application/x-bzip")
+    , ("bz",	"application/x-bzip")
+    , ("bz2",	"application/x-bzip")
+    , ("bz2",	"application/x-bzip")
+    , ("c",	"text/x-csrc")
+    , ("c++",	"text/x-c++src")
+    , ("caves",	"application/x-gnome-stones")
+    , ("cc",	"text/x-c++src")
+    , ("cdf",	"application/x-netcdf")
+    , ("cdr",	"application/vnd.corel-draw")
+    , ("cer",	"application/x-x509-ca-cert")
+    , ("cert",	"application/x-x509-ca-cert")
+    , ("cgi",	"application/x-cgi")
+    , ("cgm",	"image/cgm")
+    , ("chm",	"application/x-chm")
+    , ("chrt",	"application/x-kchart")
+    , ("cht",	"application/chemtool")
+    , ("class",	"application/x-java")
+    , ("cls",	"text/x-tex")
+    , ("cmbx",	"application/x-cmbx")
+    , ("config",	"application/x-config")
+    , ("connection",	"application/x-gnome-db-connection")
+    , ("cpio",	"application/x-cpio")
+    , ("cpio.gz",	"application/x-cpio-compressed")
+    , ("cpp",	"text/x-c++src")
+    , ("cr2",	"image/x-dcraw")
+    , ("crt",	"application/x-x509-ca-cert")
+    , ("crw",	"image/x-dcraw")
+    , ("cs",	"text/x-csharp")
+    , ("cs1",	"image/x-dcraw")
+    , ("csh",	"application/x-csh")
+    , ("css",	"text/css")
+    , ("csv",	"text/x-comma-separated-values")
+    , ("cue",	"application/x-cue")
+    , ("cur",	"image/x-win-bitmap")
+    , ("cxx",	"text/x-c++src")
+    , ("d",	"text/x-dsrc")
+    , ("dat",	"video/mpeg")
+    , ("database",	"application/x-gnome-db-database")
+    , ("dbf",	"application/x-dbase")
+    , ("dc",	"application/x-dc-rom")
+    , ("dc2",	"image/x-dcraw")
+    , ("dcl",	"text/x-dcl")
+    , ("dcm",	"application/dicom")
+    , ("dcr",	"image/x-dcraw")
+    , ("deb",	"application/x-deb")
+    , ("der",	"application/x-x509-ca-cert")
+    , ("desktop",	"application/x-desktop")
+    , ("devhelp",	"application/x-devhelp")
+    , ("dia",	"application/x-dia-diagram")
+    , ("dif",	"video/dv")
+    , ("diff",	"text/x-patch")
+    , ("disco",	"application/x-disco")
+    , ("display",	"application/x-gdesklets-display")
+    , ("djv",	"image/vnd.djvu")
+    , ("djvu",	"image/vnd.djvu")
+    , ("doc",	"application/msword")
+    , ("docbook",	"application/docbook+xml")
+    , ("dsl",	"text/x-dsl")
+    , ("dtd",	"text/x-dtd")
+    , ("dv",	"video/dv")
+    , ("dvi",	"application/x-dvi")
+    , ("dwg",	"image/vnd.dwg")
+    , ("dxf",	"image/vnd.dxf")
+    , ("ear",	"application/x-java-archive")
+    , ("egon",	"application/x-egon")
+    , ("el",	"text/x-emacs-lisp")
+    , ("eps",	"image/x-eps")
+    , ("epsf",	"image/x-eps")
+    , ("epsi",	"image/x-eps")
+    , ("etheme",	"application/x-e-theme")
+    , ("etx",	"text/x-setext")
+    , ("exe",	"application/x-executable")
+    , ("exe",	"application/x-ms-dos-executable")
+    , ("ez",	"application/andrew-inset")
+    , ("f",	"text/x-fortran")
+    , ("fff",	"image/x-dcraw")
+    , ("fig",	"image/x-xfig")
+    , ("fits",	"image/x-fits")
+    , ("flac",	"audio/x-flac")
+    , ("flc",	"video/x-flic")
+    , ("fli",	"video/x-flic")
+    , ("flw",	"application/x-kivio")
+    , ("fo",	"text/x-xslfo")
+    , ("g3",	"image/fax-g3")
+    , ("gb",	"application/x-gameboy-rom")
+    , ("gcrd",	"text/directory")
+    , ("gen",	"application/x-genesis-rom")
+    , ("gf",	"application/x-tex-gf")
+    , ("gg",	"application/x-sms-rom")
+    , ("gif",	"image/gif")
+    , ("glabels",	"application/x-glabels")
+    , ("glade",	"application/x-glade")
+    , ("gmo",	"application/x-gettext-translation")
+    , ("gnc",	"application/x-gnucash")
+    , ("gnucash",	"application/x-gnucash")
+    , ("gnumeric",	"application/x-gnumeric")
+    , ("gpg",	"application/pgp-encrypted")
+    , ("gra",	"application/x-graphite")
+    , ("gsf",	"application/x-font-type1")
+    , ("gtar",	"application/x-gtar")
+    , ("gz",	"application/x-gzip")
+    , ("h",	"text/x-chdr")
+    , ("h++",	"text/x-chdr")
+    , ("hdf",	"application/x-hdf")
+    , ("hh",	"text/x-c++hdr")
+    , ("hp",	"text/x-chdr")
+    , ("hpgl",	"application/vnd.hp-hpgl")
+    , ("hs",	"text/x-haskell")
+    , ("htm",	"text/html")
+    , ("html",	"text/html")
+    , ("ica",	"application/x-ica")
+    , ("icb",	"image/x-icb")
+    , ("ico",	"image/x-ico")
+    , ("ics",	"text/calendar")
+    , ("idl",	"text/x-idl")
+    , ("ief",	"image/ief")
+    , ("iff",	"image/x-iff")
+    , ("il",	"text/x-msil")
+    , ("ilbm",	"image/x-ilbm")
+    , ("iso",	"application/x-cd-image")
+    , ("it",	"audio/x-it")
+    , ("jam",	"application/x-jamin")
+    , ("jar",	"application/x-jar")
+    , ("jar",	"application/x-java-archive")
+    , ("java",	"text/x-java")
+    , ("jng",	"image/x-jng")
+    , ("jnlp",	"application/x-java-jnlp-file")
+    , ("jp2",	"image/jpeg2000")
+    , ("jpe",	"image/jpeg")
+    , ("jpeg",	"image/jpeg")
+    , ("jpg",	"image/jpeg")
+    , ("jpr",	"application/x-jbuilder-project")
+    , ("jpx",	"application/x-jbuilder-project")
+    , ("js",	"application/x-javascript")
+    , ("js",	"text/x-js")
+    , ("k",	"application/x-tex-pk")
+    , ("k25",	"image/x-dcraw")
+    , ("karbon",	"application/x-karbon")
+    , ("kdc",	"image/x-dcraw")
+    , ("kdelnk",	"application/x-desktop")
+    , ("kfo",	"application/x-kformula")
+    , ("kil",	"application/x-killustrator")
+    , ("kino",	"application/x-smil")
+    , ("kon",	"application/x-kontour")
+    , ("kpm",	"application/x-kpovmodeler")
+    , ("kpr",	"application/x-kpresenter")
+    , ("kpt",	"application/x-kpresenter")
+    , ("kra",	"application/x-krita")
+    , ("ksp",	"application/x-kspread")
+    , ("kud",	"application/x-kugar")
+    , ("kwd",	"application/x-kword")
+    , ("kwt",	"application/x-kword")
+    , ("la",	"application/x-shared-library-la")
+    , ("lha",	"application/x-lha")
+    , ("lhs",	"text/x-literate-haskell")
+    , ("lhz",	"application/x-lhz")
+    , ("log",	"text/x-log")
+    , ("ltx",	"text/x-tex")
+    , ("lwo",	"image/x-lwo")
+    , ("lwob",	"image/x-lwo")
+    , ("lws",	"image/x-lws")
+    , ("lyx",	"application/x-lyx")
+    , ("lzh",	"application/x-lha")
+    , ("lzh",	"application/x-lha")
+    , ("lzo",	"application/x-lzop")
+    , ("m",	"text/x-objcsrc")
+    , ("m15",	"audio/x-mod")
+    , ("m3u",	"audio/x-mpegurl")
+    , ("m4a",	"audio/x-m4a")
+    , ("man",	"application/x-troff-man")
+    , ("master",	"application/x-master-page")
+    , ("md",	"application/x-genesis-rom")
+    , ("mdp",	"application/x-mdp")
+    , ("mds",	"application/x-mds")
+    , ("mdsx",	"application/x-mdsx")
+    , ("me",	"text/x-troff-me")
+    , ("mergeant",	"application/x-mergeant")
+    , ("mgp",	"application/x-magicpoint")
+    , ("mid",	"audio/midi")
+    , ("midi",	"audio/midi")
+    , ("mif",	"application/x-mif")
+    , ("mkv",	"application/x-matroska")
+    , ("mm",	"text/x-troff-mm")
+    , ("mml",	"text/mathml")
+    , ("mng",	"video/x-mng")
+    , ("moc",	"text/x-moc")
+    , ("mod",	"audio/x-mod")
+    , ("moov",	"video/quicktime")
+    , ("mos",	"image/x-dcraw")
+    , ("mov",	"video/quicktime")
+    , ("movie",	"video/x-sgi-movie")
+    , ("mp2",	"video/mpeg")
+    , ("mp3",	"audio/mpeg")
+    , ("mpe",	"video/mpeg")
+    , ("mpeg",	"video/mpeg")
+    , ("mpg",	"video/mpeg")
+    , ("mps",	"application/x-mps")
+    , ("mrproject",	"application/x-planner")
+    , ("mrw",	"image/x-dcraw")
+    , ("ms",	"text/x-troff-ms")
+    , ("msod",	"image/x-msod")
+    , ("msx",	"application/x-msx-rom")
+    , ("mtm",	"audio/x-mod")
+    , ("n",	"text/x-nemerle")
+    , ("n64",	"application/x-n64-rom")
+    , ("nb",	"application/mathematica")
+    , ("nc",	"application/x-netcdf")
+    , ("nef",	"image/x-dcraw")
+    , ("nes",	"application/x-nes-rom")
+    , ("nsv",	"video/x-nsv")
+    , ("o",	"application/x-object")
+    , ("obj",	"application/x-tgif")
+    , ("oda",	"application/oda")
+    , ("odb",	"application/vnd.oasis.opendocument.database")
+    , ("odc",	"application/vnd.oasis.opendocument.chart")
+    , ("odf",	"application/vnd.oasis.opendocument.formula")
+    , ("odg",	"application/vnd.oasis.opendocument.graphics")
+    , ("odi",	"application/vnd.oasis.opendocument.image")
+    , ("odm",	"application/vnd.oasis.opendocument.text-master")
+    , ("odp",	"application/vnd.oasis.opendocument.presentation")
+    , ("ods",	"application/vnd.oasis.opendocument.spreadsheet")
+    , ("odt",	"application/vnd.oasis.opendocument.text")
+    , ("ogg",	"application/ogg")
+    , ("old",	"application/x-trash")
+    , ("oleo",	"application/x-oleo")
+    , ("orf",	"image/x-dcraw")
+    , ("otg",	"application/vnd.oasis.opendocument.graphics-template")
+    , ("oth",	"application/vnd.oasis.opendocument.text-web")
+    , ("otp",	"application/vnd.oasis.opendocument.presentation-template")
+    , ("ots",	"application/vnd.oasis.opendocument.spreadsheet-template")
+    , ("ott",	"application/vnd.oasis.opendocument.text-template")
+    , ("p",	"text/x-pascal")
+    , ("p12",	"application/x-pkcs12")
+    , ("p7s",	"application/pkcs7-signature")
+    , ("par2",	"application/x-par2")
+    , ("pas",	"text/x-pascal")
+    , ("patch",	"text/x-patch")
+    , ("pbm",	"image/x-portable-bitmap")
+    , ("pcd",	"image/x-photo-cd")
+    , ("pcf",	"application/x-font-pcf")
+    , ("pcf.Z",	"application/x-font-type1")
+    , ("pcf.gz",	"application/x-font-pcf")
+    , ("pcl",	"application/vnd.hp-pcl")
+    , ("pdb",	"application/vnd.palm")
+    , ("pdb",	"application/x-palm-database")
+    , ("pdf",	"application/pdf")
+    , ("pef",	"image/x-dcraw")
+    , ("pem",	"application/x-x509-ca-cert")
+    , ("perl",	"application/x-perl")
+    , ("pfa",	"application/x-font-type1")
+    , ("pfb",	"application/x-font-type1")
+    , ("pfx",	"application/x-pkcs12")
+    , ("pgm",	"image/x-portable-graymap")
+    , ("pgn",	"application/x-chess-pgn")
+    , ("pgp",	"application/pgp")
+    , ("pgp",	"application/pgp-encrypted")
+    , ("php",	"application/x-php")
+    , ("php3",	"application/x-php")
+    , ("php4",	"application/x-php")
+    , ("pict",	"image/x-pict")
+    , ("pict1",	"image/x-pict")
+    , ("pict2",	"image/x-pict")
+    , ("pkr",	"application/pgp-keys")
+    , ("pl",	"application/x-perl")
+    , ("planner",	"application/x-planner")
+    , ("pln",	"application/x-planperfect")
+    , ("pls",	"audio/x-scpls")
+    , ("pls",	"audio/x-scpls")
+    , ("pm",	"application/x-perl")
+    , ("png",	"image/png")
+    , ("pnm",	"image/x-portable-anymap")
+    , ("po",	"text/x-gettext-translation")
+    , ("pot",	"application/vnd.ms-powerpoint")
+    , ("pot",	"text/x-gettext-translation-template")
+    , ("ppm",	"image/x-portable-pixmap")
+    , ("pps",	"application/vnd.ms-powerpoint")
+    , ("ppt",	"application/vnd.ms-powerpoint")
+    , ("ppz",	"application/vnd.ms-powerpoint")
+    , ("prc",	"application/x-palm-database")
+    , ("prj",	"application/x-anjuta-project")
+    , ("prjx",	"application/x-prjx")
+    , ("ps",	"application/postscript")
+    , ("ps.gz",	"application/x-gzpostscript")
+    , ("psd",	"image/x-psd")
+    , ("psf",	"application/x-font-linux-psf")
+    , ("psid",	"audio/prs.sid")
+    , ("pto",	"application/x-ptoptimizer-script")
+    , ("pw",	"application/x-pw")
+    , ("py",	"text/x-python")
+    , ("pyc",	"application/x-python-bytecode")
+    , ("pyo",	"application/x-python-bytecode")
+    , ("qif",	"application/x-qw")
+    , ("qt",	"video/quicktime")
+    , ("qtvr",	"video/quicktime")
+    , ("ra",	"audio/vnd.rn-realaudio")
+    , ("ra",	"audio/x-pn-realaudio")
+    , ("raf",	"image/x-dcraw")
+    , ("ram",	"audio/x-pn-realaudio")
+    , ("ram",	"audio/x-pn-realaudio")
+    , ("rar",	"application/x-rar")
+    , ("rar",	"application/x-rar-compressed")
+    , ("ras",	"image/x-cmu-raster")
+    , ("rdc",	"image/x-dcraw")
+    , ("rdf",	"text/rdf")
+    , ("rdp",	"application/x-rdp")
+    , ("rej",	"application/x-reject")
+    , ("rem",	"application/x-remoting")
+    , ("resources",	"application/x-resources")
+    , ("resx",	"application/x-resourcesx")
+    , ("rgb",	"image/x-rgb")
+    , ("rle",	"image/rle")
+    , ("rm",	"application/vnd.rn-realmedia")
+    , ("rm",	"audio/x-pn-realaudio")
+    , ("rmm",	"audio/x-pn-realaudio")
+    , ("rms",	"application/vnd.rn-realmedia-secure")
+    , ("rmvb",	"application/vnd.rn-realmedia-vbr")
+    , ("rng",	"text/x-rng")
+    , ("roff",	"application/x-troff")
+    , ("rpm",	"application/x-rpm")
+    , ("rss",	"text/rss")
+    , ("rt",	"text/vnd.rn-realtext")
+    , ("rtf",	"application/rtf")
+    , ("rtx",	"text/richtext")
+    , ("rv",	"video/vnd.rn-realvideo")
+    , ("s3m",	"audio/x-s3m")
+    , ("sam",	"application/x-amipro")
+    , ("sc",	"application/x-sc")
+    , ("scd",	"application/x-scribus")
+    , ("scd.gz",	"application/x-scribus")
+    , ("scm",	"text/x-scheme")
+    , ("sda",	"application/vnd.stardivision.draw")
+    , ("sdc",	"application/vnd.stardivision.calc")
+    , ("sdd",	"application/vnd.stardivision.impress")
+    , ("sdp",	"application/sdp")
+    , ("sdp",	"application/vnd.stardivision.impress")
+    , ("sds",	"application/vnd.stardivision.chart")
+    , ("sdw",	"application/vnd.stardivision.writer")
+    , ("sgi",	"image/x-sgi")
+    , ("sgl",	"application/vnd.stardivision.writer")
+    , ("sgm",	"text/sgml")
+    , ("sgml",	"text/sgml")
+    , ("sh",	"application/x-shellscript")
+    , ("shar",	"application/x-shar")
+    , ("siag",	"application/x-siag")
+    , ("sid",	"audio/prs.sid")
+    , ("sig",	"application/pgp-signature")
+    , ("sik",	"application/x-trash")
+    , ("sit",	"application/stuffit")
+    , ("sit",	"application/x-stuffit")
+    , ("skr",	"application/pgp-keys")
+    , ("sla",	"application/x-scribus")
+    , ("sla.gz",	"application/x-scribus")
+    , ("slk",	"text/spreadsheet")
+    , ("smd",	"application/vnd.stardivision.mail")
+    , ("smf",	"application/vnd.stardivision.math")
+    , ("smi",	"application/smil")
+    , ("smi",	"application/x-smil")
+    , ("smil",	"application/smil")
+    , ("smil",	"application/x-smil")
+    , ("sml",	"application/smil")
+    , ("sms",	"application/x-sms-rom")
+    , ("snd",	"audio/basic")
+    , ("so",	"application/x-sharedlib")
+    , ("soap",	"application/x-soap-remoting")
+    , ("spd",	"application/x-font-speedo")
+    , ("sql",	"text/x-sql")
+    , ("src",	"application/x-wais-source")
+    , ("srf",	"image/x-dcraw")
+    , ("ssm",	"application/x-streamingmedia")
+    , ("stc",	"application/vnd.sun.xml.calc.template")
+    , ("std",	"application/vnd.sun.xml.draw.template")
+    , ("sti",	"application/vnd.sun.xml.impress.template")
+    , ("stm",	"audio/x-stm")
+    , ("stw",	"application/vnd.sun.xml.writer.template")
+    , ("sty",	"text/x-tex")
+    , ("sun",	"image/x-sun-raster")
+    , ("sv4cpio",	"application/x-sv4cpio")
+    , ("sv4crc",	"application/x-sv4crc")
+    , ("svg",	"image/svg+xml")
+    , ("swf",	"application/x-shockwave-flash")
+    , ("sxc",	"application/vnd.sun.xml.calc")
+    , ("sxd",	"application/vnd.sun.xml.draw")
+    , ("sxg",	"application/vnd.sun.xml.writer.global")
+    , ("sxi",	"application/vnd.sun.xml.impress")
+    , ("sxm",	"application/vnd.sun.xml.math")
+    , ("sxw",	"application/vnd.sun.xml.writer")
+    , ("sylk",	"text/spreadsheet")
+    , ("t",	"application/x-troff")
+    , ("tar",	"application/x-tar")
+    , ("tar.Z",	"application/x-compressed-tar")
+    , ("tar.Z",	"application/x-tarz")
+    , ("tar.bz",	"application/x-bzip-compressed-tar")
+    , ("tar.bz",	"application/x-bzip-compressed-tar")
+    , ("tar.bz2",	"application/x-bzip-compressed-tar")
+    , ("tar.bz2",	"application/x-bzip-compressed-tar")
+    , ("tar.gz",	"application/x-compressed-tar")
+    , ("tar.gz",	"application/x-compressed-tar")
+    , ("tar.lzo",	"application/x-lzop-compressed-tar")
+    , ("tar.lzo",	"application/x-tzo")
+    , ("taz",	"application/x-compressed-tar")
+    , ("tbz",	"application/x-bzip-compressed-tar")
+    , ("tbz2",	"application/x-bzip-compressed-tar")
+    , ("tcl",	"text/x-tcl")
+    , ("tex",	"text/x-tex")
+    , ("texi",	"text/x-texinfo")
+    , ("texinfo",	"text/x-texinfo")
+    , ("tga",	"image/x-tga")
+    , ("tgz",	"application/x-compressed-tar")
+    , ("tgz",	"application/x-compressed-tar")
+    , ("theme",	"application/x-theme")
+    , ("tif",	"image/tiff")
+    , ("tiff",	"image/tiff")
+    , ("tk",	"text/x-tcl")
+    , ("tm",	"text/x-texmacs")
+    , ("toc",	"application/x-toc")
+    , ("torrent",	"application/x-bittorrent")
+    , ("tr",	"application/x-troff")
+    , ("ts",	"application/x-linguist")
+    , ("ts",	"text/x-texmacs")
+    , ("tsv",	"text/tab-separated-values")
+    , ("ttc",	"application/x-font-ttf")
+    , ("ttf",	"application/x-font-ttf")
+    , ("txt",	"text/plain")
+    , ("tzo",	"application/x-lzop-compressed-tar")
+    , ("tzo",	"application/x-tzo")
+    , ("ui",	"application/x-designer")
+    , ("uil",	"text/x-uil")
+    , ("ult",	"audio/x-mod")
+    , ("uni",	"audio/x-mod")
+    , ("uri",	"text/x-uri")
+    , ("url",	"text/x-uri")
+    , ("ustar",	"application/x-ustar")
+    , ("vb",	"text/x-vb")
+    , ("vcf",	"text/directory")
+    , ("vcs",	"text/calendar")
+    , ("vct",	"text/directory")
+    , ("vob",	"video/mpeg")
+    , ("voc",	"audio/x-voc")
+    , ("vor",	"application/vnd.stardivision.writer")
+    , ("war",	"application/x-java-archive")
+    , ("wav",	"audio/x-wav")
+    , ("wb1",	"application/x-quattro-pro")
+    , ("wb1",	"application/x-quattropro")
+    , ("wb2",	"application/x-quattro-pro")
+    , ("wb2",	"application/x-quattropro")
+    , ("wb3",	"application/x-quattro-pro")
+    , ("wb3",	"application/x-quattropro")
+    , ("wk1",	"application/vnd.lotus-1-2-3")
+    , ("wk3",	"application/vnd.lotus-1-2-3")
+    , ("wk4",	"application/vnd.lotus-1-2-3")
+    , ("wks",	"application/vnd.lotus-1-2-3")
+    , ("wmf",	"image/x-wmf")
+    , ("wml",	"text/vnd.wap.wml")
+    , ("wmv",	"video/x-ms-wmv")
+    , ("wpd",	"application/vnd.wordperfect")
+    , ("wpg",	"application/x-wpg")
+    , ("wri",	"application/x-mswrite")
+    , ("wrl",	"model/vrml")
+    , ("wsdl",	"application/x-wsdl")
+    , ("x3f",	"image/x-dcraw")
+    , ("xac",	"application/x-gnucash")
+    , ("xbel",	"application/x-xbel")
+    , ("xbm",	"image/x-xbitmap")
+    , ("xcf",	"image/x-xcf")
+    , ("xcf.bz2",	"image/x-compressed-xcf")
+    , ("xcf.gz",	"image/x-compressed-xcf")
+    , ("xds",	"text/x-xds")
+    , ("xhtml",	"application/xhtml+xml")
+    , ("xi",	"audio/x-xi")
+    , ("xla",	"application/vnd.ms-excel")
+    , ("xlc",	"application/vnd.ms-excel")
+    , ("xld",	"application/vnd.ms-excel")
+    , ("xll",	"application/vnd.ms-excel")
+    , ("xlm",	"application/vnd.ms-excel")
+    , ("xls",	"application/vnd.ms-excel")
+    , ("xlt",	"application/vnd.ms-excel")
+    , ("xlw",	"application/vnd.ms-excel")
+    , ("xm",	"audio/x-xm")
+    , ("xmi",	"text/x-xmi")
+    , ("xml",	"text/xml")
+    , ("xpl",	"audio/x-scpls")
+    , ("xpm",	"image/x-xpixmap")
+    , ("xsl",	"text/x-xsl")
+    , ("xsl",	"text/x-xslt")
+    , ("xslfo",	"text/x-xslfo")
+    , ("xslt",	"text/x-xslt")
+    , ("xul",	"application/vnd.mozilla.xul+xml")
+    , ("xwd",	"image/x-xwindowdump")
+    , ("zabw",	"application/x-abiword")
+    , ("zip",	"application/zip")
+    , ("zoo",	"application/x-zoo")
+   ]
+
diff --git a/src/Text/XML/HXT/DOM/MimeTypes.hs b/src/Text/XML/HXT/DOM/MimeTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/XML/HXT/DOM/MimeTypes.hs
@@ -0,0 +1,113 @@
+-- ------------------------------------------------------------
+
+{- |
+   Module     : Text.XML.HXT.DOM.MimeTypes
+   Copyright  : Copyright (C) 2008 Uwe Schmidt
+   License    : MIT
+
+   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
+   Stability  : experimental
+   Portability: portable
+
+   mime type related data and functions
+
+-}
+
+-- ------------------------------------------------------------
+
+module Text.XML.HXT.DOM.MimeTypes
+where
+
+import           Control.Monad (mplus)
+
+import           Data.Char
+import           Data.List
+import qualified Data.Map as M
+import           Data.Maybe
+
+import           System.IO
+
+import           Text.XML.HXT.DOM.MimeTypeDefaults
+
+-- ------------------------------------------------------------
+
+type MimeTypeTable	= M.Map String String
+
+-- ------------------------------------------------------------
+
+-- mime types
+--
+-- see RFC \"http:\/\/www.rfc-editor.org\/rfc\/rfc3023.txt\"
+
+application_xhtml,
+ application_xml,
+ application_xml_external_parsed_entity,
+ application_xml_dtd,
+ text_html,
+ text_xml,
+ text_xml_external_parsed_entity	:: String
+
+application_xhtml			= "application/xhtml+xml"
+application_xml				= "application/xml"
+application_xml_external_parsed_entity	= "application/xml-external-parsed-entity"
+application_xml_dtd			= "application/xml-dtd"
+
+text_html				= "text/html"
+text_xml				= "text/xml"
+text_xml_external_parsed_entity		= "text/xml-external-parsed-entity"
+
+isHtmlMimeType	:: String -> Bool
+isHtmlMimeType t
+    = t == text_html
+
+isXmlMimeType	:: String -> Bool
+isXmlMimeType t
+    = ( t `elem` [ application_xhtml
+		 , application_xml
+		 , application_xml_external_parsed_entity
+		 , application_xml_dtd
+		 , text_xml
+		 , text_xml_external_parsed_entity
+		 ]
+	||
+	"+xml" `isSuffixOf` t		-- application/mathml+xml
+      )					-- or image/svg+xml
+
+defaultMimeTypeTable	:: MimeTypeTable
+defaultMimeTypeTable
+    = M.fromList mimeTypeDefaults
+
+extensionToMimeType	:: String -> MimeTypeTable -> String
+extensionToMimeType e
+    = fromMaybe "" . lookupMime 
+    where
+    lookupMime t
+	= M.lookup e t			-- try exact match
+	  `mplus`
+	  M.lookup (map toLower e) t	-- else try lowercase match
+          `mplus`
+	  M.lookup (map toUpper e) t	-- else try uppercase match
+
+-- ------------------------------------------------------------
+
+readMimeTypeTable	:: FilePath -> IO MimeTypeTable
+readMimeTypeTable inp
+    = do
+      h <- openFile inp ReadMode
+      c <- hGetContents h
+      return . M.fromList . parseMimeTypeTable $ c
+
+parseMimeTypeTable	:: String -> [(String, String)]
+parseMimeTypeTable
+    = concat
+      . map buildPairs
+      . map words
+      . filter (not . ("#" `isPrefixOf`))
+      . filter (not . all (isSpace))
+      . lines
+    where
+    buildPairs	:: [String] -> [(String, String)]
+    buildPairs	[] = []
+    buildPairs	(mt:exts) = map (\ x -> (x, mt)) $ exts
+
+-- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/DOM/XmlKeywords.hs b/src/Text/XML/HXT/DOM/XmlKeywords.hs
--- a/src/Text/XML/HXT/DOM/XmlKeywords.hs
+++ b/src/Text/XML/HXT/DOM/XmlKeywords.hs
@@ -8,7 +8,6 @@
    Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
    Stability  : experimental
    Portability: portable
-   Version    : $Id: XmlKeywords.hs,v 1.10 2006/11/02 09:34:09 hxml Exp $
 
    Constants for XML keywords, for special attribute names
    and special attribute values
@@ -20,10 +19,6 @@
 module Text.XML.HXT.DOM.XmlKeywords
 where
 
-import Data.List
-    ( isSuffixOf
-    )
-
 -- ------------------------------------------------------------
 --
 -- string constants for representing DTD keywords and attributes
@@ -50,11 +45,14 @@
  a_error,
  a_error_log,
  a_help,
+ a_ignore_encoding_errors,
+ a_ignore_none_xml_contents,
  a_indent,
  a_issue_errors,
  a_issue_warnings,
  a_kind,
  a_line,
+ a_mime_types,
  a_module,
  a_modifier,
  a_name,
@@ -153,11 +151,14 @@
 a_error				= "error"
 a_error_log			= "errorLog"
 a_help				= "help"
+a_ignore_encoding_errors	= "ignore-encoding-errors"
+a_ignore_none_xml_contents	= "ignore-none-xml-contents"
 a_indent			= "indent"
 a_issue_warnings		= "issue-warnings"
 a_issue_errors			= "issue-errors"
 a_kind				= "kind"
 a_line				= "line"
+a_mime_types			= "mimetypes"
 a_module			= "module"
 a_modifier			= "modifier"
 a_name				= "name"
@@ -349,45 +350,5 @@
 a_validate_include            = "validate-include"
 a_output_changes              = "output-pattern-transformations"
 a_do_not_collect_errors       = "do-not-collect-errors"
-
--- ------------------------------------------------------------
-
--- mime types
---
--- see RFC \"http:\/\/www.rfc-editor.org\/rfc\/rfc3023.txt\"
-
-application_xhtml,
- application_xml,
- application_xml_external_parsed_entity,
- application_xml_dtd,
- text_html,
- text_xml,
- text_xml_external_parsed_entity	:: String
-
-application_xhtml			= "application/xhtml+xml"
-application_xml				= "application/xml"
-application_xml_external_parsed_entity	= "application/xml-external-parsed-entity"
-application_xml_dtd			= "application/xml-dtd"
-
-text_html				= "text/html"
-text_xml				= "text/xml"
-text_xml_external_parsed_entity		= "text/xml-external-parsed-entity"
-
-isHtmlMimeType	:: String -> Bool
-isHtmlMimeType t
-    = t == text_html
-
-isXmlMimeType	:: String -> Bool
-isXmlMimeType t
-    = ( t `elem` [ application_xhtml
-		, application_xml
-		, application_xml_external_parsed_entity
-		, application_xml_dtd
-		, text_xml
-		, text_xml_external_parsed_entity
-		]
-	||
-	"+xml" `isSuffixOf` t		-- application/mathml+xml
-      )					-- or image/svg+xml
 
 -- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/DOM/XmlOptions.hs b/src/Text/XML/HXT/DOM/XmlOptions.hs
--- a/src/Text/XML/HXT/DOM/XmlOptions.hs
+++ b/src/Text/XML/HXT/DOM/XmlOptions.hs
@@ -16,6 +16,7 @@
     , selectOptions
     , removeOptions
     , optionIsSet
+    , isTrueValue
     )
 where
 
@@ -44,19 +45,22 @@
 inputOptions
     = [ Option "t"	[a_trace]			(OptArg trc "LEVEL")			"trace level (0-4), default 1"
       , Option "p"	[a_proxy]			(ReqArg (att a_proxy)         "PROXY")	"proxy for http access (e.g. \"www-cache:3128\")"
-      , Option ""	[a_use_curl]			(NoArg  (att a_use_curl          v_1))	"HTTP access via external program \"curl\", more functionality, supports HTTP/1.0, less efficient"
-      , Option ""	[a_do_not_use_curl]		(NoArg  (att a_use_curl          v_0))	"HTTP access via built in HTTP/1.1 module (default)"
+      , Option ""	[a_use_curl]			(NoArg  (att a_use_curl          v_1))	"obsolete, since hxt-8.1 HTTP access is always done with curl bindings"
+      , Option ""	[a_do_not_use_curl]		(NoArg  (att a_use_curl          v_0))	"obsolete, since hxt-8.1 HTTP access is always done with curl bindings"
       , Option ""	[a_options_curl]		(ReqArg (att a_options_curl)    "STR")	"additional curl options, e.g. for timeout, ..."
       , Option ""	[a_default_baseuri]		(ReqArg (att transferURI) 	"URI")	"default base URI, default: \"file:///<cwd>/\""
       , Option "e"	[a_encoding]			(ReqArg (att a_encoding)    "CHARSET")	( "default document encoding (" ++ utf8 ++ ", " ++ isoLatin1 ++ ", " ++ usAscii ++ ", ...)" )
+      , Option ""       [a_mime_types]                  (ReqArg (att a_mime_types)     "FILE")  "set mime type configuration file, e.g. \"/etc/mime.types\""
       , Option ""	[a_issue_errors]		(NoArg	(att a_issue_errors      v_1))	"issue all errorr messages on stderr (default)"
       , Option ""	[a_do_not_issue_errors]		(NoArg	(att a_issue_errors      v_0))	"ignore all error messages"
+      , Option ""	[a_ignore_encoding_errors]	(NoArg  (att a_ignore_encoding_errors v_1))   "ignore encoding errors"
+      , Option ""	[a_ignore_none_xml_contents]    (NoArg  (att a_ignore_none_xml_contents v_1)) "discards all contents of none XML/HTML documents, only the meta info remains stays in the doc tree"
       , Option "H"	[a_parse_html]			(NoArg	(att a_parse_html        v_1))	"parse input as HTML, try to interprete everything as HTML, no validation"
-      , Option "M"	[a_parse_by_mimetype]		(NoArg  (att a_parse_by_mimetype v_1))	"parse dependent on mime type: text/html as HTML, text/xml and text/xhtml as XML, else no parse"
+      , Option "M"	[a_parse_by_mimetype]		(NoArg  (att a_parse_by_mimetype v_1))	"parse dependent on mime type: text/html as HTML, text/xml and text/xhtml and others as XML, else no parse"
+      , Option ""	[a_parse_xml]			(NoArg	(att a_parse_html        v_0))	"parse input as XML, (default)"
       , Option "T"	[a_tagsoup]			(NoArg	(att a_tagsoup           v_1))	"lasy tagsoup parser, for HTML and XML, no DTD, no validation, no PIs, only XHTML entityrefs"
       , Option ""	[a_issue_warnings]		(NoArg	(att a_issue_warnings    v_1))	"issue warnings, when parsing HTML (default)"
       , Option "Q"	[a_do_not_issue_warnings]	(NoArg	(att a_issue_warnings    v_0))	"ignore warnings, when parsing HTML"
-      , Option ""	[a_parse_xml]			(NoArg	(att a_parse_html        v_0))	"parse input as XML (default)"
       , Option ""	[a_validate]			(NoArg  (att a_validate          v_1))	"document validation when parsing XML (default)"
       , Option "w"	[a_do_not_validate]		(NoArg  (att a_validate          v_0))	"only wellformed check, no validation"
       , Option ""	[a_canonicalize]		(NoArg  (att a_canonicalize      v_1))	"canonicalize document, remove DTD, comment, transform CDATA, CharRef's, ... (default)"
@@ -161,7 +165,15 @@
 -- as true: \"1\", \"True\", \"true\", \"yes\", \"Yes\".
 
 optionIsSet	:: String -> Attributes -> Bool
-optionIsSet n
-    = (`elem` ["1", "True", "true", "Yes", "yes"]) . lookupDef "" n
+optionIsSet n	= isTrueValue . lookupDef "" n
+
+-- | check whether a string represents True
+--
+-- definition:
+--
+-- > isTrueValue	= (`elem` ["1", "True", "true", "Yes", "yes"])
+
+isTrueValue	:: String -> Bool
+isTrueValue	= (`elem` ["1", "True", "true", "Yes", "yes"])
 
 -- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/IO/GetHTTPCurl.hs b/src/Text/XML/HXT/IO/GetHTTPCurl.hs
deleted file mode 100644
--- a/src/Text/XML/HXT/IO/GetHTTPCurl.hs
+++ /dev/null
@@ -1,169 +0,0 @@
--- ------------------------------------------------------------
---
--- GET for http access with curl
---
--- Version : $Id: GetHTTPCurl.hs,v 1.3 2005/04/14 12:52:52 hxml Exp $
-
-module Text.XML.HXT.IO.GetHTTPCurl
-    ( getCont
-    )
-
-where
-
-import Text.XML.HXT.DOM.XmlKeywords
-
-import Text.XML.HXT.Parser.ProtocolHandlerUtil
-    ( parseContentType
-    )
-
-import Text.ParserCombinators.Parsec
-    ( Parser
-    , parse
-    , anyChar
-    , char
-    , digit
-    , getInput
-    , many1
-    , manyTill
-    , spaces
-    , string
-    , (<|>)
-    )
-
-import qualified Text.ParserCombinators.Parsec as Parsec (try)	-- try
-
-import System.PipeOpen
-    ( popen
-    )
-
-import Data.Char
-    ( toLower
-    )
-
-import System.IO
-
--- ------------------------------------------------------------
---
--- the http protocol handler implemented by calling external program curl
-
-getCont		:: String -> String -> String -> IO (Either String ([(String, String)], String))
-getCont curlOptions uri proxy
-    = do
-      (res, errs, rc) <- popen cmd allArgs
-      if rc /= 0
-	 then return $ Left ( "http error when requesting URI "
-			      ++ show uri
-			      ++ ": (rc=" ++ show rc ++ ") "
-			      ++ errs
-			    )
-	 else let
-	      (st, al, contents) = parseResponse res
-	      in
-	      if st >= 200 && st < 300
-		 then return $ Right (al, contents)
-		 else return $ Left ( "http error when accessing URI "
-				      ++ show uri
-				      ++ ": "
-				      ++ show st
-				    )
-    where
-    cmd		= "curl"
-
-    allArgs	= args
-		  ++ proxyArgs proxy
-		  ++ words curlOptions
-
-    args 	= [ "--silent"
-		  , "--show-error"
-		  , "--dump-header", "-"
-		  , uri
-		  ]
-    proxyArgs ""
-		= []
-    proxyArgs prx
-		= [ "--proxy", prx ]
-
-parseResponse	:: String -> (Int, [(String, String)], String)
-parseResponse inp
-    = ( either
-          ( const (999, [(transferMessage, "illegal HTTP response")], inp))
-          id
-	.
-	parse parseHttpResponse "HTTP Header"
-      ) inp
-
--- ------------------------------------------------------------
-
-parseHttpResponse		:: Parser (Int, [(String, String)], String)
-parseHttpResponse
-    = do
-      allResponses <- many1 parse1Response
-      let (rc, rh, rhs) = last allResponses
-      content <- getInput
-      return (rc, rh ++ rhs, content)
-    where
-
-    parse1Response
-	= do
-	  (rc, rh) <- parseResp
-	  rhs      <- parseHeaders
-	  return (rc, rh, rhs)
-
-    crlf		:: Parser ()
-    crlf
-	= do
-	  ( Parsec.try (string "\r\n") <|> string "\n" )
-	  return ()
-
-    parseResp		:: Parser (Int, [(String, String)])
-    parseResp
-	= do
-	  vers <- ( do
-		    http <- string "HTTP/"
-		    mav <- many1 digit
-		    char '.'
-		    miv <- many1 digit
-		    return (http ++ mav ++ "." ++ miv)
-		  )
-	  spaces
-	  ds <- many1 digit
-	  spaces
-	  reason <- manyTill anyChar crlf
-	  return ( read ds,
-		   [(transferMessage, reason), (transferVersion, vers)]
-		 )
-
-    parseHeaders	:: Parser [(String, String)]
-    parseHeaders
-	= ( do
-	    crlf
-	    return []
-	  )
-	  <|>
-	  ( do
-	    header1 <- parse1Header
-	    rest    <- parseHeaders
-	    return (header1 ++ rest)
-	  )
-	  <|>
-	  ( do
-	    return [(httpPrefix ++ "IllegalHeaders", "")]
-	  )
-
-    parse1Header	:: Parser [(String, String)]
-    parse1Header
-	= do
-	  header <- manyTill anyChar (char ':')
-	  spaces
-	  value  <- manyTill anyChar crlf
-	  let ct = parseCT header value
-	  return $ ct ++ [(httpPrefix ++ header, value)]
-	where
-	parseCT	:: String -> String -> [(String, String)]
-	parseCT h v
-	    | map toLower h == "content-type"
-		= either (const []) id . parse parseContentType h $ v
-	    | otherwise
-		= []
-
--- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/IO/GetHTTPLibCurl.hs b/src/Text/XML/HXT/IO/GetHTTPLibCurl.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/XML/HXT/IO/GetHTTPLibCurl.hs
@@ -0,0 +1,239 @@
+-- ------------------------------------------------------------
+--
+-- GET for http access with curl
+--
+-- Version : $Id: GetHTTPCurl.hs,v 1.3 2005/04/14 12:52:52 hxml Exp $
+
+module Text.XML.HXT.IO.GetHTTPLibCurl
+    ( getCont
+    )
+
+where
+
+import Control.Arrow
+    ( first )
+import Control.Concurrent.MVar
+import Control.Monad
+    ( when )
+
+import Data.Char
+    ( isDigit
+    , toLower
+    )
+import Data.List
+    ( isPrefixOf
+    )
+
+import Network.Curl
+
+import System.IO
+import System.IO.Unsafe
+    ( unsafePerformIO
+    )
+
+import Text.ParserCombinators.Parsec
+    ( parse
+    )
+import Text.XML.HXT.DOM.XmlKeywords
+import Text.XML.HXT.DOM.XmlOptions
+    ( isTrueValue
+    )
+import Text.XML.HXT.Parser.ProtocolHandlerUtil
+    ( parseContentType
+    )
+import Text.XML.HXT.Version
+
+-- ------------------------------------------------------------
+--
+-- the global flag for initializing curl in the 1. call
+
+isInitCurl	:: MVar Bool
+isInitCurl	= unsafePerformIO $ newMVar False
+
+initCurl	:: IO ()
+initCurl
+    = do
+      i <- takeMVar isInitCurl
+      when (not i) ( do
+		     curl_global_init 3
+		     return ()
+		   )
+      putMVar isInitCurl True
+
+-- ------------------------------------------------------------
+--
+-- the http protocol handler implemented by calling libcurl
+-- (<http://curl.haxx.se/>)
+-- via the curl binding
+-- <http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl>
+-- This function tries to support mostly all curl options concerning HTTP requests.
+-- The naming convetion is as follows: A curl option must be prefixed by the string
+-- \"curl\" and then written exactly as described in the curl man page
+-- (<http://curl.haxx.se/docs/manpage.html>).
+-- Example:
+--
+-- > getCont [("curl--user-agent","My first HXT app"),("curl-e","http://the.referer.url/")] "http://..."
+--
+-- will set the user agent and the referer URL for this request.
+
+getCont		:: [(String, String)] -> String -> IO (Either String ([(String, String)], String))
+getCont options uri -- curlOptions uri proxy
+    = do
+      initCurl
+      resp <- curlGetResponse uri curlOptions
+      return $ evalResponse resp
+    where
+    curlOptions = concatMap (uncurry copt) options ++ defaultOptions
+    defaultOptions
+	= [ CurlFailOnError False
+	  , CurlHeader True
+	  , CurlNoProgress True
+	  , CurlFollowLocation True
+	  , CurlUserAgent ("hxt/" ++ hxt_version ++ " via libcurl")
+	  ]
+    evalResponse r
+	| rc /= CurlOK
+	    = Left ( "http error when requesting URI "
+		     ++ show uri
+		     ++ ": (curl return code=" ++ show rc ++ ") "
+		   )
+	| rs < 200 && rs >= 300
+	    = Left ( "http error when accessing URI "
+		     ++ show uri
+		     ++ ": "
+		     ++ show rsl
+		   )
+	| otherwise
+	    = Right ( contentT ++ headers, respBody r
+		    )
+	where
+	headers
+	    = map (\ (k, v) -> (httpPrefix ++ k, v)) rsh
+	      ++ statusLine (words rsl)
+
+	contentT
+	    = concat
+	      . map ( either (const []) id
+		      . parse parseContentType ""
+		    )
+	      . map snd
+	      . take 1
+              . filter ((== "content-type") . fst)
+              . map (first (map toLower))
+              $ rsh
+
+	statusLine (vers : code : msg)
+	    = [ (transferVersion, vers)
+	      , (transferMessage, unwords msg)
+	      , (transferStatus, code)
+	      ]
+        statusLine _
+	    = []
+
+	rc  = respCurlCode    r
+	rs  = respStatus      r
+	rsl = respStatusLine  r
+	rsh = respHeaders     r
+
+-- ------------------------------------------------------------
+
+copt	:: String -> String -> [CurlOption]
+copt k v
+    | "curl" `isPrefixOf` k
+	= opt2copt (drop 4 k) v
+
+    | k == a_proxy
+	= opt2copt k v
+
+    | k == a_options_curl
+	= curlOptionString v
+
+    | otherwise
+	= []
+
+opt2copt	:: String -> String -> [CurlOption]
+opt2copt k v
+    | k `elem` ["-A", "--user-agent"]	= [CurlUserAgent v]
+    | k `elem` ["-b", "--cookie"]	= [CurlCookie v]
+    | k == "--connect-timeout"
+      &&
+      isIntArg v			= [CurlConnectTimeout      $ read    v]
+    | k == "--crlf"			= [CurlCRLF                $ isTrue  v]
+    | k `elem` ["-d", "--data"]		= [CurlPostFields          $ lines   v]
+    | k `elem` ["-e", "--referer"]	= [CurlReferer                       v]
+    | k `elem` ["-H", "--header"]	= [CurlHttpHeaders         $ lines   v]
+    | k == "--ignore-content-length"	= [CurlIgnoreContentLength $ isTrue  v]
+    | k `elem` ["-I", "--head"]		= [CurlNoBody              $ isTrue  v]
+    | k `elem` ["-L", "--location"]	= [CurlFollowLocation      $ isTrue  v]
+    | k == "--max-filesize"
+      &&
+      isIntArg v			= [CurlMaxFileSizeLarge    $ read    v]
+    | k `elem` ["-m", "--max-time"]
+      &&
+      isIntArg v			= [CurlTimeoutMS           $ read    v]
+    | k `elem` ["-n", "--netrc"]	= [CurlNetrcFile                     v]
+    | k `elem` ["-R", "--remote-time"]  = [CurlFiletime            $ isTrue  v]
+    | k `elem` ["-u", "--user"]		= [CurlUserPwd                       v]
+    | k `elem` ["-U", "--proxy-user"]	= [CurlProxyUserPwd                  v]
+    | k `elem` ["-x", "--proxy"]        =  proxyOptions
+    | k `elem` ["-X", "--request"]      = [CurlCustomRequest                 v]
+    | k `elem` ["-y", "--speed-time"]
+      &&
+      isIntArg v                        = [CurlLowSpeedTime        $ read    v]
+    | k `elem` ["-Y", "--speed-limit"]
+      &&
+      isIntArg v			= [CurlLowSpeed            $ read    v]
+    | k `elem` ["-z", "--time-cond"]	=  ifModifiedOptions
+    | k == "--max-redirs"
+      &&
+      isIntArg v			= [CurlMaxRedirs           $ read    v]
+    | k `elem` ["-0", "--http1.0"]	= [CurlHttpVersion       HttpVersion10]
+    | otherwise				= []
+    where
+    ifModifiedOptions
+	| "-" `isPrefixOf` v
+	  &&
+	  isIntArg v'			= [CurlTimeCondition TimeCondIfUnmodSince
+					  ,CurlTimeValue           $ read   v'
+					  ]
+	| isIntArg v			= [CurlTimeCondition TimeCondIfModSince
+					  ,CurlTimeValue           $ read   v'
+					  ]
+	| otherwise			= []
+	where
+	v' = tail v
+
+    proxyOptions
+	= [ CurlProxyPort pport
+	  , CurlProxy     phost
+	  ]
+	where
+	pport
+	    | isIntArg ppp	= read v
+	    | otherwise		= 1080
+	(phost, pp) 		= span (/=':') v
+	ppp      		= drop 1 pp
+
+
+
+isTrue		:: String -> Bool
+isTrue s  	= null s || isTrueValue s
+
+isIntArg	:: String -> Bool
+isIntArg s 	= not (null s) && all isDigit s
+
+curlOptionString	:: String -> [CurlOption]
+curlOptionString
+    = concatMap (uncurry copt) . opts . words
+    where
+    opts l
+	| null l			= []
+	| not ("-" `isPrefixOf` k)	= opts l1		-- k not an option: ignore
+	| null l1			= opts (k:"":l1)	-- last option
+	| "-" `isPrefixOf` v		= (k, "") : opts (v:l)	-- k option without arg
+	| otherwise			= (k, v) : opts l2	-- k with value
+	where
+	(k:l1) = l
+	(v:l2) = l1
+
+-- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/IO/GetHTTPNative.hs b/src/Text/XML/HXT/IO/GetHTTPNative.hs
deleted file mode 100644
--- a/src/Text/XML/HXT/IO/GetHTTPNative.hs
+++ /dev/null
@@ -1,151 +0,0 @@
--- ------------------------------------------------------------
---
--- GET for native http access
---
--- Version : $Id: GetHTTPNative.hs,v 1.2 2005/04/14 12:52:52 hxml Exp $
-
-module Text.XML.HXT.IO.GetHTTPNative
-    ( module Text.XML.HXT.IO.GetHTTPNative
-    )
-
-where
-
-import Text.XML.HXT.DOM.XmlKeywords
-import Text.XML.HXT.DOM.Util			( stringTrim )
-import Text.XML.HXT.Parser.ProtocolHandlerUtil	( parseContentType )
-
-import Text.ParserCombinators.Parsec		( parse )
-
-import Data.Maybe	( fromJust
-			)
-import System.IO	( hPutStrLn
-			, stderr
-			)
-import System.IO.Error	( ioeGetErrorString
-			, try
-			)
-import Network.Browser	( Proxy(..)
-			, browse
-			, defaultGETRequest
-			, request
-			, setOutHandler
-			, setErrHandler
-			, setProxy
-			)
-import Network.HTTP	( Header(..)
-			, HeaderName(..)
-			, Response(..)
-			, httpVersion
-			)
-import Network.Socket	( withSocketsDo
-			)
-import Network.URI	( URI
-			, parseURIReference
-			)
-
--- ------------------------------------------------------------
---
--- the native http protocol handler
-
--- ------------------------------------------------------------
---
--- the http protocol handler, haskell implementation
-
-getCont		:: String -> String -> IO (Either String ([(String, String)], String))
-getCont uri proxy
-    = do
-      res <- try (getHttp False uri1 proxy)
-      either processError processResponse res
-    where
-    uri1 = fromJust (parseURIReference uri)
-
-    processError e
-	= return $ Left ( "http error when requesting URI "
-			  ++ show uri
-			  ++ ": "
-			  ++ ioeGetErrorString e
-			  ++ " (perhaps server does not understand HTTP/1.1) "
-			)
-
-    processResponse response
-	| st >= 200 && st < 300
-	    = return $ Right (al, cs)
-
-	| otherwise
-	    = return $ Left ( "http error when accessing URI "
-			      ++ show uri
-			      ++ ": "
-			      ++ show st
-			      ++ " "
-			      ++ rspReason response
-			    )
-	where
-	al = convertResponseHeaders response
-	cs = rspBody response
-	st = convertResponseStatus (rspCode response)
-
-    getHttp		:: Bool -> URI -> String -> IO Response
-    getHttp trc' uri' proxy'
-	= withSocketsDo $
-	  browse ( do
-		   setOutHandler (trcFct)
-		   setErrHandler (trcFct)
-
-		   setProxy' proxy'
-		   (_ruri, rsp) <- request rq
-		   return rsp
-		 )
-	where
-	trcFct s
-	    | trc'
-		= hPutStrLn stderr ("-- (5) http: " ++ s)
-	    | otherwise
-		= return ()
-
-	rq = defaultGETRequest uri'
-	
-	setProxy' ""	= return ()
-	setProxy' p	= setProxy (Proxy p Nothing)
-
-    convertResponseStatus	:: (Int, Int, Int) -> Int
-    convertResponseStatus (a, b, c)
-	= 100 * a + 10 * b + c
-
-    convertResponseHeaders	:: Response -> [(String, String)]
-    convertResponseHeaders r'
-	= cvResponseCode (rspCode r')
-	  ++
-	  cvResponseReason (rspReason r')
-          ++
-	  cvResponseHeaders (rspHeaders r')
-	where
-	cvResponseCode	:: (Int, Int, Int) -> [(String, String)]
-	cvResponseCode st'
-	    = [ (transferStatus,	show (convertResponseStatus st'))
-	      , (transferVersion,	httpVersion)
-	      ]
-
-	cvResponseReason	:: String -> [(String, String)]
-	cvResponseReason r''
-	    = [ (transferMessage, (stringTrim r'')) ]
-
-	cvResponseHeaders	:: [Header] -> [(String, String)]
-	cvResponseHeaders
-	    = concatMap cvResponseHeader
-
-	cvResponseHeader	:: Header -> [(String, String)]
-	cvResponseHeader (Header name value)
-	    | name == HdrContentType
-		= ( case (parse parseContentType (show HdrContentType) value) of
-		    Right res -> res
-		    Left  _   -> []
-		  )
-                  ++
-		  addHttpAttr
-	    | otherwise
-		= addHttpAttr
-	    where
-	    addHttpAttr = [ (httpPrefix ++ (show name), value) ]
-
-
--- ------------------------------------------------------------
diff --git a/src/Text/XML/HXT/Parser/TagSoup.hs b/src/Text/XML/HXT/Parser/TagSoup.hs
--- a/src/Text/XML/HXT/Parser/TagSoup.hs
+++ b/src/Text/XML/HXT/Parser/TagSoup.hs
@@ -23,10 +23,11 @@
 
 -- ------------------------------------------------------------
 
--- The table contains the id map. All element and attribute names are stored
--- the first time they are ecountered, and later always this name is used,
--- not a string built by the parser.
+import           Data.Char (toLower)
+import           Data.Maybe
+import qualified Data.Map as M
 
+
 import Text.HTML.TagSoup
 import Text.HTML.TagSoup.Entity
     ( lookupNumericEntity
@@ -77,12 +78,12 @@
     , mkAttr
     )
 
-import Data.Maybe
-
-import qualified Data.Map as M
-
 -- ---------------------------------------- 
 
+-- The name table contains the id map. All element and attribute names are stored
+-- the first time they are ecountered, and later always this name is used,
+-- not a string built by the parser.
+
 type Tags	= [Tag]
 
 type NameTable	= M.Map QName QName
@@ -292,6 +293,24 @@
 	| otherwise = xhtmlEntities -- xmlEntities (TODO: xhtml is xml and html)
 
 -- ----------------------------------------
+
+-- |
+-- Turns all element and attribute names to lower case
+-- even !DOCTYPE stuff. But this is discarded when parsing the tagsoup
+
+lowerCaseNames :: [Tag] -> [Tag]
+lowerCaseNames
+    = map f
+    where
+    f (TagOpen name attrs)
+        = TagOpen (nameToLower name) (map attrToLower attrs)
+    f (TagClose name)
+	= TagClose (nameToLower name)
+    f a = a
+    nameToLower          = map toLower
+    attrToLower (an, av) = (nameToLower an, av)
+
+-- ----------------------------------------
 -- the main parser
 
 parseHtmlTagSoup	:: Bool -> Bool -> Bool -> Bool -> Bool -> String -> String -> XmlTrees
@@ -299,7 +318,7 @@
     = ( docRootElem
 	. runParser (buildCont initContext)
 	. ( if asHtml
-	    then canonicalizeTags
+	    then lowerCaseNames
 	    else id
 	  )
 	. parseTagsOptions (parseOptions { optTagWarning   = withWarnings
diff --git a/src/Text/XML/HXT/ProtocolHandler/Makefile b/src/Text/XML/HXT/ProtocolHandler/Makefile
deleted file mode 100644
--- a/src/Text/XML/HXT/ProtocolHandler/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id: Makefile,v 1.1 2004/09/02 19:12:02 hxml Exp $
-#
-# Makefile to configure the http handlers to be used
-#
-# default is: http access may be done via a native http module
-# or via an external program curl called via pipes
-# the access can be controlled at runtime by option --withCurl
-#
-# variants:
-#
-# 1. ONLY_NATIVE_HTTP: does not need the code for calling external programs via pipes
-# activate this variant by running "make only_native_http" in this dir before compilation
-#
-# 2. ONLY_CURL_HTTP: does not need the code for a socked connection and other stuff used by http modules
-# activate this variant by running "make only_curl_http" in this dir before compilation
-#
-# 3. NO_HTTP: does not need any code for http, only local file access is supported
-# activate this variant by running "make no_http" in this dir before compilation
-#
-# reset to default (both variants compiled in and selected by runtime options) by
-# running "make default_http"
-
-source	= ProtocolHandler.hs
-tmp	= ProtocolHandler.tmp
-target	= ../Parser/ProtocolHandler.hs
-
-all		:
-		@echo "make a target out of \"only_native_http only_curl_http no_http default_http\""
-
-only_native_http	:
-		ghc -E -cpp -DONLY_NATIVE_HTTP=1 -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)
-
-only_curl_http	:
-		ghc -E -cpp -DONLY_CURL_HTTP=1   -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)
-
-no_http	:
-		ghc -E -cpp -DNO_HTTP=1          -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)
-
-default_http	:
-		ghc -E -cpp                      -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)
-
-clean		:
-		rm -f $(tmp)
-
-.PHONY		: all only_native_http only_curl_http no_http default_http clean
diff --git a/src/Text/XML/HXT/ProtocolHandler/ProtocolHandler.hs b/src/Text/XML/HXT/ProtocolHandler/ProtocolHandler.hs
deleted file mode 100644
--- a/src/Text/XML/HXT/ProtocolHandler/ProtocolHandler.hs
+++ /dev/null
@@ -1,115 +0,0 @@
--- ------------------------------------------------------------
---
--- protocol handler functions
--- configuration file
--- real handler is generated with cpp
---
--- Version : $Id: ProtocolHandler.hs,v 1.2 2006/03/03 10:06:24 hxml Exp $
-
-module Text.XML.HXT.Parser.ProtocolHandler
-    ( getProtocolHandler
-    )
-
-where
-
-import Text.XML.HXT.DOM.XmlState
-
--- ------------------------------------------------------------
---
--- file io and network
-
-import Data.Maybe
-    ( fromMaybe
-    )
-
-import Network.URI
-    ( URI
-    , uriScheme
-    )
-
-import Text.XML.HXT.Parser.ProtocolHandlerFile
-    ( getFileContents
-    )
-
-#ifdef ONLY_NATIVE_HTTP
-
-import Text.XML.HXT.Parser.ProtocolHandlerHttpNative
-    ( getHttpContentsWithHttp
-    )
-
-#else
-#ifdef ONLY_CURL_HTTP
-
-import Text.XML.HXT.Parser.ProtocolHandlerHttpCurl
-    ( getHttpContentsWithCurl
-    )
-
-#else
-#ifdef NO_HTTP
-#else
-
-import Text.XML.HXT.Parser.ProtocolHandlerHttpNativeOrCurl
-    ( getHttpContentsNativeOrWithCurl
-    )
-
-#endif
-#endif
-#endif
-
--- ------------------------------------------------------------
---
-
-getProtocolHandler	:: String -> (URI -> XmlStateFilter a)
-getProtocolHandler proto
-    = fromMaybe getUnsupported handler
-      where
-      handler  = lookup proto protocolHandler
-
---
--- the fall back protocol handler
-
-getUnsupported	:: URI -> XmlStateFilter a
-getUnsupported uri
-    = addFatal ( "unsupported protocol "
-		 ++ show (uriScheme uri)
-		 ++ " in URI: "
-		 ++ show uri
-	       )
-
--- ------------------------------------------------------------
---
--- the table of potocol handlers
--- looked up in getProtocolHandler
-
-protocolHandler	:: [(String, URI -> XmlStateFilter a)]
-protocolHandler
-    = [ ("file", getFileContents)
-      , ("http",
-
-#ifdef ONLY_NATIVE_HTTP
-
-	 getHttpContentsWithHttp
-
-#else
-#ifdef ONLY_CURL_HTTP
-
-	 getHttpContentsWithCurl
-
-#else
-#ifdef NO_HTTP
-
-         getUnsupported
-
-#else
-
-	 getHttpContentsNativeOrWithCurl
-
-#endif
-#endif
-#endif
-	)
-      ]
-
--- ------------------------------------------------------------
-
-
diff --git a/src/Text/XML/HXT/Version.hs b/src/Text/XML/HXT/Version.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/XML/HXT/Version.hs
@@ -0,0 +1,4 @@
+module Text.XML.HXT.Version
+where
+hxt_version :: String
+hxt_version = "8.1.0"
diff --git a/src/hxt-package.hs b/src/hxt-package.hs
--- a/src/hxt-package.hs
+++ b/src/hxt-package.hs
@@ -59,7 +59,7 @@
       , "import-dirs: " ++ dir ++ "/imports"
       , "library-dirs: " ++ dir
       , "hs-libraries: HShxt"
-      , "depends: base, haskell98, parsec, HTTP, HUnit, network, containers, directory, process, tagsoup-0.6"
+      , "depends: base, haskell98, parsec, HUnit, network, containers, directory, tagsoup-0.6, curl"
       ]
 
 part4b :: [String]
@@ -68,9 +68,9 @@
       , " ghc-options: -Wall"
       , " extensions: MultiParamTypeClasses DeriveDataTypeable FunctionalDependencies FlexibleInstances"
       , ""
-      , " build-depends: base, haskell98 >= 1, parsec >= 2.1 && < 3, HTTP >= 3001.0.4, HUnit >= 1.2, network >= 2.1, tagsoup >= 0.6"
+      , " build-depends: base, haskell98 >= 1, parsec >= 2.1 && < 3, HUnit >= 1.2, network >= 2.1, tagsoup >= 0.6, curl >= 1.3"
       , " if flag(splitBase)"
-      , "   build-depends: base >= 3, containers >= 0.1, directory >= 1, process >= 1"
+      , "   build-depends: base >= 3, containers >= 0.1, directory >= 1, filepath >= 1"
       , " else"
       , "   build-depends: base < 3"
       ]
