packages feed

HaXml 1.13.3 → 1.19

raw patch · 243 files changed

+50669/−47909 lines, 243 filesdep +polyparsedep −containersdep −prettydep ~basedep ~haskell98new-component:exe:CanonicaliseLazynew-component:exe:XtractLazy

Dependencies added: polyparse

Dependencies removed: containers, pretty

Dependency ranges changed: base, haskell98

Files

Build.bat view
@@ -1,32 +1,36 @@ REM -- Build HaXml package using GHC
 REM
-REM    Usage:
+REM    Usage: (case-sensitive)
 REM      Build         compile and install the HaXml library GHC package
 REM      Build Remove  remove the HaXml GHC library package
 REM      Build Tools   compile the tools shipped with HaXml
 
-rem -- Change the following to suit the local system environment --
+rem -- Change the following variables (upto and including SRC)
+rem -- to suit the local system environment --
 
+rem    GHC version
+set GHCVER=6.4.2
+
 rem    GHC installation directory:
-set GHCDIR=C:\DEV\ghc\ghc-6.4
+set GHCDIR=C:\DEV\ghc\ghc-%GHCVER%
 
 rem    Programs needed to build HaXml:
 rem
 rem    NOTE: install MinGW linked from <http://www.mingw.org/>
 rem    for a copy of 'ar.exe'
 rem
-set GHC=C:\DEV\ghc\ghc-6.4\bin\ghc.exe
-set GHCPKG=C:\DEV\ghc\ghc-6.4\bin\ghc-pkg.exe
+set GHC=C:\DEV\ghc\ghc-%GHCVER%\bin\ghc.exe
+set GHCPKG=C:\DEV\ghc\ghc-%GHCVER%\bin\ghc-pkg.exe
 set AR=C:\DEV\MinGW\bin\ar.exe
-set LD=C:\DEV\ghc\ghc-6.4\gcc-lib\ld.exe
+set LD=C:\DEV\ghc\ghc-%GHCVER%\gcc-lib\ld.exe
 
 rem    Source directory for HaXml:
-set SRC=C:\DEV\Haskell\lib\HaXml-1.13.3\src
+set SRC=C:\DEV\Haskell\lib\HaXml-1.19\src
 
 rem    Two very long lines (500-600 chars) follow here.  
 rem    They should not need changing.
-set SRCS=Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Lex.hs  Text/XML/HaXml/Parse.hs Text/XML/HaXml/Pretty.hs Text/XML/HaXml/Types.hs Text/XML/HaXml/Validate.hs Text/XML/HaXml/Wrappers.hs Text/XML/HaXml/OneOfN.hs Text/XML/HaXml/Xml2Haskell.hs Text/XML/HaXml/Haskell2Xml.hs Text/XML/HaXml/Verbatim.hs Text/XML/HaXml/Escape.hs Text/XML/HaXml/Html/Generate.hs Text/XML/HaXml/Html/Parse.hs Text/XML/HaXml/Html/Pretty.hs Text/XML/HaXml/Xtract/Combinators.hs Text/XML/HaXml/Xtract/Lex.hs Text/XML/HaXml/Xtract/Parse.hs Text/ParserCombinators/HuttonMeijerWallace.hs
-set OBJS=Text/XML/HaXml.o Text/XML/HaXml/Combinators.o Text/XML/HaXml/Lex.o  Text/XML/HaXml/Parse.o Text/XML/HaXml/Pretty.o Text/XML/HaXml/Types.o Text/XML/HaXml/Validate.o Text/XML/HaXml/Wrappers.o Text/XML/HaXml/OneOfN.o Text/XML/HaXml/Xml2Haskell.o Text/XML/HaXml/Haskell2Xml.o Text/XML/HaXml/Verbatim.o Text/XML/HaXml/Escape.o Text/XML/HaXml/Html/Generate.o Text/XML/HaXml/Html/Parse.o Text/XML/HaXml/Html/Pretty.o Text/XML/HaXml/Xtract/Combinators.o Text/XML/HaXml/Xtract/Lex.o Text/XML/HaXml/Xtract/Parse.o Text/ParserCombinators/HuttonMeijerWallace.o
+set SRCS=Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Posn.hs Text/XML/HaXml/Lex.hs  Text/XML/HaXml/Parse.hs Text/XML/HaXml/Pretty.hs Text/XML/HaXml/Types.hs Text/XML/HaXml/Validate.hs Text/XML/HaXml/Wrappers.hs Text/XML/HaXml/OneOfN.hs Text/XML/HaXml/XmlContent.hs Text/XML/HaXml/TypeMapping.hs Text/XML/HaXml/Verbatim.hs Text/XML/HaXml/Escape.hs Text/XML/HaXml/SAX.hs Text/XML/HaXml/Html/Generate.hs Text/XML/HaXml/Html/Parse.hs Text/XML/HaXml/Html/Pretty.hs Text/XML/HaXml/Xtract/Combinators.hs Text/XML/HaXml/Xtract/Lex.hs Text/XML/HaXml/Xtract/Parse.hs Text/ParserCombinators/Poly.hs Text/ParserCombinators/PolyState.hs Text/ParserCombinators/TextParser.hs Text/ParserCombinators/PolyLazy.hs Text/ParserCombinators/PolyStateLazy.hs Text/XML/HaXml/ParseLazy.hs Text/XML/HaXml/Html/ParseLazy.hs
+set OBJS=Text/XML/HaXml.o Text/XML/HaXml/Combinators.o Text/XML/HaXml/Posn.o Text/XML/HaXml/Lex.o  Text/XML/HaXml/Parse.o Text/XML/HaXml/Pretty.o Text/XML/HaXml/Types.o Text/XML/HaXml/Validate.o Text/XML/HaXml/Wrappers.o Text/XML/HaXml/OneOfN.o Text/XML/HaXml/XmlContent.o Text/XML/HaXml/TypeMapping.o Text/XML/HaXml/Verbatim.o Text/XML/HaXml/Escape.o Text/XML/HaXml/SAX.o Text/XML/HaXml/Html/Generate.o Text/XML/HaXml/Html/Parse.o Text/XML/HaXml/Html/Pretty.o Text/XML/HaXml/Xtract/Combinators.o Text/XML/HaXml/Xtract/Lex.o Text/XML/HaXml/Xtract/Parse.o Text/ParserCombinators/Poly.o Text/ParserCombinators/PolyState.o Text/ParserCombinators/TextParser.o Text/ParserCombinators/PolyLazy.o Text/ParserCombinators/PolyStateLazy.o Text/XML/HaXml/ParseLazy.o Text/XML/HaXml/Html/ParseLazy.o
 
 
 rem -- Get on with the real work --
@@ -35,7 +39,7 @@ if "%1"=="Tools" goto Tools
 
 rem -- Compile sources and create library archive
-COPY HaXml.cabal %SRC%\pkg.conf
+if "%GHCVER%"=="6.4" COPY HaXml.cabal %SRC%\pkg.conf
 cd %SRC%
 %GHC% --make -cpp -i. -package-name HaXml %SRCS%
 %AR% r libHSHaXml.a %OBJS%
@@ -54,11 +58,12 @@ XCOPY /S /F *.hi %GHCDIR%\imports
 
 rem -- Finally, register the package with GHC
-ECHO import-dirs:   %GHCDIR%\imports >>pkg.conf
-ECHO library-dirs:  %GHCDIR% >>pkg.conf
-ECHO depends:       base, haskell98 >>pkg.conf
-ECHO hs-libraries:  HSHaXml >>pkg.conf
-%GHCPKG% register pkg.conf
+if "%GHCVER%"=="6.2.2" %GHCPKG% --add-package -i pkg.conf
+if "%GHCVER%"=="6.4.2"   ECHO import-dirs:   %GHCDIR%\imports >>pkg.conf
+if "%GHCVER%"=="6.4.2"   ECHO library-dirs:  %GHCDIR% >>pkg.conf
+if "%GHCVER%"=="6.4.2"   ECHO depends:       base, haskell98, polyparse >>pkg.conf
+if "%GHCVER%"=="6.4.2"   ECHO hs-libraries:  HSHaXml >>pkg.conf
+if "%GHCVER%"=="6.4.2"   %GHCPKG% register pkg.conf
 
 goto Exit
 
@@ -73,7 +78,7 @@ rem -- Build tools that come with HaXml --
 :Tools
 cd %SRC%\tools
-for %%F in (Canonicalise  DtdToHaskell  MkOneOf  Validate  Xtract) DO %GHC% --make -cpp -i.. %%F -o %%F.exe
+for %%F in (Canonicalise  DtdToHaskell  MkOneOf  Validate  Xtract  CanonicaliseLazy  XtractLazy) DO %GHC% --make -cpp -i.. %%F -o %%F.exe
 cd ..
 
 goto Exit
@@ -1,12 +1,10 @@ The HaXml library and tools were written by and are copyright to-    (c) copyright 1998-2005    Malcolm Wallace and Colin Runciman+    (c) copyright 1998-2006    Malcolm Wallace and Colin Runciman  The library incorporates the module Text.ParserCombinators.HuttonMeijerWallace     (c) copyright 1996         Graham Hutton and Erik Meijer with modifications     (c) copyright 1998-2000    Malcolm Wallace-and may also use or incorporate the module Text.PrettyPrint.HughesPJ-    (c) copyright 1996-1997    John Hughes and Simon Peyton Jones  The HaXml library is licensed under the terms of the GNU Lesser General Public Licence (LGPL), which can be found in the file called@@ -16,9 +14,10 @@ As a relaxation of clause 6 of the LGPL, the copyright holders of this library give permission to use, copy, link, modify, and distribute, binary-only object-code versions of an executable linked with the-Library, without requiring the supply of any mechanism to modify or-replace the Library and relink (clauses 6a, 6b, 6c, 6d, 6e), provided-that all the other terms of clause 6 are complied with.+original unmodified Library, without requiring the supply of any+mechanism to modify or replace the Library and relink (clauses 6a,+6b, 6c, 6d, 6e), provided that all the other terms of clause 6 are+complied with. ----  The HaXml tools Xtract, Validate, DtdToHaskell, and MkOneOf, are
HaXml.cabal view
@@ -1,40 +1,48 @@ name:		HaXml-version:	1.13.3+version:	1.19+ghc-options:	-DVERSION="1.19"+cc-options:	-DVERSION="1.19"+nhc98-options:	-K10M license:	LGPL license-file:	COPYRIGHT author:		Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk> homepage:	http://www.cs.york.ac.uk/fp/HaXml/-category:	Text+category:	Text, XML synopsis:	Utilities for manipulating XML documents description: 	Haskell utilities for parsing, filtering, transforming and 	generating XML documents. exposed-modules:-	Text.ParserCombinators.HuttonMeijerWallace, 	Text.XML.HaXml,+	Text.XML.HaXml.ByteStringPP, 	Text.XML.HaXml.Combinators, 	Text.XML.HaXml.DtdToHaskell.Convert, 	Text.XML.HaXml.DtdToHaskell.Instance, 	Text.XML.HaXml.DtdToHaskell.TypeDef, 	Text.XML.HaXml.Escape,-	Text.XML.HaXml.Haskell2Xml, 	Text.XML.HaXml.Html.Generate, 	Text.XML.HaXml.Html.Parse,+	Text.XML.HaXml.Html.ParseLazy, 	Text.XML.HaXml.Html.Pretty, 	Text.XML.HaXml.Lex, 	Text.XML.HaXml.OneOfN, 	Text.XML.HaXml.Parse,+	Text.XML.HaXml.ParseLazy,+	Text.XML.HaXml.Posn, 	Text.XML.HaXml.Pretty,+	Text.XML.HaXml.SAX,+	Text.XML.HaXml.ShowXmlLazy, 	Text.XML.HaXml.Types,+	Text.XML.HaXml.TypeMapping, 	Text.XML.HaXml.Validate, 	Text.XML.HaXml.Verbatim, 	Text.XML.HaXml.Wrappers,-	Text.XML.HaXml.Xml2Haskell,+	Text.XML.HaXml.XmlContent, 	Text.XML.HaXml.Xtract.Combinators, 	Text.XML.HaXml.Xtract.Lex, 	Text.XML.HaXml.Xtract.Parse hs-source-dir:	src-build-depends:	base, haskell98, pretty, containers+build-depends:	base, haskell98, polyparse >= 1.1 extensions:	CPP  Executable: Canonicalise@@ -43,11 +51,23 @@ Hs-Source-Dirs: src/tools, src Main-Is: Canonicalise.hs +Executable: CanonicaliseLazy+GHC-Options: -Wall -O2+Extensions:  CPP+Hs-Source-Dirs: src/tools, src+Main-Is: CanonicaliseLazy.hs+ Executable: Xtract GHC-Options: -Wall -O2 Extensions:  CPP Hs-Source-Dirs: src/tools, src Main-Is: Xtract.hs++Executable: XtractLazy+GHC-Options: -Wall -O2+Extensions:  CPP+Hs-Source-Dirs: src/tools, src+Main-Is: XtractLazy.hs  Executable: Validate GHC-Options: -Wall -O2
Makefile view
@@ -1,26 +1,39 @@ SOFTWARE = HaXml-VERSION  = 1.13.3+VERSION  = 1.19 +#CPP      = cpp -traditional+CPP     = cpphs --text --noline	# useful e.g. on MacOS X++DIRS = Text Text/XML Text/XML/HaXml Text/XML/HaXml/Html \+	Text/XML/HaXml/Xtract Text/XML/HaXml/DtdToHaskell+ SRCS = \ 	src/Text/XML/HaXml.hs src/Text/XML/HaXml/Combinators.hs \-	src/Text/XML/HaXml/Lex.hs \+	src/Text/XML/HaXml/Posn.hs src/Text/XML/HaXml/Lex.hs \ 	src/Text/XML/HaXml/Parse.hs src/Text/XML/HaXml/Pretty.hs \ 	src/Text/XML/HaXml/Types.hs src/Text/XML/HaXml/Validate.hs \-	src/Text/XML/HaXml/Wrappers.hs src/Text/XML/HaXml/OneOfN.hs \+	src/Text/XML/HaXml/Wrappers.hs \ 	src/Text/XML/HaXml/Verbatim.hs src/Text/XML/HaXml/Escape.hs \-	src/Text/XML/HaXml/Xml2Haskell.hs src/Text/XML/HaXml/Haskell2Xml.hs \+	src/Text/XML/HaXml/OneOfN.hs \+	src/Text/XML/HaXml/ParseLazy.hs \+	src/Text/XML/HaXml/ByteStringPP.hs \+	src/Text/XML/HaXml/TypeMapping.hs src/Text/XML/HaXml/XmlContent.hs \+	src/Text/XML/HaXml/SAX.hs \+	src/Text/XML/HaXml/ShowXmlLazy.hs \ 	src/Text/XML/HaXml/Html/Generate.hs src/Text/XML/HaXml/Html/Parse.hs \ 	src/Text/XML/HaXml/Html/Pretty.hs \+	src/Text/XML/HaXml/Html/ParseLazy.hs \ 	src/Text/XML/HaXml/Xtract/Combinators.hs \ 	src/Text/XML/HaXml/Xtract/Lex.hs \ 	src/Text/XML/HaXml/Xtract/Parse.hs \ 	src/Text/XML/HaXml/DtdToHaskell/TypeDef.hs \ 	src/Text/XML/HaXml/DtdToHaskell/Convert.hs \ 	src/Text/XML/HaXml/DtdToHaskell/Instance.hs \-	src/Text/ParserCombinators/HuttonMeijerWallace.hs+ TOOLSRCS = \ 	src/tools/DtdToHaskell.hs src/tools/Xtract.hs src/tools/Validate.hs \-	src/tools/Canonicalise.hs src/tools/MkOneOf.hs+	src/tools/Canonicalise.hs src/tools/MkOneOf.hs \+	src/tools/CanonicaliseLazy.hs src/tools/XtractLazy.hs \  AUX =	configure Makefile src/Makefile src/pkg.conf docs/* examples/* \ 	README LICENCE* COPYRIGHT script/echo.c rpm.spec Build.bat \@@ -67,13 +80,19 @@ 	cd obj/nhc98; $(MAKE) HC=nhc98 install-filesonly-nhc98 install-filesonly-hugs: install-hugs haddock:-	#do cpp -P -traditional -D__NHC__ $$file >$$file.uncpp;+	mkdir -p docs/HaXml+	for dir in $(DIRS); \+		do mkdir -p docs/HaXml/src/$$dir; \+		done 	for file in $(SRCS); \-		do cpphs --noline -D__NHC__ $$file >$$file.uncpp; \+		do $(CPP) -D__NHC__ $$file >$$file.uncpp; \+		   HsColour -anchor -html $$file >docs/HaXml/`dirname $$file`/`basename $$file .hs`.html; \ 		done-	-mkdir docs/HaXml-	haddock -h -t HaXml -o docs/HaXml $(patsubst %, %.uncpp, $(SRCS))-	rm $(patsubst %, %.uncpp, $(SRCS))+	haddock --html --title=HaXml --odir=docs/HaXml --package=HaXml \+		--source-module="src/%{MODULE/.//}.html" \+		--source-entity="src/%{MODULE/.//}.html#%{NAME}" \+		$(patsubst %, %.uncpp, $(SRCS))+	rm -f $(patsubst %, %.uncpp, $(SRCS))  # packaging a distribution @@ -81,10 +100,6 @@ 	rm -f $(SOFTWARE)-$(VERSION).tar $(SOFTWARE)-$(VERSION).tar.gz 	mkdir $(SOFTWARE)-$(VERSION) 	tar cf - $(ALLFILES) | ( cd $(SOFTWARE)-$(VERSION); tar xf - )-	-rm -rf $(SOFTWARE)-$(VERSION)/docs/CVS-	-rm -rf $(SOFTWARE)-$(VERSION)/examples/CVS-	-rm -rf $(SOFTWARE)-$(VERSION)/examples/SMIL/CVS-	-rm -rf $(SOFTWARE)-$(VERSION)/examples/OpenOffice.org/CVS 	tar cf $(SOFTWARE)-$(VERSION).tar $(SOFTWARE)-$(VERSION) 	rm -rf $(SOFTWARE)-$(VERSION) 	gzip $(SOFTWARE)-$(VERSION).tar@@ -93,18 +108,15 @@ 	rm -f $(SOFTWARE)-$(VERSION).zip 	mkdir $(SOFTWARE)-$(VERSION) 	tar cf - $(ALLFILES) | ( cd $(SOFTWARE)-$(VERSION); tar xf - )-	-rm -rf $(SOFTWARE)-$(VERSION)/docs/CVS-	-rm -rf $(SOFTWARE)-$(VERSION)/examples/CVS-	-rm -rf $(SOFTWARE)-$(VERSION)/examples/SMIL/CVS-	-rm -rf $(SOFTWARE)-$(VERSION)/examples/OpenOffice.org/CVS 	zip -r $(SOFTWARE)-$(VERSION).zip $(SOFTWARE)-$(VERSION) 	rm -rf $(SOFTWARE)-$(VERSION)   # clear up rubbish clean:-	-rm -r obj/ghc obj/nhc98 obj/hugs-	-cd examples;    rm -f *.hi *.o+	rm -rf obj/ghc obj/nhc98 obj/hugs+	cd examples;    rm -f *.hi *.o realclean: clean-	-rm -f DtdToHaskell Xtract Validate Canonicalise MkOneOf+	rm -f DtdToHaskell Xtract Validate Canonicalise MkOneOf+	rm -f XtractLazy CanonicaliseLazy 
README view
@@ -2,27 +2,26 @@         --------------------------------------------  Installation instructions:+We currently support nhc98, ghc, and Hugs.  The automatic configuration+detects which compilers/interpreters you have, and prepares a build+tree for each.  Installation requires write-permission on the system+directories of the compiler/interpreter - the libraries and interfaces+can then be used as "-package HaXml" (for ghc/nhc98 - no extra options+required for Hugs).  The standalone tools are installed to a directory of+your choice. -For newer versions of ghc, use the standard Cabal mechanism:+For newer compilers, use Cabal to build and install:      runhaskell Setup.hs configure     runhaskell Setup.hs build     runhaskell Setup.hs install -For older ghc, and current nhc98 and Hugs, use the following older build-system.+For older compilers, use the traditional sequence:      ./configure     make     make install -The automatic configuration detects which compilers/interpreters you-have, and prepares a build tree for each.  Installation requires-write-permission on the system directories of the compiler/interpreter --the libraries and interfaces can then be used as "-package HaXml" (for-ghc/nhc98 - no extra options required for Hugs).  The standalone tools-are installed to a directory of your choice.- Options to configure are:     --buildwith=...  e.g. ghc-6.2,        to build for a specific compiler     --prefix=...     e.g. /usr/local/bin, installation location for HaXml tools@@ -47,16 +46,19 @@ 			(The main APIs are as follows:) 	Types.hs	Defines a (generic) representation for any XML document. 	Parse.hs	Parses an XML document into the generic representation.+	ParseLazy.hs	A more space-efficient parser. 	Pretty.hs	Pretty-prints an XML document. 	Validate.hs	Validates an XML document against a DTD. 	Combinators.hs	Provides the combinators described in the ICFP'99 paper 			together with some other useful functions.+	SAX.hs		A simple SAX-like stream-event-parser. 	Wrappers.hs	Simple top-level wrappers for processing a single 			document using the combinators.-	Haskell2Xml.hs	A replacement class for Show/Read, to dump Haskell-			values as XML documents.  Use in conjunction with DrIFT.-	Xml2Haskell.hs	A support class for XML DTDs which have been translated-			to Haskell types by tools/DtdToHaskell.+	XmlContent.hs	A replacement class for Show/Read, to translate Haskell+			values to/from XML documents.  Can be derived by DrIFT+			and/or DtdToHaskell.+	TypeMapping.hs	Defines an explicit representation for Haskell types,+			allowing generation of a DTD from a Haskell value. 	OneOfN.hs	Some support types (OneOf2 - OneOf20) for code 			generated by tools/DtdToHaskell. @@ -90,7 +92,7 @@ 			to an XML DTD, and a pretty printer for them. 	Convert.hs	Convert the standard DTD representation to the 			Haskell-like TypeDef representation.-	Instance.hs	Generate appropriate Xml2Haskell class instances for+	Instance.hs	Generate appropriate XmlContent class instances for 			the TypeDefs.  ----
configure view
@@ -2,7 +2,7 @@ #       configure -- prepare to compile/install the HaXml package #       author:   Malcolm.Wallace@cs.york.ac.uk, August 2002 -VERSION="1.13.2"+VERSION="1.18"  if [ -f obj/prefix ] then INSTALLDIR=`cat obj/prefix`@@ -51,7 +51,7 @@     --prefix=*)     INSTALLDIR=`echo "$1" | cut -c10-` ;;     --help|-h)   echo "`basename $0` options:     [default in brackets]"-  echo "  --buildwith=(ghc|hugs|nhc98)  Build HaXml for the given compiler [detected]"+  echo "  --buildwith=(ghc|hugs|nhc98) Build HaXml for the given compiler [detected]"   echo "  --buildopts=flags    Give extra flags needed by your build compiler [none]"   echo "  --prefix=bindir      Installed executables go in bindir [/usr/local/bin]"             exit 0 ;;@@ -100,8 +100,8 @@ if [ "$GHCKNOWN" = "" ] then echo "(not found)" else echo "found ${GHCVERSION}"-     if [ "$GHCNUM" -lt "502" ]-     then  echo "    Warning: HaXml needs ghc-5.02 or later.  Ignoring ghc."+     if [ "$GHCNUM" -lt "602" ]+     then  echo "    Warning: HaXml needs ghc-6.2 or later.  Ignoring ghc."            GHCKNOWN=      else  GHCLIBDIR=`${GHCKNOWN} -v 2>&1 | grep ' package config file: ' | head -1 | sed 's/.* package config file: //'`            if $CYGWIN; then GHCLIBDIR=`cygpath -u $GHCLIBDIR`; fi@@ -132,8 +132,8 @@     if [ "$GHC2KNOWN" = "" ]     then  echo "(not found)"     else  echo "found ${GHC2VERSION}"-          if [ "$GHC2NUM" -lt "502" ]-          then echo "    Warning: HaXml needs ghc-5.02 or later.  Ignoring."+          if [ "$GHC2NUM" -lt "602" ]+          then echo "    Warning: HaXml needs ghc-6.2 or later.  Ignoring."                GHC2KNOWN=           else GHCKNOWN="$GHC2KNOWN"                GHCVERSION="$GHC2VERSION"@@ -163,8 +163,8 @@      then echo "    Warning: building with nhc98 needs hmake-3.06 or later."           echo "    Available from:   http://www.haskell.org/hmake/"      fi-     if [ "$NHCNUM" -lt "114" ]-     then  echo "    Warning: HaXml needs nhc98-1.14 or later.  Ignoring nhc98."+     if [ "$NHCNUM" -lt "116" ]+     then  echo "    Warning: HaXml needs nhc98-1.16 or later.  Ignoring nhc98."            NHCKNOWN=      else  NHCLIBDIR=`grep '^NHC98LIBDIR' $NHCKNOWN | cut -c27- | cut -d'}' -f1 | head -1`            NHCINCDIR=`grep '^NHC98INCDIR' $NHCKNOWN | cut -c27- | cut -d'}' -f1 | head -1`@@ -279,9 +279,8 @@   echo ${BUILDWITH-ghc} >obj/ghccmd   cp -Rp src/Text src/tools src/Makefile src/pkg.conf obj/ghc   if [ "$GHCNUM" -ge "504" ]-  then rm -rf obj/ghc/Text/PrettyPrint-       echo "-package base" >obj/ghc/ghcpkgs-  else echo "-package lang -package data" >obj/ghc/ghcpkgs+  then echo "-package base -package polyparse" >obj/ghc/ghcpkgs+  else echo "-package lang -package data -package polyparse" >obj/ghc/ghcpkgs   fi fi if [ "$NHCKNOWN" != "" ]@@ -295,16 +294,22 @@   cp -Rp src/Text src/tools src/Makefile obj/nhc98   if [ "$NHCNUM" -ge "116" ]   then rm -rf obj/ghc/Text/PrettyPrint-       echo "-package base" >obj/nhc98/nhc98pkgs+       echo "-package base -package polyparse -package fps" >obj/nhc98/nhc98pkgs   else echo "" >obj/nhc98/nhc98pkgs   fi fi  echo $INSTALLDIR >obj/prefix if $CYGWIN || $MINGW ; then echo .exe >obj/exe; else touch obj/exe; fi-if $CYGWIN || $MINGW ; then echo main.exe >obj/out; else echo a.out >obj/out; fi-if $DARWIN ; then echo -all_load; else echo --whole-archive; fi >obj/ldopt-if $SUNOS ; then echo -z allextract; fi >obj/ldopt+if $CYGWIN || $MINGW ;+  then echo mv main.exe >obj/out;+  else if [ "$GHCNUM" -lt "606" ]+       then echo mv a.out   >obj/out+       else echo echo Built >obj/out+       fi+fi+if $DARWIN ; then echo "-all_load -x"; else echo --whole-archive; fi >obj/ldopt+if $SUNOS ; then echo "-z allextract" >obj/ldopt; fi   echo "Ready to build.  Type 'make' then (as root) 'make install'."
docs/Combinators.html view
@@ -14,13 +14,18 @@ <hr>  <p>-<b>Text.XML.HaXml.Combinators</b> is a combinator library-for generating, editing, and transforming XML documents in-a generic setting.  <b>Text.XML.HaXml.Html.Generate</b> is a-small library of functions specifically for generating HTML-from XML.  <b>Text.XML.HaXml.Wrappers</b> contains the wrapper-<b>processXmlWith</b>, in which input files are parsed as HTML if-the filename ends in .html or .htm - otherwise they are parsed as XML.+<b>Text.XML.HaXml.Combinators</b> is a combinator library for+generating, editing, and transforming XML documents in a generic+setting.++<p>+<b>Text.XML.HaXml.Html.Generate</b> is a small library of functions+specifically for generating HTML from XML.++<p>+<b>Text.XML.HaXml.Wrappers</b> contains the wrapper+<b>processXmlWith</b>, in which input files are parsed as HTML if the+filename ends in .html or .htm - otherwise they are parsed as XML.  <p> <b>Usage:</b> <tt>import Text.XML.HaXml.Combinators</tt><br>
+ docs/HaXml/Text-ParserCombinators-HuttonMeijer.html view
@@ -0,0 +1,1572 @@+<!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.ParserCombinators.HuttonMeijer</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.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.ParserCombinators.HuttonMeijer</FONT+></TD+><TD ALIGN="right"+><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="infohead"+>Portability</TD+><TD CLASS="infoval"+>All++                  A LIBRARY OF MONADIC PARSER COMBINATORS+ +                               29th July 1996+ +                  Graham Hutton               Erik Meijer+             University of Nottingham    University of Utrecht</TD+></TR+><TR+><TD CLASS="infohead"+>Stability</TD+><TD CLASS="infoval"+>Stable</TD+></TR+><TR+><TD CLASS="infohead"+>Maintainer</TD+><TD CLASS="infoval"+>Malcolm Wallace &lt;Malcolm.Wallace@cs.york.ac.uk&gt;</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+><P+>This Haskell script defines a library of parser combinators, and is+ taken from sections 1-6 of our article <A HREF="Monadic Parser Combinators.html"+>Monadic Parser Combinators</A+>.+ Some changes to the library have been made in the move from Gofer+ to Haskell:+</P+><UL+><LI+> Do notation is used in place of monad comprehension notation;+</LI+><LI+> The parser datatype is defined using <A HREF="newtype.html"+>newtype</A+>, to avoid the overhead+      of tagging and untagging parsers with the P constructor.+</LI+></UL+></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%3AParser"+>Parser</A+> a = <A HREF="#v%3AP"+>P</A+> ([Token] -&gt; [(a, [Token])])</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aitem"+>item</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Token</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Afirst"+>first</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Apapply"+>papply</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; [Token] -&gt; [(a, [Token])]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3A%2B%2B%2B"+>(+++)</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asat"+>sat</A+> :: (Token -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Token</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany"+>many</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany1"+>many1</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asepby"+>sepby</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asepby1"+>sepby1</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achainl"+>chainl</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achainl1"+>chainl1</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achainr"+>chainr</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achainr1"+>chainr1</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aops"+>ops</A+> :: [(<A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a, b)] -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Abracket"+>bracket</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> c -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achar"+>char</A+> :: Char -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adigit"+>digit</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Alower"+>lower</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aupper"+>upper</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aletter"+>letter</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aalphanum"+>alphanum</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Astring"+>string</A+> :: String -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aident"+>ident</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anat"+>nat</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aint"+>int</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aspaces"+>spaces</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acomment"+>comment</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Ajunk"+>junk</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Askip"+>skip</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atoken"+>token</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anatural"+>natural</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Ainteger"+>integer</A+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asymbol"+>symbol</A+> :: String -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aidentifier"+>identifier</A+> :: [String] -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> 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"+>newtype</SPAN+> <A NAME="t%3AParser"+></A+><B+>Parser</B+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#Parser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The parser monad+</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%3AP"+></A+><B+>P</B+> ([Token] -&gt; [(a, [Token])])</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Parser')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Parser" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+></TD+></TR+><TR+><TD CLASS="decl"+>Monad <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+></TD+></TR+><TR+><TD CLASS="decl"+>MonadPlus <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</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%3Aitem"+></A+><B+>item</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Token</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#item"+>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%3Afirst"+></A+><B+>first</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#first"+>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%3Apapply"+></A+><B+>papply</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; [Token] -&gt; [(a, [Token])]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#papply"+>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%3A%2B%2B%2B"+></A+><B+>(+++)</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#%2B%2B%2B"+>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%3Asat"+></A+><B+>sat</B+> :: (Token -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Token</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#sat"+>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%3Amany"+></A+><B+>many</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#many"+>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%3Amany1"+></A+><B+>many1</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#many1"+>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%3Asepby"+></A+><B+>sepby</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#sepby"+>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%3Asepby1"+></A+><B+>sepby1</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#sepby1"+>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%3Achainl"+></A+><B+>chainl</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#chainl"+>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%3Achainl1"+></A+><B+>chainl1</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#chainl1"+>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%3Achainr"+></A+><B+>chainr</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#chainr"+>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%3Achainr1"+></A+><B+>chainr1</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> (a -&gt; a -&gt; a) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#chainr1"+>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%3Aops"+></A+><B+>ops</B+> :: [(<A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a, b)] -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#ops"+>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%3Abracket"+></A+><B+>bracket</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> c -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#bracket"+>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%3Achar"+></A+><B+>char</B+> :: Char -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#char"+>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%3Adigit"+></A+><B+>digit</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#digit"+>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%3Alower"+></A+><B+>lower</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#lower"+>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%3Aupper"+></A+><B+>upper</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#upper"+>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%3Aletter"+></A+><B+>letter</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#letter"+>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%3Aalphanum"+></A+><B+>alphanum</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#alphanum"+>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%3Astring"+></A+><B+>string</B+> :: String -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#string"+>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%3Aident"+></A+><B+>ident</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#ident"+>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%3Anat"+></A+><B+>nat</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#nat"+>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%3Aint"+></A+><B+>int</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#int"+>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%3Aspaces"+></A+><B+>spaces</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#spaces"+>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%3Acomment"+></A+><B+>comment</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#comment"+>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%3Ajunk"+></A+><B+>junk</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#junk"+>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%3Askip"+></A+><B+>skip</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#skip"+>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%3Atoken"+></A+><B+>token</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#token"+>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%3Anatural"+></A+><B+>natural</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#natural"+>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%3Ainteger"+></A+><B+>integer</B+> :: <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#integer"+>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%3Asymbol"+></A+><B+>symbol</B+> :: String -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#symbol"+>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%3Aidentifier"+></A+><B+>identifier</B+> :: [String] -&gt; <A HREF="Text-ParserCombinators-HuttonMeijer.html#t%3AParser"+>Parser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijer.html#identifier"+>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+>
docs/HaXml/Text-ParserCombinators-HuttonMeijerWallace.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -488,7 +492,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >newtype</SPAN > <A NAME="t%3AParser"@@ -496,7 +503,14 @@ ><B >Parser</B > s t e a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#Parser"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -581,7 +595,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aitem" ></A ><B@@ -589,7 +606,14 @@ > :: <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#item"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver the first remaining token.@@ -600,7 +624,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aeof" ></A ><B@@ -608,7 +635,14 @@ > :: Show p =&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s (p, t) String ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#eof"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Fail if end of input is not reached@@ -619,7 +653,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Apapply" ></A ><B@@ -627,7 +664,14 @@ > :: <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t String a -&gt; s -&gt; [Either String t] -&gt; [(a, s, [Either String t])]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#papply"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Apply the parser to some real input, given an initial state value.@@ -643,7 +687,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Apapply%27" ></A ><B@@ -651,7 +698,14 @@ > :: <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e a -&gt; s -&gt; [Either e t] -&gt; Either e [(a, s, [Either e t])]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#papply%27"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Apply the parser to some real input, given an initial state value.@@ -674,7 +728,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3A%2B%2B%2B" ></A ><B@@ -686,7 +743,14 @@ > s t e a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#%2B%2B%2B"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >A choice between parsers.  Keep only the first success.@@ -697,7 +761,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Atok" ></A ><B@@ -705,7 +772,14 @@ > :: Eq t =&gt; t -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s (p, t) e t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#tok"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver the first token if it equals the argument.@@ -716,7 +790,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Anottok" ></A ><B@@ -724,7 +801,14 @@ > :: Eq t =&gt; [t] -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s (p, t) e t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#nottok"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver the first token if it does not equal the argument.@@ -735,7 +819,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Amany" ></A ><B@@ -745,7 +832,14 @@ > s t e a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#many"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver zero or more values of <TT@@ -758,7 +852,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Amany1" ></A ><B@@ -768,7 +865,14 @@ > s t e a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#many1"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver one or more values of <TT@@ -781,7 +885,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Asepby" ></A ><B@@ -793,7 +900,14 @@ > s t e b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#sepby"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver zero or more values of <TT@@ -808,7 +922,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Asepby1" ></A ><B@@ -820,7 +937,14 @@ > s t e b -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#sepby1"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver one or more values of <TT@@ -835,7 +959,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Achainl" ></A ><B@@ -847,13 +974,23 @@ > s t e (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#chainl"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Achainl1" ></A ><B@@ -865,13 +1002,23 @@ > s t e (a -&gt; a -&gt; a) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#chainl1"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Achainr" ></A ><B@@ -883,13 +1030,23 @@ > s t e (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#chainr"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Achainr1" ></A ><B@@ -901,13 +1058,23 @@ > s t e (a -&gt; a -&gt; a) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#chainr1"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aops" ></A ><B@@ -917,13 +1084,23 @@ > s t e a, b)] -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#ops"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Abracket" ></A ><B@@ -937,13 +1114,23 @@ > s (p, t) e c -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s (p, t) e b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#bracket"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AtoEOF" ></A ><B@@ -953,7 +1140,14 @@ > s (p, t) String a -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s (p, t) String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#toEOF"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Accept a complete parse of the input only, no partial parses.@@ -975,7 +1169,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aelserror" ></A ><B@@ -985,7 +1182,14 @@ > s (p, t) String a -&gt; String -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s (p, t) String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#elserror"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >If the parser fails, generate an error message.@@ -1007,7 +1211,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Astupd" ></A ><B@@ -1015,7 +1222,14 @@ > :: (s -&gt; s) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#stupd"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Update the internal state.@@ -1026,7 +1240,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Astquery" ></A ><B@@ -1034,7 +1251,14 @@ > :: (s -&gt; a) -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#stquery"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Query the internal state.@@ -1045,7 +1269,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Astget" ></A ><B@@ -1053,7 +1280,14 @@ > :: <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e s</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#stget"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Deliver the entire internal state.@@ -1075,7 +1309,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Areparse" ></A ><B@@ -1083,6 +1320,13 @@ > :: [Either e t] -&gt; <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser" >Parser</A > s t e ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/HuttonMeijerWallace.html#reparse"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="doc"
+ docs/HaXml/Text-ParserCombinators-Poly.html view
@@ -0,0 +1,1382 @@+<!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.ParserCombinators.Poly</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/ParserCombinators/Poly.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.ParserCombinators.Poly</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>A Parser datatype parameterised on arbitrary token type+</A+></DT+><DT+><A HREF="#2"+>Combinators+</A+></DT+><DD+><DL+><DT+><A HREF="#3"+>primitives+</A+></DT+><DT+><A HREF="#4"+>error-handling+</A+></DT+><DT+><A HREF="#5"+>choices+</A+></DT+><DT+><A HREF="#6"+>sequences+</A+></DT+><DT+><A HREF="#7"+>re-parsing+</A+></DT+></DL+></DD+></DL+></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"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3AParser"+>Parser</A+> t a = <A HREF="#v%3AP"+>P</A+> ([t] -&gt; (EitherE String a, [t]))</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ArunParser"+>runParser</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; [t] -&gt; (Either String a, [t])</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfailBad"+>failBad</A+> :: String -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acommit"+>commit</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anext"+>next</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asatisfy"+>satisfy</A+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aapply"+>apply</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adiscard"+>discard</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t b -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErr"+>adjustErr</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErrBad"+>adjustErrBad</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aindent"+>indent</A+> :: Int -&gt; String -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AonFail"+>onFail</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf"+>oneOf</A+> :: [<A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a] -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf%27"+>oneOf'</A+> :: [(String, <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a)] -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aoptional"+>optional</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t (Maybe a)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany"+>many</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany1"+>many1</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy"+>sepBy</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy1"+>sepBy1</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AbracketSep"+>bracketSep</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Abracket"+>bracket</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmanyFinally"+>manyFinally</A+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t z -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Areparse"+>reparse</A+> :: [t] -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t ()</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>A Parser datatype parameterised on arbitrary token type+</A+></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%3AParser"+></A+><B+>Parser</B+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#Parser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>Parser</TT+> datatype is a fairly generic parsing monad with error+   reporting.  It can be used for arbitrary token types, not just+   String input.  (If you require a running state, use module PolyState+   instead)+</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%3AP"+></A+><B+>P</B+> ([t] -&gt; (EitherE String a, [t]))</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Parser')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Parser" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor (<A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t)</TD+></TR+><TR+><TD CLASS="decl"+>Monad (<A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ArunParser"+></A+><B+>runParser</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; [t] -&gt; (Either String a, [t])</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#runParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parser to an input token sequence.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfailBad"+></A+><B+>failBad</B+> :: String -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#failBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>When a simple fail is not strong enough, use failBad for emphasis.+   An emphasised (severe) error can propagate out through choice operators.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acommit"+></A+><B+>commit</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#commit"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Commit is a way of raising the severity of any errors found within+   its argument.  Used in the middle of a parser definition, it means that+   any operations prior to commitment fail softly, but after commitment,+   they fail hard.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Combinators+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>primitives+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Anext"+></A+><B+>next</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#next"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Asatisfy"+></A+><B+>satisfy</B+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#satisfy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token satifying a predicate+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aapply"+></A+><B+>apply</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#apply"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parsed function to a parsed value+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adiscard"+></A+><B+>discard</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t b -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#discard"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>x <TT+><A HREF="Text-ParserCombinators-Poly.html#v%3Adiscard"+>discard</A+></TT+> y</TT+> parses both x and y, but discards the result of y+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>error-handling+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErr"+></A+><B+>adjustErr</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#adjustErr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-Poly.html#v%3AadjustErr"+>adjustErr</A+></TT+> f</TT+> applies the transformation <TT+>f</TT+> to any error message+   generated in <TT+>p</TT+>, having no effect if <TT+>p</TT+> succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErrBad"+></A+><B+>adjustErrBad</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#adjustErrBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>adjustErrBad</TT+> is just like <TT+>adjustErr</TT+> except it also raises the+   severity of the error.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aindent"+></A+><B+>indent</B+> :: Int -&gt; String -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#indent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Helper for formatting error messages: indents all lines by a fixed amount.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>choices+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AonFail"+></A+><B+>onFail</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#onFail"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-Poly.html#v%3AonFail"+>onFail</A+></TT+> q</TT+> means parse p unless p fails in which case parse q instead.+   Can be chained together to give multiple attempts to parse something.+   (Note that q could itself be a failing parser, e.g. to change the error+   message from that defined in p to something different.)+   However, a *severe* failure in p cannot be ignored.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf"+></A+><B+>oneOf</B+> :: [<A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a] -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#oneOf"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative in the list that succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf%27"+></A+><B+>oneOf'</B+> :: [(String, <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a)] -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#oneOf%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative that succeeds, but if none succeed,+   report only the severe errors, and if none of those, then report+   all the soft errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aoptional"+></A+><B+>optional</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t (Maybe a)</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#optional"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+><A HREF="Text-ParserCombinators-Poly.html#v%3Aoptional"+>optional</A+></TT+> indicates whether the parser succeeded through the Maybe type.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="6"+>sequences+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany"+></A+><B+>many</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#many"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'many p' parses a list of elements with individual parser p.+   Cannot fail, since an empty list is a valid return value.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany1"+></A+><B+>many1</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#many1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy"+></A+><B+>sepBy</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#sepBy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy1"+></A+><B+>sepBy1</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#sepBy1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AbracketSep"+></A+><B+>bracketSep</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#bracketSep"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items, discarding the start, end, and separator+   items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Abracket"+></A+><B+>bracket</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#bracket"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a bracketed item, discarding the brackets.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmanyFinally"+></A+><B+>manyFinally</B+> :: <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t z -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#manyFinally"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'manyFinally e t' parses a possibly-empty sequence of e's,+   terminated by a t.  Any parse failures could be due either to+   a badly-formed terminator or a badly-formed element, so raise+   both possible errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="7"+>re-parsing+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Areparse"+></A+><B+>reparse</B+> :: [t] -&gt; <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> t ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/Poly.html#reparse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Push some tokens back onto the front of the input stream and reparse.+   This is useful e.g. for recursively expanding macros.  When the+   user-parser recognises a macro use, it can lookup the macro+   expansion from the parse state, lex it, and then stuff the+   lexed expansion back down into the parser.+</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+>
+ docs/HaXml/Text-ParserCombinators-PolyLazy.html view
@@ -0,0 +1,1385 @@+<!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.ParserCombinators.PolyLazy</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.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.ParserCombinators.PolyLazy</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>A Parser datatype parameterised on arbitrary token type.+</A+></DT+><DT+><A HREF="#2"+>Combinators+</A+></DT+><DD+><DL+><DT+><A HREF="#3"+>primitives+</A+></DT+><DT+><A HREF="#4"+>error-handling+</A+></DT+><DT+><A HREF="#5"+>choices+</A+></DT+><DT+><A HREF="#6"+>sequences+</A+></DT+><DT+><A HREF="#7"+>re-parsing+</A+></DT+></DL+></DD+></DL+></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"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3AParser"+>Parser</A+> t a = <A HREF="#v%3AP"+>P</A+> ([t] -&gt; (Either String a, [t]))</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ArunParser"+>runParser</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; [t] -&gt; (a, [t])</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfailBad"+>failBad</A+> :: String -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acommit"+>commit</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anext"+>next</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asatisfy"+>satisfy</A+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aapply"+>apply</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adiscard"+>discard</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t b -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErr"+>adjustErr</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErrBad"+>adjustErrBad</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aindent"+>indent</A+> :: Int -&gt; String -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AonFail"+>onFail</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf"+>oneOf</A+> :: [<A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a] -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf%27"+>oneOf'</A+> :: [(String, <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a)] -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aoptional"+>optional</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t (Maybe a)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany"+>many</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany1"+>many1</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy"+>sepBy</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy1"+>sepBy1</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AbracketSep"+>bracketSep</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Abracket"+>bracket</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmanyFinally"+>manyFinally</A+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t z -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Areparse"+>reparse</A+> :: [t] -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t ()</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>A Parser datatype parameterised on arbitrary token type.+</A+></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%3AParser"+></A+><B+>Parser</B+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#Parser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>Parser</TT+> datatype is a fairly generic parsing monad with error+   reporting.  It can be used for arbitrary token types, not just+   String input.  (If you require a running state, use module PolyState+   instead.)+</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%3AP"+></A+><B+>P</B+> ([t] -&gt; (Either String a, [t]))</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Parser')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Parser" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor (<A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t)</TD+></TR+><TR+><TD CLASS="decl"+>Monad (<A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ArunParser"+></A+><B+>runParser</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; [t] -&gt; (a, [t])</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#runParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parser to an input token sequence.  The parser cannot return+   an error value explicitly, so errors raise an exception.  Thus, results+   can be partial (lazily constructed, but containing undefined).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfailBad"+></A+><B+>failBad</B+> :: String -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#failBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Simple failure can be corrected, but when a simple fail is not strong+   enough, use failBad for emphasis.  It guarantees parsing will+   terminate with an exception.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acommit"+></A+><B+>commit</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#commit"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Commit is a way of raising the severity of any errors found within+   its argument.  Used in the middle of a parser definition, it means that+   any operations prior to commitment fail softly, but after commitment,+   they fail hard.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Combinators+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>primitives+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Anext"+></A+><B+>next</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#next"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Asatisfy"+></A+><B+>satisfy</B+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#satisfy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token satifying a predicate+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aapply"+></A+><B+>apply</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#apply"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parsed function to a parsed value+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adiscard"+></A+><B+>discard</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t b -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#discard"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>x <TT+><A HREF="Text-ParserCombinators-PolyLazy.html#v%3Adiscard"+>discard</A+></TT+> y</TT+> parses both x and y, but discards the result of y+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>error-handling+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErr"+></A+><B+>adjustErr</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#adjustErr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-PolyLazy.html#v%3AadjustErr"+>adjustErr</A+></TT+> f</TT+> applies the transformation <TT+>f</TT+> to any error message+   generated in <TT+>p</TT+>, having no effect if <TT+>p</TT+> succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErrBad"+></A+><B+>adjustErrBad</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#adjustErrBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>adjustErrBad</TT+> is just like <TT+>adjustErr</TT+> except it also raises the+   severity of the error.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aindent"+></A+><B+>indent</B+> :: Int -&gt; String -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#indent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Helper for formatting error messages: indents all lines by a fixed amount.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>choices+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AonFail"+></A+><B+>onFail</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#onFail"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-PolyLazy.html#v%3AonFail"+>onFail</A+></TT+> q</TT+> means parse p unless p fails in which case parse q instead.+   Can be chained together to give multiple attempts to parse something.+   (Note that q could itself be a failing parser, e.g. to change the error+   message from that defined in p to something different.)+   However, a *severe* failure in p cannot be ignored.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf"+></A+><B+>oneOf</B+> :: [<A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a] -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#oneOf"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative in the list that succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf%27"+></A+><B+>oneOf'</B+> :: [(String, <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a)] -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#oneOf%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative that succeeds, but if none succeed,+   report only the severe errors, and if none of those, then report+   all the soft errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aoptional"+></A+><B+>optional</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t (Maybe a)</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#optional"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+><A HREF="Text-ParserCombinators-PolyLazy.html#v%3Aoptional"+>optional</A+></TT+> indicates whether the parser succeeded through the Maybe type.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="6"+>sequences+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany"+></A+><B+>many</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#many"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'many p' parses a list of elements with individual parser p.+   Cannot fail, since an empty list is a valid return value.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany1"+></A+><B+>many1</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#many1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy"+></A+><B+>sepBy</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#sepBy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy1"+></A+><B+>sepBy1</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#sepBy1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AbracketSep"+></A+><B+>bracketSep</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t sep -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#bracketSep"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items, discarding the start, end, and separator+   items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Abracket"+></A+><B+>bracket</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t bra -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t ket -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#bracket"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a bracketed item, discarding the brackets.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmanyFinally"+></A+><B+>manyFinally</B+> :: <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t a -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t z -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#manyFinally"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'manyFinally e t' parses a possibly-empty sequence of e's,+   terminated by a t.  Any parse failures could be due either to+   a badly-formed terminator or a badly-formed element, so raise+   both possible errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="7"+>re-parsing+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Areparse"+></A+><B+>reparse</B+> :: [t] -&gt; <A HREF="Text-ParserCombinators-PolyLazy.html#t%3AParser"+>Parser</A+> t ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyLazy.html#reparse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Push some tokens back onto the front of the input stream and reparse.+   This is useful e.g. for recursively expanding macros.  When the+   user-parser recognises a macro use, it can lookup the macro+   expansion from the parse state, lex it, and then stuff the+   lexed expansion back down into the parser.+</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+>
+ docs/HaXml/Text-ParserCombinators-PolyState.html view
@@ -0,0 +1,1471 @@+<!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.ParserCombinators.PolyState</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/ParserCombinators/PolyState.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.ParserCombinators.PolyState</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>A Parser datatype parameterised on arbitrary token type and state type+</A+></DT+><DT+><A HREF="#2"+>Combinators+</A+></DT+><DD+><DL+><DT+><A HREF="#3"+>primitives+</A+></DT+><DT+><A HREF="#4"+>error-handling+</A+></DT+><DT+><A HREF="#5"+>choices+</A+></DT+><DT+><A HREF="#6"+>sequences+</A+></DT+><DT+><A HREF="#7"+>state-handling+</A+></DT+><DT+><A HREF="#8"+>re-parsing+</A+></DT+></DL+></DD+></DL+></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"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3AParser"+>Parser</A+> s t a = <A HREF="#v%3AP"+>P</A+> (s -&gt; [t] -&gt; (EitherE String a, s, [t]))</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ArunParser"+>runParser</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; s -&gt; [t] -&gt; (Either String a, s, [t])</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfailBad"+>failBad</A+> :: String -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acommit"+>commit</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anext"+>next</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asatisfy"+>satisfy</A+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aapply"+>apply</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adiscard"+>discard</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t b -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErr"+>adjustErr</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErrBad"+>adjustErrBad</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aindent"+>indent</A+> :: Int -&gt; String -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AonFail"+>onFail</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf"+>oneOf</A+> :: [<A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a] -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf%27"+>oneOf'</A+> :: [(String, <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a)] -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany"+>many</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany1"+>many1</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy"+>sepBy</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy1"+>sepBy1</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AbracketSep"+>bracketSep</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Abracket"+>bracket</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmanyFinally"+>manyFinally</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t z -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AstUpdate"+>stUpdate</A+> :: (s -&gt; s) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AstQuery"+>stQuery</A+> :: (s -&gt; a) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AstGet"+>stGet</A+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t s</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Areparse"+>reparse</A+> :: [t] -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ()</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>A Parser datatype parameterised on arbitrary token type and state type+</A+></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%3AParser"+></A+><B+>Parser</B+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#Parser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>Parser</TT+> datatype is a fairly generic parsing monad with error+   reporting and a running state.  It can be used for arbitrary token+   types, not just String input.+</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%3AP"+></A+><B+>P</B+> (s -&gt; [t] -&gt; (EitherE String a, s, [t]))</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Parser')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Parser" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor (<A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t)</TD+></TR+><TR+><TD CLASS="decl"+>Monad (<A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ArunParser"+></A+><B+>runParser</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; s -&gt; [t] -&gt; (Either String a, s, [t])</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#runParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parser to an initial state and input token sequence.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfailBad"+></A+><B+>failBad</B+> :: String -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#failBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>When a simple fail is not strong enough, use failBad for emphasis.+   An emphasised (severe) error can propagate out through choice operators.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acommit"+></A+><B+>commit</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#commit"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Commit is a way of raising the severity of any errors found within+   its argument.  Used in the middle of a parser definition, it means that+   any operations prior to commitment fail softly, but after commitment,+   they fail hard.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Combinators+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>primitives+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Anext"+></A+><B+>next</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#next"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Asatisfy"+></A+><B+>satisfy</B+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#satisfy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token satifying a predicate+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aapply"+></A+><B+>apply</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#apply"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parsed function to a parsed value+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adiscard"+></A+><B+>discard</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t b -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#discard"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>x <TT+><A HREF="Text-ParserCombinators-PolyState.html#v%3Adiscard"+>discard</A+></TT+> y</TT+> parses both x and y, but discards the result of y+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>error-handling+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErr"+></A+><B+>adjustErr</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#adjustErr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-PolyState.html#v%3AadjustErr"+>adjustErr</A+></TT+> f</TT+> applies the transformation <TT+>f</TT+> to any error message+   generated in <TT+>p</TT+>, having no effect if <TT+>p</TT+> succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErrBad"+></A+><B+>adjustErrBad</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#adjustErrBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>adjustErrBad</TT+> is just like <TT+>adjustErr</TT+> except it also raises the+   severity of the error.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aindent"+></A+><B+>indent</B+> :: Int -&gt; String -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#indent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Helper for formatting error messages: indents all lines by a fixed amount.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>choices+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AonFail"+></A+><B+>onFail</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#onFail"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-PolyState.html#v%3AonFail"+>onFail</A+></TT+> q</TT+> means parse p unless p fails in which case parse q instead.+   Can be chained together to give multiple attempts to parse something.+   (Note that q could itself be a failing parser, e.g. to change the error+   message from that defined in p to something different.)+   However, a severe failure in p cannot be ignored.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf"+></A+><B+>oneOf</B+> :: [<A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a] -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#oneOf"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative in the list that succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf%27"+></A+><B+>oneOf'</B+> :: [(String, <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a)] -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#oneOf%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative that succeeds, but if none succeed,+   report only the severe errors, and if none of those, then report+   all the soft errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="6"+>sequences+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany"+></A+><B+>many</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#many"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'many p' parses a list of elements with individual parser p.+   Cannot fail, since an empty list is a valid return value.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany1"+></A+><B+>many1</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#many1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy"+></A+><B+>sepBy</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#sepBy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy1"+></A+><B+>sepBy1</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#sepBy1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AbracketSep"+></A+><B+>bracketSep</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#bracketSep"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items, discarding the start, end, and separator+   items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Abracket"+></A+><B+>bracket</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#bracket"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a bracketed item, discarding the brackets.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmanyFinally"+></A+><B+>manyFinally</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t z -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#manyFinally"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'manyFinally e t' parses a possibly-empty sequence of e's,+   terminated by a t.  Any parse failures could be due either to+   a badly-formed terminator or a badly-formed element, so raise+   both possible errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="7"+>state-handling+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AstUpdate"+></A+><B+>stUpdate</B+> :: (s -&gt; s) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#stUpdate"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Update the internal state.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AstQuery"+></A+><B+>stQuery</B+> :: (s -&gt; a) -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#stQuery"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Query the internal state.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AstGet"+></A+><B+>stGet</B+> :: <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t s</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#stGet"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Deliver the entire internal state.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="8"+>re-parsing+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Areparse"+></A+><B+>reparse</B+> :: [t] -&gt; <A HREF="Text-ParserCombinators-PolyState.html#t%3AParser"+>Parser</A+> s t ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyState.html#reparse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Push some tokens back onto the front of the input stream and reparse.+   This is useful e.g. for recursively expanding macros.  When the+   user-parser recognises a macro use, it can lookup the macro+   expansion from the parse state, lex it, and then stuff the+   lexed expansion back down into the parser.+</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+>
+ docs/HaXml/Text-ParserCombinators-PolyStateLazy.html view
@@ -0,0 +1,1524 @@+<!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.ParserCombinators.PolyStateLazy</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.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.ParserCombinators.PolyStateLazy</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>A Parser datatype parameterised on arbitrary token type and state type.+</A+></DT+><DT+><A HREF="#2"+>Combinators+</A+></DT+><DD+><DL+><DT+><A HREF="#3"+>primitives+</A+></DT+><DT+><A HREF="#4"+>error-handling+</A+></DT+><DT+><A HREF="#5"+>choices+</A+></DT+><DT+><A HREF="#6"+>sequences+</A+></DT+><DT+><A HREF="#7"+>state-handling+</A+></DT+><DT+><A HREF="#8"+>re-parsing+</A+></DT+></DL+></DD+></DL+></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"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3AParser"+>Parser</A+> s t a = <A HREF="#v%3AP"+>P</A+> (s -&gt; [t] -&gt; (Either String a, s, [t]))</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ArunParser"+>runParser</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; s -&gt; [t] -&gt; (a, s, [t])</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfailBad"+>failBad</A+> :: String -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acommit"+>commit</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anext"+>next</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asatisfy"+>satisfy</A+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t t</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aapply"+>apply</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adiscard"+>discard</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t b -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErr"+>adjustErr</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AadjustErrBad"+>adjustErrBad</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aindent"+>indent</A+> :: Int -&gt; String -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AonFail"+>onFail</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf"+>oneOf</A+> :: [<A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a] -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoneOf%27"+>oneOf'</A+> :: [(String, <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a)] -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aoptional"+>optional</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t (Maybe a)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany"+>many</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amany1"+>many1</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy"+>sepBy</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsepBy1"+>sepBy1</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AbracketSep"+>bracketSep</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Abracket"+>bracket</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmanyFinally"+>manyFinally</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t z -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AstUpdate"+>stUpdate</A+> :: (s -&gt; s) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AstQuery"+>stQuery</A+> :: (s -&gt; a) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AstGet"+>stGet</A+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t s</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Areparse"+>reparse</A+> :: [t] -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ()</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>A Parser datatype parameterised on arbitrary token type and state type.+</A+></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%3AParser"+></A+><B+>Parser</B+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#Parser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>Parser</TT+> datatype is a fairly generic parsing monad with error+   reporting and a running state.  It can be used for arbitrary token+   types, not just String input.+</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%3AP"+></A+><B+>P</B+> (s -&gt; [t] -&gt; (Either String a, s, [t]))</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Parser')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Parser" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor (<A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t)</TD+></TR+><TR+><TD CLASS="decl"+>Monad (<A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ArunParser"+></A+><B+>runParser</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; s -&gt; [t] -&gt; (a, s, [t])</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#runParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parser to an initial state and input token sequence.+   The parser cannot return an error value explicitly, so errors+   raise an exception.  Thus, results can be partial (lazily constructed,+   but containing undefined).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfailBad"+></A+><B+>failBad</B+> :: String -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#failBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Simple failure can be corrected, but when a simple fail is not strong+   enough, use failBad for emphasis.  It guarantees parsing will terminate+   with an exception.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acommit"+></A+><B+>commit</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#commit"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Commit is a way of raising the severity of any errors found within+   its argument.  Used in the middle of a parser definition, it means that+   any operations prior to commitment fail softly, but after commitment,+   they fail hard.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Combinators+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>primitives+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Anext"+></A+><B+>next</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#next"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Asatisfy"+></A+><B+>satisfy</B+> :: (t -&gt; Bool) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t t</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#satisfy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One token satifying a predicate+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aapply"+></A+><B+>apply</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t (a -&gt; b) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t b</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#apply"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Apply a parsed function to a parsed value+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adiscard"+></A+><B+>discard</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t b -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#discard"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>x <TT+><A HREF="Text-ParserCombinators-PolyStateLazy.html#v%3Adiscard"+>discard</A+></TT+> y</TT+> parses both x and y, but discards the result of y+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>error-handling+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErr"+></A+><B+>adjustErr</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#adjustErr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-PolyStateLazy.html#v%3AadjustErr"+>adjustErr</A+></TT+> f</TT+> applies the transformation <TT+>f</TT+> to any error message+   generated in <TT+>p</TT+>, having no effect if <TT+>p</TT+> succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AadjustErrBad"+></A+><B+>adjustErrBad</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; (String -&gt; String) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#adjustErrBad"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>adjustErrBad</TT+> is just like <TT+>adjustErr</TT+> except it also raises the+   severity of the error.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aindent"+></A+><B+>indent</B+> :: Int -&gt; String -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#indent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Helper for formatting error messages: indents all lines by a fixed amount.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>choices+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AonFail"+></A+><B+>onFail</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#onFail"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>p <TT+><A HREF="Text-ParserCombinators-PolyStateLazy.html#v%3AonFail"+>onFail</A+></TT+> q</TT+> means parse p unless p fails in which case parse q instead.+   Can be chained together to give multiple attempts to parse something.+   (Note that q could itself be a failing parser, e.g. to change the error+   message from that defined in p to something different.)+   However, a *severe* failure in p cannot be ignored.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf"+></A+><B+>oneOf</B+> :: [<A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a] -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#oneOf"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative in the list that succeeds.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoneOf%27"+></A+><B+>oneOf'</B+> :: [(String, <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a)] -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#oneOf%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse the first alternative that succeeds, but if none succeed,+   report only the severe errors, and if none of those, then report+   all the soft errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aoptional"+></A+><B+>optional</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t (Maybe a)</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#optional"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+><A HREF="Text-ParserCombinators-PolyStateLazy.html#v%3Aoptional"+>optional</A+></TT+> indicates whether the parser succeeded through the Maybe type.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="6"+>sequences+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany"+></A+><B+>many</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#many"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'many p' parses a list of elements with individual parser p.+   Cannot fail, since an empty list is a valid return value.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Amany1"+></A+><B+>many1</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#many1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy"+></A+><B+>sepBy</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#sepBy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsepBy1"+></A+><B+>sepBy1</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#sepBy1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a non-empty list of items separated by discarded junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AbracketSep"+></A+><B+>bracketSep</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t sep -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#bracketSep"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a list of items, discarding the start, end, and separator+   items.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Abracket"+></A+><B+>bracket</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t bra -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ket -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#bracket"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a bracketed item, discarding the brackets.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmanyFinally"+></A+><B+>manyFinally</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t z -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#manyFinally"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'manyFinally e t' parses a possibly-empty sequence of e's,+   terminated by a t.  Any parse failures could be due either to+   a badly-formed terminator or a badly-formed element, so raise+   both possible errors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="7"+>state-handling+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AstUpdate"+></A+><B+>stUpdate</B+> :: (s -&gt; s) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#stUpdate"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Update the internal state.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AstQuery"+></A+><B+>stQuery</B+> :: (s -&gt; a) -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#stQuery"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Query the internal state.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AstGet"+></A+><B+>stGet</B+> :: <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t s</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#stGet"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Deliver the entire internal state.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="8"+>re-parsing+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Areparse"+></A+><B+>reparse</B+> :: [t] -&gt; <A HREF="Text-ParserCombinators-PolyStateLazy.html#t%3AParser"+>Parser</A+> s t ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/PolyStateLazy.html#reparse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Push some tokens back onto the front of the input stream and reparse.+   This is useful e.g. for recursively expanding macros.  When the+   user-parser recognises a macro use, it can lookup the macro+   expansion from the parse state, lex it, and then stuff the+   lexed expansion back down into the parser.+</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+>
+ docs/HaXml/Text-ParserCombinators-TextParser.html view
@@ -0,0 +1,781 @@+<!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.ParserCombinators.TextParser</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/ParserCombinators/TextParser.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.ParserCombinators.TextParser</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>The Parse class is a replacement for the Read class.  It is a+</A+></DT+><DD+><DL+><DT+><A HREF="#2"+>Combinators specific to string input, lexed haskell-style+</A+></DT+><DT+><A HREF="#3"+>Re-export all the more general combinators too+</A+></DT+></DL+></DD+></DL+></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"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ATextParser"+>TextParser</A+> a = <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> Char a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="#t%3AParse"+>Parse</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3Aparse"+>parse</A+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AparseList"+>parseList</A+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> [a]</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AparseByRead"+>parseByRead</A+> :: Read a =&gt; String -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aword"+>word</A+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AisWord"+>isWord</A+> :: String -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AoptionalParens"+>optionalParens</A+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Afield"+>field</A+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> a =&gt; String -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aconstructors"+>constructors</A+> :: [(String, <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a)] -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aenumeration"+>enumeration</A+> :: Show a =&gt; String -&gt; [a] -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-ParserCombinators-Poly.html"+>Text.ParserCombinators.Poly</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>The Parse class is a replacement for the Read class.  It is a+</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%3ATextParser"+></A+><B+>TextParser</B+> a = <A HREF="Text-ParserCombinators-Poly.html#t%3AParser"+>Parser</A+> Char a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#TextParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>A synonym for Parser Char, i.e. string input (no state)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A NAME="t%3AParse"+></A+><B+>Parse</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#Parse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The class <TT+>Parse</TT+> is a replacement for <TT+>Read</TT+>, operating over String input.+   Essentially, it permits better error messages for why something failed to+   parse.  It is rather important that <TT+>parse</TT+> can read back exactly what+   is generated by the corresponding instance of <TT+>show</TT+>.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aparse"+></A+><B+>parse</B+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#parse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AparseList"+></A+><B+>parseList</B+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#parseList"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Parse')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Parse" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> Bool</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> Double</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> Float</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> Int</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> Integer</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> Ordering</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> ()</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> a, <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> b) =&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> (a, b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> a, <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> b, <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> c) =&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> (a, b, c)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> a =&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> (Maybe a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> a =&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> [a]</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> a, <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> b) =&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> (Either a b)</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%3AparseByRead"+></A+><B+>parseByRead</B+> :: Read a =&gt; String -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#parseByRead"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>If there already exists a Read instance for a type, then we can make+   a Parser for it, but with only poor error-reporting.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="2"+>Combinators specific to string input, lexed haskell-style+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aword"+></A+><B+>word</B+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#word"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>One lexical chunk (Haskell-style lexing).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisWord"+></A+><B+>isWord</B+> :: String -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#isWord"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Ensure that the next input word is a given string.  (Note the input+   is lexed as haskell, so wordbreaks at spaces, symbols, etc.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AoptionalParens"+></A+><B+>optionalParens</B+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#optionalParens"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Allow true string parens around an item.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Afield"+></A+><B+>field</B+> :: <A HREF="Text-ParserCombinators-TextParser.html#t%3AParse"+>Parse</A+> a =&gt; String -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#field"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Deal with named field syntax.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aconstructors"+></A+><B+>constructors</B+> :: [(String, <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a)] -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#constructors"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse one of a bunch of alternative constructors.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aenumeration"+></A+><B+>enumeration</B+> :: Show a =&gt; String -&gt; [a] -&gt; <A HREF="Text-ParserCombinators-TextParser.html#t%3ATextParser"+>TextParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/ParserCombinators/TextParser.html#enumeration"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse one of the given nullary constructors (an enumeration).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>Re-export all the more general combinators too+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-ParserCombinators-Poly.html"+>Text.ParserCombinators.Poly</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+>
+ docs/HaXml/Text-XML-HaXml-ByteStringPP.html view
@@ -0,0 +1,441 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.ByteStringPP</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/ByteStringPP.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.ByteStringPP</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>Pretty-print a whole document+</A+></DT+><DD+><DL+><DT+><A HREF="#2"+>Just one content+</A+></DT+><DT+><A HREF="#3"+>Just one tagged element+</A+></DT+></DL+></DD+><DT+><A HREF="#4"+>Pretty-print just a DTD+</A+></DT+><DD+><DL+><DT+><A HREF="#5"+>The prolog+</A+></DT+><DT+><A HREF="#6"+>A content particle description+</A+></DT+></DL+></DD+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>This is a fast non-pretty-printer for turning the internal representation+   of generic structured XML documents into Lazy ByteStrings.+   Like in Text.Xml.HaXml.Pretty, there is one pp function for each type in+   Text.Xml.HaXml.Types, so you can pretty-print as much or as little+   of the document as you wish.+</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%3Adocument"+>document</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> i -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acontent"+>content</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aelement"+>element</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adoctypedecl"+>doctypedecl</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+> -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aprolog"+>prolog</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AProlog"+>Prolog</A+> -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acp"+>cp</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+> -&gt; ByteString</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Pretty-print a whole document+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adocument"+></A+><B+>document</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> i -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ByteStringPP.html#document"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="2"+>Just one content+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acontent"+></A+><B+>content</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ByteStringPP.html#content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>Just one tagged element+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelement"+></A+><B+>element</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ByteStringPP.html#element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="4"+>Pretty-print just a DTD+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adoctypedecl"+></A+><B+>doctypedecl</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+> -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ByteStringPP.html#doctypedecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>The prolog+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aprolog"+></A+><B+>prolog</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AProlog"+>Prolog</A+> -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ByteStringPP.html#prolog"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="6"+>A content particle description+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acp"+></A+><B+>cp</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+> -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ByteStringPP.html#cp"+>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+>
docs/HaXml/Text-XML-HaXml-Combinators.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Combinators.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -190,11 +194,11 @@ >type</SPAN > <A HREF="#t%3ACFilter" >CFilter</A-> = <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i = <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->]</TD+> i]</TD ></TR ><TR ><TD CLASS="s8"@@ -214,7 +218,7 @@ ><TD CLASS="decl" ><A HREF="#v%3Anone" >none</A-> :: a -&gt; [a]</TD+> :: a -&gt; [b]</TD ></TR ><TR ><TD CLASS="s8"@@ -226,7 +230,7 @@ >children</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -238,9 +242,9 @@ >position</A > :: Int -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -252,7 +256,7 @@ >elm</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -264,7 +268,7 @@ >txt</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -276,7 +280,7 @@ >tag</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -290,7 +294,7 @@ >Name</A > -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -304,7 +308,7 @@ >Attribute</A > -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -316,7 +320,7 @@ >tagWith</A > :: (String -&gt; Bool) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -328,9 +332,9 @@ >find</A > :: String -&gt; (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -342,11 +346,11 @@ >iffind</A > :: String -&gt; (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -358,11 +362,11 @@ >ifTxt</A > :: (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -374,11 +378,11 @@ >o</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -430,11 +434,11 @@ >with</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -446,11 +450,11 @@ >without</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -462,11 +466,11 @@ >(/&gt;)</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -478,11 +482,11 @@ >(&lt;/)</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -494,11 +498,11 @@ >et</A > :: (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -510,9 +514,9 @@ >path</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -524,9 +528,9 @@ >deep</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -538,9 +542,9 @@ >deepest</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -552,9 +556,9 @@ >multi</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -566,11 +570,11 @@ >when</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -582,11 +586,11 @@ >guards</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -598,11 +602,25 @@ >chip</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+></TR+><TR+><TD CLASS="s8" ></TD ></TR ><TR+><TD CLASS="decl"+><A HREF="#v%3Ainplace"+>inplace</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> i</TD+></TR+><TR ><TD CLASS="s8" ></TD ></TR@@ -612,9 +630,9 @@ >foldXml</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -626,9 +644,9 @@ >mkElem</A > :: String -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -640,11 +658,11 @@ >mkElemAttr</A > :: String -&gt; [(String, <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -656,7 +674,7 @@ >literal</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -668,7 +686,7 @@ >cdata</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -680,7 +698,7 @@ >replaceTag</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -692,7 +710,7 @@ >replaceAttrs</A > :: [(String, String)] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -730,11 +748,11 @@ >type</SPAN > <A HREF="#t%3ALabelFilter" >LabelFilter</A-> a = <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i a = <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; [(a, <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; [(a, <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->)]</TD+> i)]</TD ></TR ><TR ><TD CLASS="s8"@@ -746,11 +764,11 @@ >oo</A > :: (a -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> a -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i a -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -762,17 +780,17 @@ >x</A > :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> a) -&gt; (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i a) -&gt; (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> b) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i b) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> (a, b)</TD+> i (a, b)</TD ></TR ><TR ><TD CLASS="s8"@@ -784,9 +802,9 @@ >numbered</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i Int</TD ></TR ><TR ><TD CLASS="s8"@@ -798,9 +816,9 @@ >interspersed</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i String</TD ></TR ><TR ><TD CLASS="s8"@@ -812,9 +830,9 @@ >tagged</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i String</TD ></TR ><TR ><TD CLASS="s8"@@ -826,9 +844,9 @@ >attributed</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i String</TD ></TR ><TR ><TD CLASS="s8"@@ -840,9 +858,9 @@ >textlabelled</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> (Maybe String)</TD+> i (Maybe String)</TD ></TR ><TR ><TD CLASS="s8"@@ -854,11 +872,11 @@ >extracted</A > :: (<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; a) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; a) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> a</TD+> i a</TD ></TR ></TABLE ></TD@@ -883,19 +901,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t%3ACFilter" ></A ><B >CFilter</B-> = <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i = <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->]</TD+> i]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#CFilter"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >All document transformations are <EM@@ -954,39 +982,69 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Akeep" ></A ><B >keep</B > :: a -&gt; [a]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#keep"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Anone" ></A ><B >none</B-> :: a -&gt; [a]</TD+> :: a -&gt; [b]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#none"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Achildren" ></A ><B >children</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#children"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Throw away current node, keep just the (unprocessed) children.@@ -997,17 +1055,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aposition" ></A ><B >position</B > :: Int -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#position"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Select the <TT@@ -1058,49 +1126,82 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aelm" ></A ><B >elm</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#elm"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Atxt" ></A ><B >txt</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#txt"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Atag" ></A ><B >tag</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#tag"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aattr" ></A ><B@@ -1109,14 +1210,24 @@ >Name</A > -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#attr"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aattrval" ></A ><B@@ -1125,22 +1236,39 @@ >Attribute</A > -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#attrval"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AtagWith" ></A ><B >tagWith</B > :: (String -&gt; Bool) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#tagWith"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -1157,17 +1285,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Afind" ></A ><B >find</B > :: String -&gt; (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#find"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >For a mandatory attribute field, <TT@@ -1186,19 +1324,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aiffind" ></A ><B >iffind</B > :: String -&gt; (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#iffind"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >When an attribute field may be absent, use <TT@@ -1217,19 +1365,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AifTxt" ></A ><B >ifTxt</B > :: (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#ifTxt"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" ><TT@@ -1269,19 +1427,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ao" ></A ><B >o</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#o"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Sequential (<EM@@ -1296,13 +1464,23 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aunion" ></A ><B >union</B > :: (a -&gt; [b]) -&gt; (a -&gt; [b]) -&gt; a -&gt; [b]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#union"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Binary parallel composition.  Each filter uses a copy of the input,@@ -1315,13 +1493,23 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Acat" ></A ><B >cat</B > :: [a -&gt; [b]] -&gt; a -&gt; [b]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#cat"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Glue a list of filters together.  (A list version of union;@@ -1333,13 +1521,23 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AandThen" ></A ><B >andThen</B > :: (a -&gt; c) -&gt; (c -&gt; a -&gt; b) -&gt; a -&gt; b</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#andThen"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >A special form of filter composition where the second filter@@ -1352,13 +1550,23 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3A%7C%3E%7C" ></A ><B >(|&gt;|)</B > :: (a -&gt; [b]) -&gt; (a -&gt; [b]) -&gt; a -&gt; [b]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#%7C%3E%7C"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Directional choice:@@ -1372,19 +1580,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Awith" ></A ><B >with</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#with"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Pruning: in <TT@@ -1402,19 +1620,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Awithout" ></A ><B >without</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#without"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Pruning: in <TT@@ -1432,19 +1660,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3A%2F%3E" ></A ><B >(/&gt;)</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#%2F%3E"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Pronounced <EM@@ -1459,19 +1697,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3A%3C%2F" ></A ><B >(&lt;/)</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#%3C%2F"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Pronounced <EM@@ -1486,19 +1734,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aet" ></A ><B >et</B > :: (String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#et"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Join an element-matching filter with a text-only filter@@ -1509,17 +1767,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Apath" ></A ><B >path</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#path"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Express a list of filters like an XPath query, e.g.@@ -1565,49 +1833,79 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Adeep" ></A ><B >deep</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#deep"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Adeepest" ></A ><B >deepest</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#deepest"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Amulti" ></A ><B >multi</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#multi"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -1624,19 +1922,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Awhen" ></A ><B >when</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#when"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Interior editing:@@ -1659,19 +1967,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aguards" ></A ><B >guards</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#guards"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Interior editing:@@ -1694,17 +2012,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Achip" ></A ><B >chip</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#chip"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Process CHildren In Place.  The filter is applied to any children@@ -1716,17 +2044,59 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Ainplace"+></A+><B+>inplace</B+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#inplace"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Process an element In Place.  The filter is applied to the element+   itself, and then the original element rebuilt around the results.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AfoldXml" ></A ><B >foldXml</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#foldXml"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Recursive application of filters: a fold-like operator.  Defined@@ -1755,17 +2125,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AmkElem" ></A ><B >mkElem</B > :: String -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#mkElem"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Build an element with the given tag name - its content is the results@@ -1777,19 +2157,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AmkElemAttr" ></A ><B >mkElemAttr</B > :: String -&gt; [(String, <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#mkElemAttr"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Build an element with the given name, attributes, and content.@@ -1800,15 +2190,25 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aliteral" ></A ><B >literal</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#literal"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Build some textual content.@@ -1819,15 +2219,25 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Acdata" ></A ><B >cdata</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#cdata"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Build some CDATA content.@@ -1838,18 +2248,28 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AreplaceTag" ></A ><B >replaceTag</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#replaceTag"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc"->Rename an element tag.+>Rename an element tag (leaving attributes in place). </TD ></TR ><TR@@ -1857,18 +2277,28 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AreplaceAttrs" ></A ><B >replaceAttrs</B > :: [(String, String)] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#replaceAttrs"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc"->Replace the attributes of an element.+>Replace the attributes of an element (leaving tag the same). </TD ></TR ><TR@@ -1905,7 +2335,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3AThenElse"@@ -1913,7 +2346,14 @@ ><B >ThenElse</B > a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#ThenElse"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -1950,7 +2390,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3A%3F%3E" ></A ><B@@ -1958,7 +2401,14 @@ > :: (a -&gt; [b]) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3AThenElse" >ThenElse</A > (a -&gt; [b]) -&gt; a -&gt; [b]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#%3F%3E"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Select between the two branches of a joined conditional.@@ -1980,19 +2430,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t%3ALabelFilter" ></A ><B >LabelFilter</B-> a = <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i a = <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; [(a, <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; [(a, <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->)]</TD+> i)]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#LabelFilter"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >A LabelFilter is like a CFilter except that it pairs up a polymorphic@@ -2015,19 +2475,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aoo" ></A ><B >oo</B > :: (a -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> a -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i a -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#oo"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Compose a label-processing filter with a label-generating filter.@@ -2038,28 +2508,45 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ax" ></A ><B >x</B > :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> a) -&gt; (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i a) -&gt; (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> b) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i b) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> (a, b)</TD+> i (a, b)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#x"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Combine labels.  Think of this as a pair-wise zip on labels.+   e.g. <TT+>(numbered <TT+><A HREF="Text-XML-HaXml-Combinators.html#v%3Ax"+>x</A+></TT+> tagged)</TT+> </TD ></TR ><TR@@ -2078,17 +2565,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Anumbered" ></A ><B >numbered</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#numbered"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Number the results from 1 upwards.@@ -2099,17 +2596,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ainterspersed" ></A ><B >interspersed</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#interspersed"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >In <TT@@ -2129,17 +2636,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Atagged" ></A ><B >tagged</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#tagged"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Label each element in the result with its tag name.  Non-element@@ -2151,17 +2668,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aattributed" ></A ><B >attributed</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> String</TD+> i String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#attributed"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Label each element in the result with the value of the named attribute.@@ -2174,17 +2701,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Atextlabelled" ></A ><B >textlabelled</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> (Maybe String)</TD+> i (Maybe String)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#textlabelled"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Label each textual part of the result with its text.  Element@@ -2196,18 +2733,28 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aextracted" ></A ><B >extracted</B > :: (<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; a) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; a) -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter" >LabelFilter</A-> a</TD+> i a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Combinators.html#extracted"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="doc"
docs/HaXml/Text-XML-HaXml-DtdToHaskell-Convert.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/Convert.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -85,7 +89,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Adtd2TypeDef" ></A ><B@@ -95,6 +102,13 @@ >] -&gt; [<A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3ATypeDef" >TypeDef</A >]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/Convert.html#dtd2TypeDef"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="s15"
docs/HaXml/Text-XML-HaXml-DtdToHaskell-Instance.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/Instance.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -97,7 +101,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AmkInstance" ></A ><B@@ -105,6 +112,13 @@ > :: <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3ATypeDef" >TypeDef</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/Instance.html#mkInstance"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="doc"
docs/HaXml/Text-XML-HaXml-DtdToHaskell-TypeDef.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -458,7 +462,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3ATypeDef"@@ -466,7 +473,14 @@ ><B >TypeDef</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#TypeDef"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -538,7 +552,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t%3AConstructors"@@ -550,13 +567,23 @@ >, [<A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AStructType" >StructType</A >])]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#Constructors"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t%3AAttrFields"@@ -568,13 +595,23 @@ >, <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AStructType" >StructType</A >)]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#AttrFields"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3AStructType"@@ -582,7 +619,14 @@ ><B >StructType</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#StructType"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -747,7 +791,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AppTypeDef" ></A ><B@@ -755,13 +802,23 @@ > :: <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3ATypeDef" >TypeDef</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#ppTypeDef"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AppHName" ></A ><B@@ -769,7 +826,14 @@ > :: <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#ppHName"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Pretty print Haskell name.@@ -780,7 +844,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AppXName" ></A ><B@@ -788,7 +855,14 @@ > :: <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#ppXName"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Pretty print XML name.@@ -799,7 +873,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AppAName" ></A ><B@@ -807,7 +884,14 @@ > :: <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#ppAName"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Pretty print Haskell attributes name.@@ -829,7 +913,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3AName"@@ -837,7 +924,14 @@ ><B >Name</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#Name"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -921,7 +1015,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aname" ></A ><B@@ -929,10 +1026,17 @@ > :: String -&gt; <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#name"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc"->Make a name valid in both XML and Haskell.+>Make a type name valid in both XML and Haskell. </TD ></TR ><TR@@ -940,7 +1044,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aname_" ></A ><B@@ -948,7 +1055,14 @@ > :: String -&gt; <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#name_"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Append an underscore to the Haskell version of the name.@@ -959,7 +1073,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aname_a" ></A ><B@@ -967,7 +1084,14 @@ > :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#name_a"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Prefix an attribute enumeration type name with its containing element@@ -979,7 +1103,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aname_ac" ></A ><B@@ -987,7 +1114,14 @@ > :: String -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#name_ac"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Prefix an attribute enumeration constructor with its element-tag name,@@ -999,7 +1133,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aname_f" ></A ><B@@ -1007,7 +1144,14 @@ > :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName" >Name</A ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#name_f"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Prefix a field name with its enclosing element name.@@ -1018,13 +1162,23 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Amangle" ></A ><B >mangle</B > :: String -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#mangle"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >Convert an XML name to a Haskell conid.@@ -1035,12 +1189,22 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Amanglef" ></A ><B >manglef</B > :: String -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/DtdToHaskell/TypeDef.html#manglef"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="doc"
docs/HaXml/Text-XML-HaXml-Escape.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Escape.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -75,7 +79,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AxmlEscape" ></A ><B@@ -84,16 +91,26 @@ >XmlEscaper</A > -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+> i -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Escape.html#xmlEscape"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AxmlUnEscape" ></A ><B@@ -102,16 +119,82 @@ >XmlEscaper</A > -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+> i -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Escape.html#xmlUnEscape"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxmlEscapeContent"+></A+><B+>xmlEscapeContent</B+> :: <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper"+>XmlEscaper</A+> -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i] -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Escape.html#xmlEscapeContent"+>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%3AxmlUnEscapeContent"+></A+><B+>xmlUnEscapeContent</B+> :: <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper"+>XmlEscaper</A+> -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i] -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Escape.html#xmlUnEscapeContent"+>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%3AXmlEscaper"@@ -119,7 +202,14 @@ ><B >XmlEscaper</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Escape.html#XmlEscaper"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -131,7 +221,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AstdXmlEscaper" ></A ><B@@ -139,19 +232,36 @@ > :: <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper" >XmlEscaper</A ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Escape.html#stdXmlEscaper"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AmkXmlEscaper" ></A ><B >mkXmlEscaper</B > :: [(Char, String)] -&gt; (Char -&gt; Bool) -&gt; <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper" >XmlEscaper</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Escape.html#mkXmlEscaper"+>Source</A+></TD+></TR+></TABLE ></TD ></TR ><TR
− docs/HaXml/Text-XML-HaXml-Haskell2Xml.html
@@ -1,1176 +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.HaXml.Haskell2Xml</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->HaXml</TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HaXml.Haskell2Xml</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"-><B->Contents</B-></TD-></TR-><TR-><TD-><DL-><DT-><A HREF="#1"->Re-export the entire set of XML type definitions-</A-></DT-><DT-><A HREF="#2"->The class Haskell2Xml-</A-></DT-><DD-><DL-><DT-><A HREF="#3"->Conversion functions-</A-></DT-><DT-><A HREF="#4"->IO conversion functions-</A-></DT-></DL-></DD-><DT-><A HREF="#5"->Auxiliary types-</A-></DT-></DL-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->The class <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-></TT-> is a replacement for Read and Show: it provides-   textual conversions (to and from an XML representation) for your-   Haskell data values.  Use the tool-   DrIFT to derive this class for your own datatypes, then-   include this module where you want to use the facilities.-</P-><P->The methods <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoContents"->toContents</A-></TT-> and <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfromContents"->fromContents</A-></TT-> convert a value to and from-   a generic internal representation of an XML document <EM->without</EM-> a DTD.-   The functions <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoXml"->toXml</A-></TT-> and <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfromXml"->fromXml</A-></TT-> convert a value to and from a generic-   internal representation of an XML document <EM->including</EM-> a DTD.-   The functions <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AreadXml"->readXml</A-></TT-> and <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AshowXml"->showXml</A-></TT-> convert to and from Strings.-   The functions <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfReadXml"->fReadXml</A-></TT-> and <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfWriteXml"->fWriteXml</A-></TT-> do the conversion to and from-   the given filenames.-   The functions <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AhGetXml"->hGetXml</A-></TT-> and <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AhPutXml"->hPutXml</A-></TT-> do the conversion to and from-   the given file handles.-   (See the type signatures.)-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HaXml-Types.html"->Text.XML.HaXml.Types</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="#t%3AHaskell2Xml"->Haskell2Xml</A-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoHType"->toHType</A-> :: a -&gt; <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoContents"->toContents</A-> :: a -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->]</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromContents"->fromContents</A-> :: [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->] -&gt; (a, [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxToChar"->xToChar</A-> :: a -&gt; Char</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxFromChar"->xFromChar</A-> :: Char -&gt; a</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoXml"->toXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoDTD"->toDTD</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromXml"->fromXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-> -&gt; a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AreadXml"->readXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; String -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AshowXml"->showXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; a -&gt; String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfReadXml"->fReadXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; FilePath -&gt; IO a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfWriteXml"->fWriteXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhGetXml"->hGetXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; Handle -&gt; IO a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhPutXml"->hPutXml</A-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; Handle -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AHType"->HType</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AMaybe"->Maybe</A-> <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AList"->List</A-> <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ATuple"->Tuple</A-> [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->]</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3APrim"->Prim</A-> String String</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ADefined"->Defined</A-> String [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->] [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AConstr"->Constr</A->]</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AConstr"->Constr</A->  = <A HREF="#v%3AConstr"->Constr</A-> String [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->] [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->]</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="1"->Re-export the entire set of XML type definitions-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HaXml-Types.html"->Text.XML.HaXml.Types</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="2"->The class Haskell2Xml-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A NAME="t%3AHaskell2Xml"-></A-><B->Haskell2Xml</B-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->A class to convert any Haskell value to and from an XML representation.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"->Methods</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A NAME="v%3AtoHType"-></A-><B->toHType</B-> :: a -&gt; <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-></TR-><TR-><TD CLASS="doc"->Determine the type of the Haskell value (to create a DTD).-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoContents"-></A-><B->toContents</B-> :: a -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->]</TD-></TR-><TR-><TD CLASS="doc"->Convert the Haskell value to a generic XML value.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfromContents"-></A-><B->fromContents</B-> :: [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->] -&gt; (a, [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="doc"->Parse a Haskell value from a generic XML representation, returning-   the value and the remainder of the XML.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AxToChar"-></A-><B->xToChar</B-> :: a -&gt; Char</TD-></TR-><TR-><TD CLASS="doc"->This function is a dummy for most types: it is used <EM->only</EM-> in-   the Char instance for coercing lists of Char into String.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AxFromChar"-></A-><B->xFromChar</B-> :: Char -&gt; a</TD-></TR-><TR-><TD CLASS="doc"->This function is a dummy for most types: it is used <EM->only</EM-> in-   the Char instance for coercing lists of Char into String.-</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Haskell2Xml')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Haskell2Xml" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> Bool</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> Char</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> Double</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> Float</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> Int</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> Integer</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> ()</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a, <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> b) =&gt; <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> (a, b)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> (Maybe a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> [a]</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a, <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> b) =&gt; <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> (Either a b)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="3"->Conversion functions-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoXml"-></A-><B->toXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-></TD-></TR-><TR-><TD CLASS="doc"->Convert any Haskell value to an XML document, including both DTD and-   content.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoDTD"-></A-><B->toDTD</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A-></TD-></TR-><TR-><TD CLASS="doc"-><TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoDTD"->toDTD</A-></TT-> converts a concrete representation of the Haskell type of-   a value (obtained by the method <TT-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoHType"->toHType</A-></TT->) into a real DocTypeDecl.-   It ensures that PERefs are defined before they are used, and that no-   element or attribute-list is declared more than once.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfromXml"-></A-><B->fromXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-> -&gt; a</TD-></TR-><TR-><TD CLASS="doc"->Read a Haskell value from an XML document, ignoring the DTD and-   using the Haskell result type to determine how to parse it.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AreadXml"-></A-><B->readXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; String -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="doc"->Convert an XML document encoded as a String, into a Haskell value.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AshowXml"-></A-><B->showXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; a -&gt; String</TD-></TR-><TR-><TD CLASS="doc"->Convert a Haskell value to an XML document, encoded as a String.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="4"->IO conversion functions-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfReadXml"-></A-><B->fReadXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; FilePath -&gt; IO a</TD-></TR-><TR-><TD CLASS="doc"->Read a Haskell value from an XML document stored in a file.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfWriteXml"-></A-><B->fWriteXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="doc"->Write a Haskell value to the given file as an XML document.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AhGetXml"-></A-><B->hGetXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; Handle -&gt; IO a</TD-></TR-><TR-><TD CLASS="doc"->Read a Haskell value from an XML document transmitted through the-   given Handle.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AhPutXml"-></A-><B->hPutXml</B-> :: <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Haskell2Xml</A-> a =&gt; Handle -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="doc"->Write a Haskell value to the given Handle as an XML document.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="5"->Auxiliary types-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AHType"-></A-><B->HType</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->A concrete representation of any Haskell type.-</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%3AMaybe"-></A-><B->Maybe</B-> <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AList"-></A-><B->List</B-> <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATuple"-></A-><B->Tuple</B-> [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3APrim"-></A-><B->Prim</B-> String String</TD-><TD CLASS="rdoc"->separate Haskell name and Xml name-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AString"-></A-><B->String</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ADefined"-></A-><B->Defined</B-> String [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->] [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AConstr"->Constr</A->]</TD-><TD CLASS="rdoc"->A user-defined type has a name, a sequence of type variables,-   and a set of constructors.-</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:HType')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:HType" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-></TR-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AConstr"-></A-><B->Constr</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->A concrete representation of any user-defined Haskell constructor.-   The constructor has a name, and a sequence of component types.  The-   first sequence of types represents the minimum set of free type-   variables occurring in the (second) list of real component types.-</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%3AConstr"-></A-><B->Constr</B-> String [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->] [<A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->HType</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Constr')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Constr" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AConstr"->Constr</A-></TD-></TR-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AConstr"->Constr</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 0.8</TD-></TR-></TABLE-></BODY-></HTML->
docs/HaXml/Text-XML-HaXml-Html-Generate.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -148,9 +152,9 @@ >html</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -162,9 +166,9 @@ >hhead</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -176,9 +180,9 @@ >htitle</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -190,9 +194,9 @@ >hbody</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -204,9 +208,9 @@ >h1</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -218,9 +222,9 @@ >h2</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -232,9 +236,9 @@ >h3</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -246,9 +250,9 @@ >h4</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -260,9 +264,9 @@ >hpara</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -274,9 +278,9 @@ >hdiv</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -288,9 +292,9 @@ >hspan</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -302,9 +306,9 @@ >margin</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -316,11 +320,11 @@ >anchor</A > :: [(String, <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -332,11 +336,11 @@ >makehref</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -348,11 +352,11 @@ >anchorname</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -364,9 +368,9 @@ >hpre</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -378,9 +382,9 @@ >hcentre</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -392,9 +396,9 @@ >hem</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -406,9 +410,9 @@ >htt</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -420,9 +424,9 @@ >hbold</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -434,9 +438,9 @@ >parens</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -448,9 +452,9 @@ >bullet</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -462,9 +466,9 @@ >htable</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -476,9 +480,9 @@ >hrow</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -490,9 +494,9 @@ >hcol</A > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -504,7 +508,7 @@ >hbr</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -516,7 +520,7 @@ >hhr</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -528,7 +532,7 @@ >showattr</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -540,7 +544,7 @@ >(!)</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -552,7 +556,7 @@ >(?)</A > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -564,7 +568,7 @@ >htmlprint</A > :: [<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->] -&gt; Doc</TD+> i] -&gt; Doc</TD ></TR ></TABLE ></TD@@ -600,193 +604,313 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahtml" ></A ><B >html</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#html"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahhead" ></A ><B >hhead</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hhead"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahtitle" ></A ><B >htitle</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#htitle"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahbody" ></A ><B >hbody</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hbody"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ah1" ></A ><B >h1</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#h1"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ah2" ></A ><B >h2</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#h2"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ah3" ></A ><B >h3</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#h3"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ah4" ></A ><B >h4</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#h4"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahpara" ></A ><B >hpara</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hpara"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahdiv" ></A ><B >hdiv</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hdiv"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahspan" ></A ><B >hspan</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hspan"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Amargin" ></A ><B >margin</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#margin"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -803,55 +927,85 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aanchor" ></A ><B >anchor</B > :: [(String, <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i)] -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#anchor"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Amakehref" ></A ><B >makehref</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#makehref"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aanchorname" ></A ><B >anchorname</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#anchorname"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -868,113 +1022,183 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahpre" ></A ><B >hpre</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hpre"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahcentre" ></A ><B >hcentre</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hcentre"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahem" ></A ><B >hem</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hem"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahtt" ></A ><B >htt</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#htt"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahbold" ></A ><B >hbold</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hbold"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aparens" ></A ><B >parens</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#parens"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Abullet" ></A ><B >bullet</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#bullet"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -991,49 +1215,79 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahtable" ></A ><B >htable</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#htable"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahrow" ></A ><B >hrow</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hrow"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahcol" ></A ><B >hcol</B > :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i] -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hcol"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -1050,29 +1304,49 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahbr" ></A ><B >hbr</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hbr"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahhr" ></A ><B >hhr</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#hhr"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -1089,43 +1363,73 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ashowattr" ></A ><B >showattr</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#showattr"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3A%21" ></A ><B >(!)</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#%21"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3A%3F" ></A ><B >(?)</B > :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#%3F"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -1142,14 +1446,24 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Ahtmlprint" ></A ><B >htmlprint</B > :: [<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->] -&gt; Doc</TD+> i] -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Generate.html#htmlprint"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="s15"
docs/HaXml/Text-XML-HaXml-Html-Parse.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Html/Parse.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -92,6 +96,8 @@ >htmlParse</A > :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument" >Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A ></TD ></TR ></TABLE@@ -110,20 +116,32 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AhtmlParse" ></A ><B >htmlParse</B > :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument" >Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Parse.html#htmlParse"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >The first argument is the name of the file, the second is the string    contents of the file.  The result is the generic representation of-   an XML document.+   an XML document.  Any errors cause program failure with message to stderr. </TD ></TR ><TR
+ docs/HaXml/Text-XML-HaXml-Html-ParseLazy.html view
@@ -0,0 +1,160 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.Html.ParseLazy</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Html/ParseLazy.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.Html.ParseLazy</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>This is a parser for HTML documents.  Unlike for XML documents, it+   must include a certain amount of error-correction to account for+   HTML features like self-terminating tags, unterminated tags, and+   incorrect nesting.  The input is tokenised by the+   XML lexer (a separate lexer is not required for HTML).+</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%3AhtmlParse"+>htmlParse</A+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</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%3AhtmlParse"+></A+><B+>htmlParse</B+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/ParseLazy.html#htmlParse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>The first argument is the name of the file, the second is the string+   contents of the file.  The result is the generic representation of+   an XML document.  Any errors cause program failure with message to stderr.+</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+>
docs/HaXml/Text-XML-HaXml-Html-Pretty.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Html/Pretty.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -85,35 +89,58 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Adocument" ></A ><B >document</B > :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocument" >Document</A-> -&gt; Doc</TD+> i -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Pretty.html#document"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aelement" ></A ><B >element</B > :: <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; Doc</TD+> i -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Pretty.html#element"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aattribute" ></A ><B@@ -121,20 +148,37 @@ > :: <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute" >Attribute</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Pretty.html#attribute"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Acontent" ></A ><B >content</B > :: <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; Doc</TD+> i -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Html/Pretty.html#content"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="s15"
docs/HaXml/Text-XML-HaXml-Lex.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Lex.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -67,7 +71,7 @@ ></DT ><DT ><A HREF="#2"->Token and position types+>Token types </A ></DT ></DL@@ -145,7 +149,7 @@ ><TD CLASS="decl" ><A HREF="#v%3AxmlReLex" >xmlReLex</A-> :: <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn" >Posn</A > -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Lex.html#t%3AToken" >Token</A@@ -157,13 +161,13 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3AposInNewCxt"->posInNewCxt</A-> :: String -&gt; Maybe <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"->Posn</A-> -&gt; <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+><A HREF="#v%3AreLexEntityValue"+>reLexEntityValue</A+> :: (String -&gt; Maybe String) -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn" >Posn</A-></TD+> -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Lex.html#t%3AToken"+>Token</A+>]</TD ></TR ><TR ><TD CLASS="s8"@@ -175,7 +179,7 @@ >type</SPAN > <A HREF="#t%3AToken" >Token</A-> = Either String (<A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+> = (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn" >Posn</A >, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT" >TokenT</A@@ -187,22 +191,6 @@ ></TR ><TR ><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3APosn"->Posn</A->  = <A HREF="#v%3APn"->Pn</A-> String !Int !Int (Maybe <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"->Posn</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl"@@ -405,6 +393,12 @@ >TokNull</A ></TD ></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ATokError"+>TokError</A+> String</TD+></TR ></TABLE ></TD ></TR@@ -530,7 +524,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AxmlLex" ></A ><B@@ -538,7 +535,14 @@ > :: String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Lex.html#t%3AToken" >Token</A >]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Lex.html#xmlLex"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >The first argument to <TT@@ -555,17 +559,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AxmlReLex" ></A ><B >xmlReLex</B-> :: <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn" >Posn</A > -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Lex.html#t%3AToken" >Token</A >]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Lex.html#xmlReLex"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" ><TT@@ -581,29 +595,38 @@ ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3AposInNewCxt"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AreLexEntityValue" ></A ><B->posInNewCxt</B-> :: String -&gt; Maybe <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"->Posn</A-> -&gt; <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+>reLexEntityValue</B+> :: (String -&gt; Maybe String) -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn" >Posn</A+> -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Lex.html#t%3AToken"+>Token</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Lex.html#reLexEntityValue"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" ><TT->posInNewCxt name pos</TT-> creates a new source position from an old one.-   It is used when opening a new file (e.g. a DTD inclusion), to denote-   the start of the file <TT->name</TT->, but retain the stacked information that-   it was included from the old <TT->pos</TT->.+><A HREF="Text-XML-HaXml-Lex.html#v%3AreLexEntityValue"+>reLexEntityValue</A+></TT+> is used solely within parsing an entityvalue.+   Normally, a PERef is logically separated from its surroundings by+   whitespace.  But in an entityvalue, a PERef can be juxtaposed to+   an identifier, so the expansion forms a new identifier.+   Thus the need to rescan the whole text for possible PERefs. </TD ></TR ><TR@@ -613,7 +636,7 @@ ><TR ><TD CLASS="section1" ><A NAME="2"->Token and position types+>Token types </A ></TD ></TR@@ -622,25 +645,35 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t%3AToken" ></A ><B >Token</B-> = Either String (<A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+> = (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn" >Posn</A >, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT" >TokenT</A >)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Lex.html#Token"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >All tokens are paired up with a source position.-   Lexical errors are passed back through the <TT->Either</TT-> type.+   Lexical errors are passed back as a special <TT+>TokenT</TT+> value. </TD ></TR ><TR@@ -648,91 +681,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN-> <A NAME="t%3APosn"+> <A NAME="t%3ATokenT" ></A ><B->Posn</B+>TokenT</B > </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->Source positions contain a filename, line, column, and an-   inclusion point, which is itself another source position,-   recursively.-</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%3APn"-></A-><B->Pn</B-> String !Int !Int (Maybe <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"->Posn</A->)</TD-><TD CLASS="rdoc"+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Lex.html#TokenT"+>Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Posn')" ALT="show/hide"-> Instances</TD-></TR-><TR ><TD CLASS="body"-><DIV ID="i:Posn" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"->Posn</A-></TD-></TR-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"->Posn</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ATokenT"-></A-><B->TokenT</B-> </TD-></TR-><TR-><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc"@@ -1097,6 +1066,17 @@ >fake token </TD ></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokError"+></A+><B+>TokError</B+> String</TD+><TD CLASS="rdoc"+>lexical error+</TD+></TR ></TABLE ></TD ></TR@@ -1133,7 +1113,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3ASpecial"@@ -1141,7 +1124,14 @@ ><B >Special</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Lex.html#Special"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -1238,7 +1228,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3ASection"@@ -1246,6 +1239,13 @@ ><B >Section</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Lex.html#Section"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="body"
docs/HaXml/Text-XML-HaXml-OneOfN.html view
@@ -21,3748 +21,4512 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HaXml.OneOfN</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-></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="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf2"-></A-><B->OneOf2</B-> a b</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf2"-></A-><B->OneOf2</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf2"-></A-><B->TwoOf2</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf2')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf2" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"->OneOf2</A-> a b)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"->OneOf2</A-> a b)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"->OneOf2</A-> a b)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf3"-></A-><B->OneOf3</B-> a b c</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf3"-></A-><B->OneOf3</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf3"-></A-><B->TwoOf3</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf3"-></A-><B->ThreeOf3</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf3')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf3" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"->OneOf3</A-> a b c)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"->OneOf3</A-> a b c)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"->OneOf3</A-> a b c)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf4"-></A-><B->OneOf4</B-> a b c d</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf4"-></A-><B->OneOf4</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf4"-></A-><B->TwoOf4</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf4"-></A-><B->ThreeOf4</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf4"-></A-><B->FourOf4</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf4')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf4" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"->OneOf4</A-> a b c d)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"->OneOf4</A-> a b c d)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"->OneOf4</A-> a b c d)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf5"-></A-><B->OneOf5</B-> a b c d e</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf5"-></A-><B->OneOf5</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf5"-></A-><B->TwoOf5</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf5"-></A-><B->ThreeOf5</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf5"-></A-><B->FourOf5</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf5"-></A-><B->FiveOf5</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf5')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf5" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"->OneOf5</A-> a b c d e)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"->OneOf5</A-> a b c d e)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"->OneOf5</A-> a b c d e)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf6"-></A-><B->OneOf6</B-> a b c d e f</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf6"-></A-><B->OneOf6</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf6"-></A-><B->TwoOf6</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf6"-></A-><B->ThreeOf6</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf6"-></A-><B->FourOf6</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf6"-></A-><B->FiveOf6</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf6"-></A-><B->SixOf6</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf6')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf6" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"->OneOf6</A-> a b c d e f)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"->OneOf6</A-> a b c d e f)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"->OneOf6</A-> a b c d e f)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf7"-></A-><B->OneOf7</B-> a b c d e f g</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf7"-></A-><B->OneOf7</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf7"-></A-><B->TwoOf7</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf7"-></A-><B->ThreeOf7</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf7"-></A-><B->FourOf7</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf7"-></A-><B->FiveOf7</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf7"-></A-><B->SixOf7</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf7"-></A-><B->SevenOf7</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf7')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf7" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"->OneOf7</A-> a b c d e f g)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"->OneOf7</A-> a b c d e f g)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"->OneOf7</A-> a b c d e f g)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf8"-></A-><B->OneOf8</B-> a b c d e f g h</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf8"-></A-><B->OneOf8</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf8"-></A-><B->TwoOf8</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf8"-></A-><B->ThreeOf8</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf8"-></A-><B->FourOf8</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf8"-></A-><B->FiveOf8</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf8"-></A-><B->SixOf8</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf8"-></A-><B->SevenOf8</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf8"-></A-><B->EightOf8</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf8')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf8" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"->OneOf8</A-> a b c d e f g h)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"->OneOf8</A-> a b c d e f g h)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"->OneOf8</A-> a b c d e f g h)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf9"-></A-><B->OneOf9</B-> a b c d e f g h i</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf9"-></A-><B->OneOf9</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf9"-></A-><B->TwoOf9</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf9"-></A-><B->ThreeOf9</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf9"-></A-><B->FourOf9</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf9"-></A-><B->FiveOf9</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf9"-></A-><B->SixOf9</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf9"-></A-><B->SevenOf9</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf9"-></A-><B->EightOf9</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf9"-></A-><B->NineOf9</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf9')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf9" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"->OneOf9</A-> a b c d e f g h i)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"->OneOf9</A-> a b c d e f g h i)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"->OneOf9</A-> a b c d e f g h i)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf10"-></A-><B->OneOf10</B-> a b c d e f g h i j</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf10"-></A-><B->OneOf10</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf10"-></A-><B->TwoOf10</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf10"-></A-><B->ThreeOf10</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf10"-></A-><B->FourOf10</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf10"-></A-><B->FiveOf10</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf10"-></A-><B->SixOf10</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf10"-></A-><B->SevenOf10</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf10"-></A-><B->EightOf10</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf10"-></A-><B->NineOf10</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf10"-></A-><B->TenOf10</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf10')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf10" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"->OneOf10</A-> a b c d e f g h i j)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"->OneOf10</A-> a b c d e f g h i j)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"->OneOf10</A-> a b c d e f g h i j)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf11"-></A-><B->OneOf11</B-> a b c d e f g h i j k</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf11"-></A-><B->OneOf11</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf11"-></A-><B->TwoOf11</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf11"-></A-><B->ThreeOf11</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf11"-></A-><B->FourOf11</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf11"-></A-><B->FiveOf11</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf11"-></A-><B->SixOf11</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf11"-></A-><B->SevenOf11</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf11"-></A-><B->EightOf11</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf11"-></A-><B->NineOf11</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf11"-></A-><B->TenOf11</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf11"-></A-><B->ElevenOf11</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf11')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf11" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"->OneOf11</A-> a b c d e f g h i j k)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"->OneOf11</A-> a b c d e f g h i j k)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"->OneOf11</A-> a b c d e f g h i j k)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf12"-></A-><B->OneOf12</B-> a b c d e f g h i j k l</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf12"-></A-><B->OneOf12</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf12"-></A-><B->TwoOf12</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf12"-></A-><B->ThreeOf12</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf12"-></A-><B->FourOf12</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf12"-></A-><B->FiveOf12</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf12"-></A-><B->SixOf12</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf12"-></A-><B->SevenOf12</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf12"-></A-><B->EightOf12</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf12"-></A-><B->NineOf12</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf12"-></A-><B->TenOf12</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf12"-></A-><B->ElevenOf12</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf12"-></A-><B->TwelveOf12</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf12')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf12" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"->OneOf12</A-> a b c d e f g h i j k l)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"->OneOf12</A-> a b c d e f g h i j k l)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"->OneOf12</A-> a b c d e f g h i j k l)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf13"-></A-><B->OneOf13</B-> a b c d e f g h i j k l m</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf13"-></A-><B->OneOf13</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf13"-></A-><B->TwoOf13</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf13"-></A-><B->ThreeOf13</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf13"-></A-><B->FourOf13</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf13"-></A-><B->FiveOf13</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf13"-></A-><B->SixOf13</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf13"-></A-><B->SevenOf13</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf13"-></A-><B->EightOf13</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf13"-></A-><B->NineOf13</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf13"-></A-><B->TenOf13</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf13"-></A-><B->ElevenOf13</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf13"-></A-><B->TwelveOf13</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf13"-></A-><B->ThirteenOf13</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf13')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf13" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"->OneOf13</A-> a b c d e f g h i j k l m)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"->OneOf13</A-> a b c d e f g h i j k l m)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"->OneOf13</A-> a b c d e f g h i j k l m)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf14"-></A-><B->OneOf14</B-> a b c d e f g h i j k l m n</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf14"-></A-><B->OneOf14</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf14"-></A-><B->TwoOf14</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf14"-></A-><B->ThreeOf14</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf14"-></A-><B->FourOf14</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf14"-></A-><B->FiveOf14</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf14"-></A-><B->SixOf14</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf14"-></A-><B->SevenOf14</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf14"-></A-><B->EightOf14</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf14"-></A-><B->NineOf14</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf14"-></A-><B->TenOf14</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf14"-></A-><B->ElevenOf14</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf14"-></A-><B->TwelveOf14</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf14"-></A-><B->ThirteenOf14</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourteenOf14"-></A-><B->FourteenOf14</B-> n</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf14')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf14" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"->OneOf14</A-> a b c d e f g h i j k l m n)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"->OneOf14</A-> a b c d e f g h i j k l m n)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"->OneOf14</A-> a b c d e f g h i j k l m n)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf15"-></A-><B->OneOf15</B-> a b c d e f g h i j k l m n o</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf15"-></A-><B->OneOf15</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf15"-></A-><B->TwoOf15</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf15"-></A-><B->ThreeOf15</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf15"-></A-><B->FourOf15</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf15"-></A-><B->FiveOf15</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf15"-></A-><B->SixOf15</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf15"-></A-><B->SevenOf15</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf15"-></A-><B->EightOf15</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf15"-></A-><B->NineOf15</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf15"-></A-><B->TenOf15</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf15"-></A-><B->ElevenOf15</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf15"-></A-><B->TwelveOf15</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf15"-></A-><B->ThirteenOf15</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourteenOf15"-></A-><B->FourteenOf15</B-> n</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFifteenOf15"-></A-><B->FifteenOf15</B-> o</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf15')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf15" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"->OneOf15</A-> a b c d e f g h i j k l m n o)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"->OneOf15</A-> a b c d e f g h i j k l m n o)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"->OneOf15</A-> a b c d e f g h i j k l m n o)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf16"-></A-><B->OneOf16</B-> a b c d e f g h i j k l m n o p</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf16"-></A-><B->OneOf16</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf16"-></A-><B->TwoOf16</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf16"-></A-><B->ThreeOf16</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf16"-></A-><B->FourOf16</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf16"-></A-><B->FiveOf16</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf16"-></A-><B->SixOf16</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf16"-></A-><B->SevenOf16</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf16"-></A-><B->EightOf16</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf16"-></A-><B->NineOf16</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf16"-></A-><B->TenOf16</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf16"-></A-><B->ElevenOf16</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf16"-></A-><B->TwelveOf16</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf16"-></A-><B->ThirteenOf16</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourteenOf16"-></A-><B->FourteenOf16</B-> n</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFifteenOf16"-></A-><B->FifteenOf16</B-> o</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixteenOf16"-></A-><B->SixteenOf16</B-> p</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf16')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf16" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"->OneOf16</A-> a b c d e f g h i j k l m n o p)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"->OneOf16</A-> a b c d e f g h i j k l m n o p)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"->OneOf16</A-> a b c d e f g h i j k l m n o p)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf17"-></A-><B->OneOf17</B-> a b c d e f g h i j k l m n o p q</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf17"-></A-><B->OneOf17</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf17"-></A-><B->TwoOf17</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf17"-></A-><B->ThreeOf17</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf17"-></A-><B->FourOf17</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf17"-></A-><B->FiveOf17</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf17"-></A-><B->SixOf17</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf17"-></A-><B->SevenOf17</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf17"-></A-><B->EightOf17</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf17"-></A-><B->NineOf17</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf17"-></A-><B->TenOf17</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf17"-></A-><B->ElevenOf17</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf17"-></A-><B->TwelveOf17</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf17"-></A-><B->ThirteenOf17</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourteenOf17"-></A-><B->FourteenOf17</B-> n</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFifteenOf17"-></A-><B->FifteenOf17</B-> o</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixteenOf17"-></A-><B->SixteenOf17</B-> p</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASeventeenOf17"-></A-><B->SeventeenOf17</B-> q</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf17')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf17" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"->OneOf17</A-> a b c d e f g h i j k l m n o p q)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"->OneOf17</A-> a b c d e f g h i j k l m n o p q)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"->OneOf17</A-> a b c d e f g h i j k l m n o p q)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf18"-></A-><B->OneOf18</B-> a b c d e f g h i j k l m n o p q r</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf18"-></A-><B->OneOf18</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf18"-></A-><B->TwoOf18</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf18"-></A-><B->ThreeOf18</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf18"-></A-><B->FourOf18</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf18"-></A-><B->FiveOf18</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf18"-></A-><B->SixOf18</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf18"-></A-><B->SevenOf18</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf18"-></A-><B->EightOf18</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf18"-></A-><B->NineOf18</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf18"-></A-><B->TenOf18</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf18"-></A-><B->ElevenOf18</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf18"-></A-><B->TwelveOf18</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf18"-></A-><B->ThirteenOf18</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourteenOf18"-></A-><B->FourteenOf18</B-> n</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFifteenOf18"-></A-><B->FifteenOf18</B-> o</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixteenOf18"-></A-><B->SixteenOf18</B-> p</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASeventeenOf18"-></A-><B->SeventeenOf18</B-> q</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEighteenOf18"-></A-><B->EighteenOf18</B-> r</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf18')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf18" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q, Eq r) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"->OneOf18</A-> a b c d e f g h i j k l m n o p q r)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q, Show r) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"->OneOf18</A-> a b c d e f g h i j k l m n o p q r)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> r) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"->OneOf18</A-> a b c d e f g h i j k l m n o p q r)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf19"-></A-><B->OneOf19</B-> a b c d e f g h i j k l m n o p q r s</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf19"-></A-><B->OneOf19</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf19"-></A-><B->TwoOf19</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf19"-></A-><B->ThreeOf19</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf19"-></A-><B->FourOf19</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf19"-></A-><B->FiveOf19</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf19"-></A-><B->SixOf19</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf19"-></A-><B->SevenOf19</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf19"-></A-><B->EightOf19</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf19"-></A-><B->NineOf19</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf19"-></A-><B->TenOf19</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf19"-></A-><B->ElevenOf19</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf19"-></A-><B->TwelveOf19</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf19"-></A-><B->ThirteenOf19</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourteenOf19"-></A-><B->FourteenOf19</B-> n</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFifteenOf19"-></A-><B->FifteenOf19</B-> o</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixteenOf19"-></A-><B->SixteenOf19</B-> p</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASeventeenOf19"-></A-><B->SeventeenOf19</B-> q</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEighteenOf19"-></A-><B->EighteenOf19</B-> r</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineteenOf19"-></A-><B->NineteenOf19</B-> s</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf19')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf19" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q, Eq r, Eq s) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"->OneOf19</A-> a b c d e f g h i j k l m n o p q r s)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q, Show r, Show s) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"->OneOf19</A-> a b c d e f g h i j k l m n o p q r s)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> r, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> s) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"->OneOf19</A-> a b c d e f g h i j k l m n o p q r s)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AOneOf20"-></A-><B->OneOf20</B-> a b c d e f g h i j k l m n o p q r s t</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AOneOf20"-></A-><B->OneOf20</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwoOf20"-></A-><B->TwoOf20</B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThreeOf20"-></A-><B->ThreeOf20</B-> c</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourOf20"-></A-><B->FourOf20</B-> d</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFiveOf20"-></A-><B->FiveOf20</B-> e</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixOf20"-></A-><B->SixOf20</B-> f</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASevenOf20"-></A-><B->SevenOf20</B-> g</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEightOf20"-></A-><B->EightOf20</B-> h</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineOf20"-></A-><B->NineOf20</B-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATenOf20"-></A-><B->TenOf20</B-> j</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AElevenOf20"-></A-><B->ElevenOf20</B-> k</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwelveOf20"-></A-><B->TwelveOf20</B-> l</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AThirteenOf20"-></A-><B->ThirteenOf20</B-> m</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFourteenOf20"-></A-><B->FourteenOf20</B-> n</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AFifteenOf20"-></A-><B->FifteenOf20</B-> o</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASixteenOf20"-></A-><B->SixteenOf20</B-> p</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASeventeenOf20"-></A-><B->SeventeenOf20</B-> q</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEighteenOf20"-></A-><B->EighteenOf20</B-> r</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANineteenOf20"-></A-><B->NineteenOf20</B-> s</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATwentyOf20"-></A-><B->TwentyOf20</B-> t</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf20')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:OneOf20" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q, Eq r, Eq s, Eq t) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"->OneOf20</A-> a b c d e f g h i j k l m n o p q r s t)</TD-></TR-><TR-><TD CLASS="decl"->(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q, Show r, Show s, Show t) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"->OneOf20</A-> a b c d e f g h i j k l m n o p q r s t)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> r, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> s, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> t) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"+><A HREF="src/Text/XML/HaXml/OneOfN.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.OneOfN</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></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"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf2"+></A+><B+>OneOf2</B+> a b</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf2"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf2"+></A+><B+>OneOf2</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf2"+></A+><B+>TwoOf2</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf2')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf2" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf3"+></A+><B+>OneOf3</B+> a b c</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf3"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf3"+></A+><B+>OneOf3</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf3"+></A+><B+>TwoOf3</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf3"+></A+><B+>ThreeOf3</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf3')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf3" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>OneOf3</A+> a b c)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>OneOf3</A+> a b c)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>OneOf3</A+> a b c)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>OneOf3</A+> a b c)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf4"+></A+><B+>OneOf4</B+> a b c d</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf4"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf4"+></A+><B+>OneOf4</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf4"+></A+><B+>TwoOf4</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf4"+></A+><B+>ThreeOf4</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf4"+></A+><B+>FourOf4</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf4')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf4" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>OneOf4</A+> a b c d)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>OneOf4</A+> a b c d)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>OneOf4</A+> a b c d)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>OneOf4</A+> a b c d)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf5"+></A+><B+>OneOf5</B+> a b c d e</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf5"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf5"+></A+><B+>OneOf5</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf5"+></A+><B+>TwoOf5</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf5"+></A+><B+>ThreeOf5</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf5"+></A+><B+>FourOf5</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf5"+></A+><B+>FiveOf5</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf5')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf5" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>OneOf5</A+> a b c d e)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>OneOf5</A+> a b c d e)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>OneOf5</A+> a b c d e)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>OneOf5</A+> a b c d e)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf6"+></A+><B+>OneOf6</B+> a b c d e f</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf6"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf6"+></A+><B+>OneOf6</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf6"+></A+><B+>TwoOf6</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf6"+></A+><B+>ThreeOf6</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf6"+></A+><B+>FourOf6</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf6"+></A+><B+>FiveOf6</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf6"+></A+><B+>SixOf6</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf6')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf6" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>OneOf6</A+> a b c d e f)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>OneOf6</A+> a b c d e f)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>OneOf6</A+> a b c d e f)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>OneOf6</A+> a b c d e f)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf7"+></A+><B+>OneOf7</B+> a b c d e f g</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf7"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf7"+></A+><B+>OneOf7</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf7"+></A+><B+>TwoOf7</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf7"+></A+><B+>ThreeOf7</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf7"+></A+><B+>FourOf7</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf7"+></A+><B+>FiveOf7</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf7"+></A+><B+>SixOf7</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf7"+></A+><B+>SevenOf7</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf7')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf7" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>OneOf7</A+> a b c d e f g)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>OneOf7</A+> a b c d e f g)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>OneOf7</A+> a b c d e f g)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>OneOf7</A+> a b c d e f g)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf8"+></A+><B+>OneOf8</B+> a b c d e f g h</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf8"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf8"+></A+><B+>OneOf8</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf8"+></A+><B+>TwoOf8</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf8"+></A+><B+>ThreeOf8</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf8"+></A+><B+>FourOf8</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf8"+></A+><B+>FiveOf8</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf8"+></A+><B+>SixOf8</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf8"+></A+><B+>SevenOf8</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf8"+></A+><B+>EightOf8</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf8')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf8" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>OneOf8</A+> a b c d e f g h)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>OneOf8</A+> a b c d e f g h)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>OneOf8</A+> a b c d e f g h)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>OneOf8</A+> a b c d e f g h)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf9"+></A+><B+>OneOf9</B+> a b c d e f g h i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf9"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf9"+></A+><B+>OneOf9</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf9"+></A+><B+>TwoOf9</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf9"+></A+><B+>ThreeOf9</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf9"+></A+><B+>FourOf9</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf9"+></A+><B+>FiveOf9</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf9"+></A+><B+>SixOf9</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf9"+></A+><B+>SevenOf9</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf9"+></A+><B+>EightOf9</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf9"+></A+><B+>NineOf9</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf9')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf9" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>OneOf9</A+> a b c d e f g h i)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>OneOf9</A+> a b c d e f g h i)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>OneOf9</A+> a b c d e f g h i)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>OneOf9</A+> a b c d e f g h i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf10"+></A+><B+>OneOf10</B+> a b c d e f g h i j</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf10"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf10"+></A+><B+>OneOf10</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf10"+></A+><B+>TwoOf10</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf10"+></A+><B+>ThreeOf10</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf10"+></A+><B+>FourOf10</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf10"+></A+><B+>FiveOf10</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf10"+></A+><B+>SixOf10</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf10"+></A+><B+>SevenOf10</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf10"+></A+><B+>EightOf10</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf10"+></A+><B+>NineOf10</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf10"+></A+><B+>TenOf10</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf10')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf10" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>OneOf10</A+> a b c d e f g h i j)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>OneOf10</A+> a b c d e f g h i j)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>OneOf10</A+> a b c d e f g h i j)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>OneOf10</A+> a b c d e f g h i j)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf11"+></A+><B+>OneOf11</B+> a b c d e f g h i j k</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf11"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf11"+></A+><B+>OneOf11</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf11"+></A+><B+>TwoOf11</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf11"+></A+><B+>ThreeOf11</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf11"+></A+><B+>FourOf11</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf11"+></A+><B+>FiveOf11</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf11"+></A+><B+>SixOf11</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf11"+></A+><B+>SevenOf11</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf11"+></A+><B+>EightOf11</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf11"+></A+><B+>NineOf11</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf11"+></A+><B+>TenOf11</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf11"+></A+><B+>ElevenOf11</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf11')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf11" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>OneOf11</A+> a b c d e f g h i j k)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>OneOf11</A+> a b c d e f g h i j k)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>OneOf11</A+> a b c d e f g h i j k)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>OneOf11</A+> a b c d e f g h i j k)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf12"+></A+><B+>OneOf12</B+> a b c d e f g h i j k l</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf12"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf12"+></A+><B+>OneOf12</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf12"+></A+><B+>TwoOf12</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf12"+></A+><B+>ThreeOf12</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf12"+></A+><B+>FourOf12</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf12"+></A+><B+>FiveOf12</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf12"+></A+><B+>SixOf12</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf12"+></A+><B+>SevenOf12</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf12"+></A+><B+>EightOf12</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf12"+></A+><B+>NineOf12</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf12"+></A+><B+>TenOf12</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf12"+></A+><B+>ElevenOf12</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf12"+></A+><B+>TwelveOf12</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf12')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf12" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>OneOf12</A+> a b c d e f g h i j k l)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>OneOf12</A+> a b c d e f g h i j k l)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>OneOf12</A+> a b c d e f g h i j k l)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>OneOf12</A+> a b c d e f g h i j k l)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf13"+></A+><B+>OneOf13</B+> a b c d e f g h i j k l m</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf13"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf13"+></A+><B+>OneOf13</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf13"+></A+><B+>TwoOf13</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf13"+></A+><B+>ThreeOf13</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf13"+></A+><B+>FourOf13</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf13"+></A+><B+>FiveOf13</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf13"+></A+><B+>SixOf13</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf13"+></A+><B+>SevenOf13</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf13"+></A+><B+>EightOf13</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf13"+></A+><B+>NineOf13</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf13"+></A+><B+>TenOf13</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf13"+></A+><B+>ElevenOf13</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf13"+></A+><B+>TwelveOf13</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf13"+></A+><B+>ThirteenOf13</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf13')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf13" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>OneOf13</A+> a b c d e f g h i j k l m)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>OneOf13</A+> a b c d e f g h i j k l m)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>OneOf13</A+> a b c d e f g h i j k l m)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>OneOf13</A+> a b c d e f g h i j k l m)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf14"+></A+><B+>OneOf14</B+> a b c d e f g h i j k l m n</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf14"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf14"+></A+><B+>OneOf14</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf14"+></A+><B+>TwoOf14</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf14"+></A+><B+>ThreeOf14</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf14"+></A+><B+>FourOf14</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf14"+></A+><B+>FiveOf14</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf14"+></A+><B+>SixOf14</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf14"+></A+><B+>SevenOf14</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf14"+></A+><B+>EightOf14</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf14"+></A+><B+>NineOf14</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf14"+></A+><B+>TenOf14</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf14"+></A+><B+>ElevenOf14</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf14"+></A+><B+>TwelveOf14</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf14"+></A+><B+>ThirteenOf14</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourteenOf14"+></A+><B+>FourteenOf14</B+> n</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf14')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf14" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>OneOf14</A+> a b c d e f g h i j k l m n)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>OneOf14</A+> a b c d e f g h i j k l m n)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>OneOf14</A+> a b c d e f g h i j k l m n)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>OneOf14</A+> a b c d e f g h i j k l m n)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf15"+></A+><B+>OneOf15</B+> a b c d e f g h i j k l m n o</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf15"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf15"+></A+><B+>OneOf15</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf15"+></A+><B+>TwoOf15</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf15"+></A+><B+>ThreeOf15</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf15"+></A+><B+>FourOf15</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf15"+></A+><B+>FiveOf15</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf15"+></A+><B+>SixOf15</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf15"+></A+><B+>SevenOf15</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf15"+></A+><B+>EightOf15</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf15"+></A+><B+>NineOf15</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf15"+></A+><B+>TenOf15</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf15"+></A+><B+>ElevenOf15</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf15"+></A+><B+>TwelveOf15</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf15"+></A+><B+>ThirteenOf15</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourteenOf15"+></A+><B+>FourteenOf15</B+> n</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFifteenOf15"+></A+><B+>FifteenOf15</B+> o</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf15')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf15" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>OneOf15</A+> a b c d e f g h i j k l m n o)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>OneOf15</A+> a b c d e f g h i j k l m n o)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>OneOf15</A+> a b c d e f g h i j k l m n o)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>OneOf15</A+> a b c d e f g h i j k l m n o)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf16"+></A+><B+>OneOf16</B+> a b c d e f g h i j k l m n o p</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf16"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf16"+></A+><B+>OneOf16</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf16"+></A+><B+>TwoOf16</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf16"+></A+><B+>ThreeOf16</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf16"+></A+><B+>FourOf16</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf16"+></A+><B+>FiveOf16</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf16"+></A+><B+>SixOf16</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf16"+></A+><B+>SevenOf16</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf16"+></A+><B+>EightOf16</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf16"+></A+><B+>NineOf16</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf16"+></A+><B+>TenOf16</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf16"+></A+><B+>ElevenOf16</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf16"+></A+><B+>TwelveOf16</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf16"+></A+><B+>ThirteenOf16</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourteenOf16"+></A+><B+>FourteenOf16</B+> n</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFifteenOf16"+></A+><B+>FifteenOf16</B+> o</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixteenOf16"+></A+><B+>SixteenOf16</B+> p</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf16')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf16" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>OneOf16</A+> a b c d e f g h i j k l m n o p)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>OneOf16</A+> a b c d e f g h i j k l m n o p)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>OneOf16</A+> a b c d e f g h i j k l m n o p)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>OneOf16</A+> a b c d e f g h i j k l m n o p)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf17"+></A+><B+>OneOf17</B+> a b c d e f g h i j k l m n o p q</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf17"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf17"+></A+><B+>OneOf17</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf17"+></A+><B+>TwoOf17</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf17"+></A+><B+>ThreeOf17</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf17"+></A+><B+>FourOf17</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf17"+></A+><B+>FiveOf17</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf17"+></A+><B+>SixOf17</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf17"+></A+><B+>SevenOf17</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf17"+></A+><B+>EightOf17</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf17"+></A+><B+>NineOf17</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf17"+></A+><B+>TenOf17</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf17"+></A+><B+>ElevenOf17</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf17"+></A+><B+>TwelveOf17</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf17"+></A+><B+>ThirteenOf17</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourteenOf17"+></A+><B+>FourteenOf17</B+> n</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFifteenOf17"+></A+><B+>FifteenOf17</B+> o</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixteenOf17"+></A+><B+>SixteenOf17</B+> p</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASeventeenOf17"+></A+><B+>SeventeenOf17</B+> q</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf17')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf17" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>OneOf17</A+> a b c d e f g h i j k l m n o p q)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>OneOf17</A+> a b c d e f g h i j k l m n o p q)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>OneOf17</A+> a b c d e f g h i j k l m n o p q)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>OneOf17</A+> a b c d e f g h i j k l m n o p q)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf18"+></A+><B+>OneOf18</B+> a b c d e f g h i j k l m n o p q r</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf18"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf18"+></A+><B+>OneOf18</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf18"+></A+><B+>TwoOf18</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf18"+></A+><B+>ThreeOf18</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf18"+></A+><B+>FourOf18</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf18"+></A+><B+>FiveOf18</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf18"+></A+><B+>SixOf18</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf18"+></A+><B+>SevenOf18</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf18"+></A+><B+>EightOf18</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf18"+></A+><B+>NineOf18</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf18"+></A+><B+>TenOf18</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf18"+></A+><B+>ElevenOf18</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf18"+></A+><B+>TwelveOf18</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf18"+></A+><B+>ThirteenOf18</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourteenOf18"+></A+><B+>FourteenOf18</B+> n</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFifteenOf18"+></A+><B+>FifteenOf18</B+> o</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixteenOf18"+></A+><B+>SixteenOf18</B+> p</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASeventeenOf18"+></A+><B+>SeventeenOf18</B+> q</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEighteenOf18"+></A+><B+>EighteenOf18</B+> r</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf18')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf18" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q, Eq r) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>OneOf18</A+> a b c d e f g h i j k l m n o p q r)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> r) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>OneOf18</A+> a b c d e f g h i j k l m n o p q r)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q, Show r) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>OneOf18</A+> a b c d e f g h i j k l m n o p q r)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>OneOf18</A+> a b c d e f g h i j k l m n o p q r)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf19"+></A+><B+>OneOf19</B+> a b c d e f g h i j k l m n o p q r s</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf19"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf19"+></A+><B+>OneOf19</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf19"+></A+><B+>TwoOf19</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf19"+></A+><B+>ThreeOf19</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf19"+></A+><B+>FourOf19</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf19"+></A+><B+>FiveOf19</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf19"+></A+><B+>SixOf19</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf19"+></A+><B+>SevenOf19</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf19"+></A+><B+>EightOf19</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf19"+></A+><B+>NineOf19</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf19"+></A+><B+>TenOf19</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf19"+></A+><B+>ElevenOf19</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf19"+></A+><B+>TwelveOf19</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf19"+></A+><B+>ThirteenOf19</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourteenOf19"+></A+><B+>FourteenOf19</B+> n</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFifteenOf19"+></A+><B+>FifteenOf19</B+> o</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixteenOf19"+></A+><B+>SixteenOf19</B+> p</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASeventeenOf19"+></A+><B+>SeventeenOf19</B+> q</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEighteenOf19"+></A+><B+>EighteenOf19</B+> r</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineteenOf19"+></A+><B+>NineteenOf19</B+> s</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf19')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf19" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q, Eq r, Eq s) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>OneOf19</A+> a b c d e f g h i j k l m n o p q r s)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> r, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> s) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>OneOf19</A+> a b c d e f g h i j k l m n o p q r s)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q, Show r, Show s) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>OneOf19</A+> a b c d e f g h i j k l m n o p q r s)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>OneOf19</A+> a b c d e f g h i j k l m n o p q r s)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AOneOf20"+></A+><B+>OneOf20</B+> a b c d e f g h i j k l m n o p q r s t</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/OneOfN.html#OneOf20"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AOneOf20"+></A+><B+>OneOf20</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwoOf20"+></A+><B+>TwoOf20</B+> b</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThreeOf20"+></A+><B+>ThreeOf20</B+> c</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourOf20"+></A+><B+>FourOf20</B+> d</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFiveOf20"+></A+><B+>FiveOf20</B+> e</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixOf20"+></A+><B+>SixOf20</B+> f</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASevenOf20"+></A+><B+>SevenOf20</B+> g</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEightOf20"+></A+><B+>EightOf20</B+> h</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineOf20"+></A+><B+>NineOf20</B+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATenOf20"+></A+><B+>TenOf20</B+> j</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AElevenOf20"+></A+><B+>ElevenOf20</B+> k</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwelveOf20"+></A+><B+>TwelveOf20</B+> l</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AThirteenOf20"+></A+><B+>ThirteenOf20</B+> m</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFourteenOf20"+></A+><B+>FourteenOf20</B+> n</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AFifteenOf20"+></A+><B+>FifteenOf20</B+> o</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASixteenOf20"+></A+><B+>SixteenOf20</B+> p</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASeventeenOf20"+></A+><B+>SeventeenOf20</B+> q</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEighteenOf20"+></A+><B+>EighteenOf20</B+> r</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANineteenOf20"+></A+><B+>NineteenOf20</B+> s</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATwentyOf20"+></A+><B+>TwentyOf20</B+> t</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OneOf20')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:OneOf20" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o, Eq p, Eq q, Eq r, Eq s, Eq t) =&gt; Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"+>OneOf20</A+> a b c d e f g h i j k l m n o p q r s t)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> r, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> s, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> t) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"+>OneOf20</A+> a b c d e f g h i j k l m n o p q r s t)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o, Show p, Show q, Show r, Show s, Show t) =&gt; Show (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"+>OneOf20</A+> a b c d e f g h i j k l m n o p q r s t)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> s, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20" >OneOf20</A
docs/HaXml/Text-XML-HaXml-Parse.html view
@@ -21,267 +21,1256 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HaXml.Parse</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"-><B->Contents</B-></TD-></TR-><TR-><TD-><DL-><DT-><A HREF="#1"->Parse a whole document-</A-></DT-><DT-><A HREF="#2"->Parse just a DTD-</A-></DT-></DL-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->A non-validating XML parser.  For the input grammar, see-   <A HREF="http://www.w3.org/TR/REC-xml"->http://www.w3.org/TR/REC-xml</A->.-</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%3AxmlParse"->xmlParse</A-> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxmlParse%27"->xmlParse'</A-> :: String -&gt; String -&gt; Either String <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdtdParse"->dtdParse</A-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdtdParse%27"->dtdParse'</A-> :: String -&gt; String -&gt; Either String (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A->)</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="1"->Parse a whole document-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AxmlParse"-></A-><B->xmlParse</B-> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-></TD-></TR-><TR-><TD CLASS="doc"->To parse a whole document, <TT->xmlParse file content</TT-> takes a filename-   (for generating error reports) and the string content of that file.-   A parse error causes program failure, with message to stderr.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AxmlParse%27"-></A-><B->xmlParse'</B-> :: String -&gt; String -&gt; Either String <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"->Document</A-></TD-></TR-><TR-><TD CLASS="doc"->To parse a whole document, <TT->xmlParse' file content</TT-> takes a filename-   (for generating error reports) and the string content of that file.-   Any parse error message is passed back to the caller through the-   <TT->Either</TT-> type.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="2"->Parse just a DTD-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AdtdParse"-></A-><B->dtdParse</B-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A-></TD-></TR-><TR-><TD CLASS="doc"->To parse just a DTD, <TT->dtdParse file content</TT-> takes a filename-   (for generating error reports) and the string content of that-   file.  If no DTD was found, you get <TT->Nothing</TT-> rather than an error.-   However, if a DTD is found but contains errors, the program crashes.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AdtdParse%27"-></A-><B->dtdParse'</B-> :: String -&gt; String -&gt; Either String (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A->)</TD-></TR-><TR-><TD CLASS="doc"->To parse just a DTD, <TT->dtdParse' file content</TT-> takes a filename-   (for generating error reports) and the string content of that-   file.  If no DTD was found, you get <TT->Right Nothing</TT->.-   If a DTD was found but contains errors, you get a <TT->Left message</TT->.-</TD+><A HREF="src/Text/XML/HaXml/Parse.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.Parse</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>Parse a whole document+</A+></DT+><DT+><A HREF="#2"+>Parse just a DTD+</A+></DT+><DT+><A HREF="#3"+>Parse a partial document+</A+></DT+><DT+><A HREF="#4"+>Individual parsers for use with <EM+>xmlParseWith</EM+> and module SAX+</A+></DT+><DT+><A HREF="#5"+>These general utility functions don't belong here+</A+></DT+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>A non-validating XML parser.  For the input grammar, see+   <A HREF="http://www.w3.org/TR/REC-xml"+>http://www.w3.org/TR/REC-xml</A+>.+</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%3AxmlParse"+>xmlParse</A+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxmlParse%27"+>xmlParse'</A+> :: String -&gt; String -&gt; Either String (<A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdtdParse"+>dtdParse</A+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdtdParse%27"+>dtdParse'</A+> :: String -&gt; String -&gt; Either String (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxmlParseWith"+>xmlParseWith</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> a -&gt; [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)] -&gt; (Either String a, [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)])</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adocument"+>document</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aelement"+>element</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acontent"+>content</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acomment"+>comment</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"+>Comment</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acdsect"+>cdsect</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACDSect"+>CDSect</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achardata"+>chardata</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Areference"+>reference</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adoctypedecl"+>doctypedecl</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aprocessinginstruction"+>processinginstruction</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aelemtag"+>elemtag</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aname"+>name</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atok"+>tok</A+> :: <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+> -&gt; <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AelemOpenTag"+>elemOpenTag</A+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AelemCloseTag"+>elemCloseTag</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> -&gt; <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AemptySTs"+>emptySTs</A+> :: SymTabs</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AXParser"+>XParser</A+> a = Parser SymTabs (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>) a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Afst3"+>fst3</A+> :: (a, b, c) -&gt; a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asnd3"+>snd3</A+> :: (a, b, c) -&gt; b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Athd3"+>thd3</A+> :: (a, b, c) -&gt; c</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Parse a whole document+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxmlParse"+></A+><B+>xmlParse</B+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#xmlParse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>To parse a whole document, <TT+>xmlParse file content</TT+> takes a filename+   (for generating error reports) and the string content of that file.+   A parse error causes program failure, with message to stderr.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxmlParse%27"+></A+><B+>xmlParse'</B+> :: String -&gt; String -&gt; Either String (<A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#xmlParse%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>To parse a whole document, <TT+>xmlParse' file content</TT+> takes a filename+   (for generating error reports) and the string content of that file.+   Any parse error message is passed back to the caller through the+   <TT+>Either</TT+> type.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Parse just a DTD+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdtdParse"+></A+><B+>dtdParse</B+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#dtdParse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>To parse just a DTD, <TT+>dtdParse file content</TT+> takes a filename+   (for generating error reports) and the string content of that+   file.  If no DTD was found, you get <TT+>Nothing</TT+> rather than an error.+   However, if a DTD is found but contains errors, the program crashes.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdtdParse%27"+></A+><B+>dtdParse'</B+> :: String -&gt; String -&gt; Either String (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#dtdParse%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>To parse just a DTD, <TT+>dtdParse' file content</TT+> takes a filename+   (for generating error reports) and the string content of that+   file.  If no DTD was found, you get <TT+>Right Nothing</TT+>.+   If a DTD was found but contains errors, you get a <TT+>Left message</TT+>.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="3"+>Parse a partial document+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxmlParseWith"+></A+><B+>xmlParseWith</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> a -&gt; [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)] -&gt; (Either String a, [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)])</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#xmlParseWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>To parse a partial document, e.g. from an XML-based stream protocol,+   where you may later want to get more document elements from the same+   stream.  Arguments are: a parser for the item you want, and the+   already-lexed input to parse from.  Returns the item you wanted+   (or an error message), plus the remainder of the input.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="4"+>Individual parsers for use with <EM+>xmlParseWith</EM+> and module SAX+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adocument"+></A+><B+>document</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#document"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return an entire XML document including prolog and trailing junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelement"+></A+><B+>element</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return a complete element including all its inner content.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acontent"+></A+><B+>content</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return a content particle, e.g. text, element, reference, etc+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acomment"+></A+><B+>comment</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"+>Comment</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#comment"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return an XML comment.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acdsect"+></A+><B+>cdsect</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACDSect"+>CDSect</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#cdsect"+>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%3Achardata"+></A+><B+>chardata</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#chardata"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return parsed freetext (i.e. until the next markup)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Areference"+></A+><B+>reference</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#reference"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return either a general entity reference, or a character reference.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adoctypedecl"+></A+><B+>doctypedecl</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#doctypedecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return a DOCTYPE decl, indicating a DTD.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aprocessinginstruction"+></A+><B+>processinginstruction</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#processinginstruction"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a processing instruction.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelemtag"+></A+><B+>elemtag</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#elemtag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse only the parts between angle brackets in an element tag.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aname"+></A+><B+>name</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#name"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return just a name, e.g. element name, attribute name.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Atok"+></A+><B+>tok</B+> :: <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+> -&gt; <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#tok"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return the next token from the input only if it matches the given token.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AelemOpenTag"+></A+><B+>elemOpenTag</B+> :: <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#elemOpenTag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>For use with stream parsers - returns the complete opening element tag.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AelemCloseTag"+></A+><B+>elemCloseTag</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> -&gt; <A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>XParser</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#elemCloseTag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>For use with stream parsers - accepts a closing tag, provided it+   matches the given element name.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AemptySTs"+></A+><B+>emptySTs</B+> :: SymTabs</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#emptySTs"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Some empty symbol tables for GE and PE references.+</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%3AXParser"+></A+><B+>XParser</B+> a = Parser SymTabs (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>) a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#XParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>XParser is just a specialisation of the PolyState parser.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="5"+>These general utility functions don't belong here+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Afst3"+></A+><B+>fst3</B+> :: (a, b, c) -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#fst3"+>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%3Asnd3"+></A+><B+>snd3</B+> :: (a, b, c) -&gt; b</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#snd3"+>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%3Athd3"+></A+><B+>thd3</B+> :: (a, b, c) -&gt; c</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Parse.html#thd3"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="s15"
+ docs/HaXml/Text-XML-HaXml-ParseLazy.html view
@@ -0,0 +1,1098 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.ParseLazy</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.ParseLazy</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>Parse a whole document+</A+></DT+><DT+><A HREF="#2"+>Parse just a DTD+</A+></DT+><DT+><A HREF="#3"+>Parse a partial document+</A+></DT+><DT+><A HREF="#4"+>Individual parsers for use with <EM+>xmlParseWith</EM+> and module SAX+</A+></DT+><DT+><A HREF="#5"+>These general utility functions don't belong here+</A+></DT+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>A non-validating XML parser.  For the input grammar, see+   <A HREF="http://www.w3.org/TR/REC-xml"+>http://www.w3.org/TR/REC-xml</A+>.+</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%3AxmlParse"+>xmlParse</A+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxmlParseWith"+>xmlParseWith</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> a -&gt; [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)] -&gt; (Either String a, [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)])</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adocument"+>document</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aelement"+>element</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acontent"+>content</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acomment"+>comment</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"+>Comment</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achardata"+>chardata</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Areference"+>reference</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adoctypedecl"+>doctypedecl</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aprocessinginstruction"+>processinginstruction</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aelemtag"+>elemtag</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aname"+>name</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atok"+>tok</A+> :: <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+> -&gt; <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AelemOpenTag"+>elemOpenTag</A+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AelemCloseTag"+>elemCloseTag</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> -&gt; <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AemptySTs"+>emptySTs</A+> :: SymTabs</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AXParser"+>XParser</A+> a = Parser SymTabs (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>) a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Afst3"+>fst3</A+> :: (a, b, c) -&gt; a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Asnd3"+>snd3</A+> :: (a, b, c) -&gt; b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Athd3"+>thd3</A+> :: (a, b, c) -&gt; c</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Parse a whole document+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxmlParse"+></A+><B+>xmlParse</B+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#xmlParse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>To parse a whole document, <TT+>xmlParse file content</TT+> takes a filename+   (for generating error reports) and the string content of that file.+   A parse error causes program failure, with message to stderr.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Parse just a DTD+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="3"+>Parse a partial document+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxmlParseWith"+></A+><B+>xmlParseWith</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> a -&gt; [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)] -&gt; (Either String a, [(<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>)])</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#xmlParseWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>To parse a partial document, e.g. from an XML-based stream protocol,+   where you may later want to get more document elements from the same+   stream.  Arguments are: a parser for the item you want, and the+   already-lexed input to parse from.  Returns the item you wanted+   (or an error message), plus the remainder of the input.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="4"+>Individual parsers for use with <EM+>xmlParseWith</EM+> and module SAX+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adocument"+></A+><B+>document</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#document"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return an entire XML document including prolog and trailing junk.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelement"+></A+><B+>element</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return a complete element including all its inner content.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acontent"+></A+><B+>content</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return a content particle, e.g. text, element, reference, etc+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acomment"+></A+><B+>comment</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"+>Comment</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#comment"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return an XML comment.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Achardata"+></A+><B+>chardata</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#chardata"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return parsed freetext (i.e. until the next markup)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Areference"+></A+><B+>reference</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#reference"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return either a general entity reference, or a character reference.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adoctypedecl"+></A+><B+>doctypedecl</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#doctypedecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return a DOCTYPE decl, indicating a DTD.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aprocessinginstruction"+></A+><B+>processinginstruction</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#processinginstruction"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse a processing instruction.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelemtag"+></A+><B+>elemtag</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#elemtag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Parse only the parts between angle brackets in an element tag.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aname"+></A+><B+>name</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#name"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return just a name, e.g. element name, attribute name.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Atok"+></A+><B+>tok</B+> :: <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+> -&gt; <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#tok"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Return the next token from the input only if it matches the given token.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AelemOpenTag"+></A+><B+>elemOpenTag</B+> :: <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#elemOpenTag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>For use with stream parsers - returns the complete opening element tag.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AelemCloseTag"+></A+><B+>elemCloseTag</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> -&gt; <A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>XParser</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#elemCloseTag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>For use with stream parsers - accepts a closing tag, provided it+   matches the given element name.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AemptySTs"+></A+><B+>emptySTs</B+> :: SymTabs</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#emptySTs"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Some empty symbol tables for GE and PE references.+</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%3AXParser"+></A+><B+>XParser</B+> a = Parser SymTabs (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+>) a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#XParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>XParser is just a specialisation of the PolyStateLazy parser.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="5"+>These general utility functions don't belong here+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Afst3"+></A+><B+>fst3</B+> :: (a, b, c) -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#fst3"+>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%3Asnd3"+></A+><B+>snd3</B+> :: (a, b, c) -&gt; b</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#snd3"+>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%3Athd3"+></A+><B+>thd3</B+> :: (a, b, c) -&gt; c</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ParseLazy.html#thd3"+>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+>
+ docs/HaXml/Text-XML-HaXml-Posn.html view
@@ -0,0 +1,699 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.Posn</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Posn.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.Posn</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>Position type+</A+></DT+><DD+><DL+><DT+><A HREF="#2"+>Constructors of a new position+</A+></DT+><DT+><A HREF="#3"+>Strictifier+</A+></DT+><DT+><A HREF="#4"+>Modifiers+</A+></DT+><DT+><A HREF="#5"+>Accessors+</A+></DT+></DL+></DD+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>Define a position datatype for giving locations in error messages.+</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%3APosn"+>Posn</A+> </TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposInNewCxt"+>posInNewCxt</A+> :: String -&gt; Maybe <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AnoPos"+>noPos</A+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aforcep"+>forcep</A+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aaddcol"+>addcol</A+> :: Int -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anewline"+>newline</A+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atab"+>tab</A+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Awhite"+>white</A+> :: Char -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposnFilename"+>posnFilename</A+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; FilePath</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposnLine"+>posnLine</A+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposnColumn"+>posnColumn</A+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Int</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Position type+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3APosn"+></A+><B+>Posn</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#Posn"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>Source positions contain a filename, line, column, and an+   inclusion point, which is itself another source position,+   recursively.+</TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Posn')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Posn" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="2"+>Constructors of a new position+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AposInNewCxt"+></A+><B+>posInNewCxt</B+> :: String -&gt; Maybe <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#posInNewCxt"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+>posInNewCxt name pos</TT+> creates a new source position from an old one.+   It is used when opening a new file (e.g. a DTD inclusion), to denote+   the start of the file <TT+>name</TT+>, but retain the stacked information that+   it was included from the old <TT+>pos</TT+>.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AnoPos"+></A+><B+>noPos</B+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#noPos"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Dummy value for generated data, where a true source position does+   not exist.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>Strictifier+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aforcep"+></A+><B+>forcep</B+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#forcep"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Just used to strictify the internal values of a position, to avoid+   space leaks.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>Modifiers+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aaddcol"+></A+><B+>addcol</B+> :: Int -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#addcol"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Add n character positions to the given position.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Anewline"+></A+><B+>newline</B+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#newline"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Add a newline or tab to the given position.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Atab"+></A+><B+>tab</B+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#tab"+>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%3Awhite"+></A+><B+>white</B+> :: Char -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#white"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Add the given whitespace char to the given position.+   Precondition: <TT+>white c | isSpace c = True</TT+>+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>Accessors+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AposnFilename"+></A+><B+>posnFilename</B+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; FilePath</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#posnFilename"+>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%3AposnLine"+></A+><B+>posnLine</B+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#posnLine"+>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%3AposnColumn"+></A+><B+>posnColumn</B+> :: <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Posn.html#posnColumn"+>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+>
docs/HaXml/Text-XML-HaXml-Pretty.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Pretty.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -116,7 +120,7 @@ ><TD CLASS="doc" >This is a pretty-printer for turning the internal representation    of generic structured XML documents into the Doc type (which can-   later be rendered using Text.ParserCombinators.HughesPJ.render).+   later be rendered using Text.PrettyPrint.HughesPJ.render).    Essentially there is one pp function for each type in    Text.Xml.HaXml.Types, so you can pretty-print as much or as little    of the document as you wish.@@ -143,7 +147,7 @@ >document</A > :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocument" >Document</A-> -&gt; Doc</TD+> i -&gt; Doc</TD ></TR ><TR ><TD CLASS="s8"@@ -155,7 +159,7 @@ >content</A > :: <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; Doc</TD+> i -&gt; Doc</TD ></TR ><TR ><TD CLASS="s8"@@ -167,7 +171,7 @@ >element</A > :: <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; Doc</TD+> i -&gt; Doc</TD ></TR ><TR ><TD CLASS="s8"@@ -228,15 +232,25 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Adocument" ></A ><B >document</B > :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocument" >Document</A-> -&gt; Doc</TD+> i -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Pretty.html#document"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -253,15 +267,25 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Acontent" ></A ><B >content</B > :: <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; Doc</TD+> i -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Pretty.html#content"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -278,15 +302,25 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aelement" ></A ><B >element</B > :: <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; Doc</TD+> i -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Pretty.html#element"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -303,7 +337,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Adoctypedecl" ></A ><B@@ -311,7 +348,14 @@ > :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl" >DocTypeDecl</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Pretty.html#doctypedecl"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -328,7 +372,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aprolog" ></A ><B@@ -336,7 +383,14 @@ > :: <A HREF="Text-XML-HaXml-Types.html#t%3AProlog" >Prolog</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Pretty.html#prolog"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -353,7 +407,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Acp" ></A ><B@@ -361,6 +418,13 @@ > :: <A HREF="Text-XML-HaXml-Types.html#t%3ACP" >CP</A > -&gt; Doc</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Pretty.html#cp"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="s15"
+ docs/HaXml/Text-XML-HaXml-SAX.html view
@@ -0,0 +1,432 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.SAX</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/SAX.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.SAX</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>A streaming XML parser, using a method known as SAX. SAX isn't really a+   standard, but an implementation, so it's just an &quot;SAX-like&quot; parser.+   This module allows you parse an XML document without having to evaluate+   it as a whole. This is needed for protocols like jabber, which use xml+   streams for communication.+</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%3ASaxElement"+>SaxElement</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ASaxDocTypeDecl"+>SaxDocTypeDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASaxProcessingInstruction"+>SaxProcessingInstruction</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASaxComment"+>SaxComment</A+> String</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASaxElementOpen"+>SaxElementOpen</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>]</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASaxElementClose"+>SaxElementClose</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASaxElementTag"+>SaxElementTag</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>]</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASaxCharData"+>SaxCharData</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASaxReference"+>SaxReference</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsaxParse"+>saxParse</A+> :: String -&gt; String -&gt; ([<A HREF="Text-XML-HaXml-SAX.html#t%3ASaxElement"+>SaxElement</A+>], Maybe 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%3ASaxElement"+></A+><B+>SaxElement</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/SAX.html#SaxElement"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxDocTypeDecl"+></A+><B+>SaxDocTypeDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+><TD CLASS="rdoc"+>A doctype declaration occured(&lt;!DOCTYPE&gt;)+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxProcessingInstruction"+></A+><B+>SaxProcessingInstruction</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+><TD CLASS="rdoc"+>A processing instruction occured (&lt;??&gt;)+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxComment"+></A+><B+>SaxComment</B+> String</TD+><TD CLASS="rdoc"+>A comment occured (&lt;!-- --&gt;)+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxElementOpen"+></A+><B+>SaxElementOpen</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>]</TD+><TD CLASS="rdoc"+>An element was opened (&lt;&gt;)+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxElementClose"+></A+><B+>SaxElementClose</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+><TD CLASS="rdoc"+>An element was closed (&lt;/&gt;)+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxElementTag"+></A+><B+>SaxElementTag</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>]</TD+><TD CLASS="rdoc"+>An element without content occured (&lt;/&gt;)+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxCharData"+></A+><B+>SaxCharData</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+><TD CLASS="rdoc"+>Some string data occured+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASaxReference"+></A+><B+>SaxReference</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+><TD CLASS="rdoc"+>A reference occured+</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"+><A NAME="v%3AsaxParse"+></A+><B+>saxParse</B+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/SAX.html#saxParse"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="arg"+>:: String</TD+><TD CLASS="rdoc"+>The filename+</TD+></TR+><TR+><TD CLASS="arg"+>-&gt; String</TD+><TD CLASS="rdoc"+>The content of the file+</TD+></TR+><TR+><TD CLASS="arg"+>-&gt; ([<A HREF="Text-XML-HaXml-SAX.html#t%3ASaxElement"+>SaxElement</A+>], Maybe String)</TD+><TD CLASS="rdoc"+>A tuple of the parsed elements and <TT+>Nothing</TT+>, if no+   error occured, or <TT+>Just</TT+> <TT+>String</TT+> if an error occured.+</TD+></TR+><TR+><TD CLASS="ndoc" COLSPAN="2"+><TT+>saxParse file content</TT+> takes a filename and the string content of that+   file and generates a stream of <TT+>SaxElement</TT+>s. If an error occurs, the+   parsing stops and a string is returned using the <TT+>Maybe</TT+> type.+</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+>
+ docs/HaXml/Text-XML-HaXml-ShowXmlLazy.html view
@@ -0,0 +1,141 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.ShowXmlLazy</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/ShowXmlLazy.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.ShowXmlLazy</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></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%3AshowXmlLazy"+>showXmlLazy</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; 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"+><A NAME="v%3AshowXmlLazy"+></A+><B+>showXmlLazy</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/ShowXmlLazy.html#showXmlLazy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a string (without DTD).                                         +</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="botbar"+>Produced by <A HREF="http://www.haskell.org/haddock/"+>Haddock</A+> version 0.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-TypeMapping.html view
@@ -0,0 +1,1463 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.TypeMapping</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.TypeMapping</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>A class to get an explicit type representation for any value+</A+></DT+><DT+><A HREF="#2"+>Explicit representation of Haskell datatype information+</A+></DT+><DT+><A HREF="#3"+>Helper functions to extract type info as strings+</A+></DT+><DT+><A HREF="#4"+>Conversion from Haskell datatype to DTD+</A+></DT+></DL+></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"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="#t%3AHTypeable"+>HTypeable</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoHType"+>toHType</A+> :: a -&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AHType"+>HType</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AMaybe"+>Maybe</A+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AList"+>List</A+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ATuple"+>Tuple</A+> [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>]</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3APrim"+>Prim</A+> String String</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AString"+>String</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ADefined"+>Defined</A+> String [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>] [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AConstr"+>Constr</A+>]</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AConstr"+>Constr</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AConstr"+>Constr</A+> String [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>] [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>]</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASynonym"+>Synonym</A+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AshowHType"+>showHType</A+> :: <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+> -&gt; ShowS</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AshowConstr"+>showConstr</A+> :: Int -&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+> -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoDTD"+>toDTD</A+> :: <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>A class to get an explicit type representation for any value+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A NAME="t%3AHTypeable"+></A+><B+>HTypeable</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html#HTypeable"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+><TT+>HTypeable</TT+> promises that we can create an explicit representation of+   of the type of any value.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoHType"+></A+><B+>toHType</B+> :: a -&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html#toHType"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:HTypeable')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:HTypeable" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> Bool</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> Double</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> Float</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> Int</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> Integer</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> ()</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (a, b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (a, b, c)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (Maybe a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> [a]</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (Either a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>OneOf3</A+> a b c)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>OneOf4</A+> a b c d)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>OneOf5</A+> a b c d e)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>OneOf6</A+> a b c d e f)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>OneOf7</A+> a b c d e f g)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>OneOf8</A+> a b c d e f g h)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>OneOf9</A+> a b c d e f g h i)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>OneOf10</A+> a b c d e f g h i j)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>OneOf11</A+> a b c d e f g h i j k)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>OneOf12</A+> a b c d e f g h i j k l)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>OneOf13</A+> a b c d e f g h i j k l m)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>OneOf14</A+> a b c d e f g h i j k l m n)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>OneOf15</A+> a b c d e f g h i j k l m n o)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>OneOf16</A+> a b c d e f g h i j k l m n o p)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>OneOf17</A+> a b c d e f g h i j k l m n o p q)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> r) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>OneOf18</A+> a b c d e f g h i j k l m n o p q r)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> r, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> s) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>OneOf19</A+> a b c d e f g h i j k l m n o p q r s)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> b, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> c, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> d, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> e, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> f, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> g, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> h, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> i, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> j, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> k, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> l, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> m, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> n, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> o, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> p, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> q, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> r, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> s, <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> t) =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"+>OneOf20</A+> a b c d e f g h i j k l m n o p q r s t)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Explicit representation of Haskell datatype information+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AHType"+></A+><B+>HType</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html#HType"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>A concrete representation of any Haskell type.+</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%3AMaybe"+></A+><B+>Maybe</B+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AList"+></A+><B+>List</B+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATuple"+></A+><B+>Tuple</B+> [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3APrim"+></A+><B+>Prim</B+> String String</TD+><TD CLASS="rdoc"+>separate Haskell name and XML name+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AString"+></A+><B+>String</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ADefined"+></A+><B+>Defined</B+> String [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>] [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AConstr"+>Constr</A+>]</TD+><TD CLASS="rdoc"+>A user-defined type has a name, a sequence of type variables,+   and a set of constructors.  (The variables might already be+   instantiated to actual types.)+</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:HType')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:HType" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AConstr"+></A+><B+>Constr</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html#Constr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>A concrete representation of any user-defined Haskell constructor.+   The constructor has a name, and a sequence of component types.  The+   first sequence of types represents the minimum set of free type+   variables occurring in the (second) list of real component types.+   If there are fieldnames, they are contained in the final list, and+   correspond one-to-one with the component types.+   The Synonym alternative is for where the type-mapping from Haskell to+   XML is user-defined rather than automatic.  There, one might wish to+   rename an existing XML type, without the addition of a constructor/tag.+</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%3AConstr"+></A+><B+>Constr</B+> String [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>] [<A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASynonym"+></A+><B+>Synonym</B+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Constr')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Constr" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AConstr"+>Constr</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AConstr"+>Constr</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="3"+>Helper functions to extract type info as strings+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AshowHType"+></A+><B+>showHType</B+> :: <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+> -&gt; ShowS</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html#showHType"+>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%3AshowConstr"+></A+><B+>showConstr</B+> :: Int -&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+> -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html#showConstr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Project the n'th constructor from an HType and convert it to a string+   suitable for an XML tagname.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="4"+>Conversion from Haskell datatype to DTD+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoDTD"+></A+><B+>toDTD</B+> :: <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>HType</A+> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/TypeMapping.html#toDTD"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoDTD"+>toDTD</A+></TT+> converts a concrete representation of the Haskell type of+   a value (obtained by the method <TT+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoHType"+>toHType</A+></TT+>) into a real DocTypeDecl.+   It ensures that PERefs are defined before they are used, and that no+   element or attribute-list is declared more than once.+</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+>
docs/HaXml/Text-XML-HaXml-Types.html view
@@ -21,4799 +21,5652 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HaXml.Types</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"-><B->Contents</B-></TD-></TR-><TR-><TD-><DL-><DT-><A HREF="#1"->A simple symbol table mapping strings (references) to values.-</A-></DT-><DD-><DL-><DT-><A HREF="#2"->Symbol table operations-</A-></DT-></DL-></DD-><DT-><A HREF="#3"->XML Types-</A-></DT-><DD-><DL-><DT-><A HREF="#4"->The top-level document container-</A-></DT-><DT-><A HREF="#5"->The main document content-</A-></DT-><DT-><A HREF="#6"->Administrative parts of the document-</A-></DT-><DT-><A HREF="#7"->The DTD-</A-></DT-><DD-><DL-><DT-><A HREF="#8"->content model-</A-></DT-><DT-><A HREF="#9"->attribute model-</A-></DT-><DT-><A HREF="#10"->conditional sections-</A-></DT-></DL-></DD-><DT-><A HREF="#11"->References-</A-></DT-><DT-><A HREF="#12"->Entities-</A-></DT-><DT-><A HREF="#13"->Basic value types-</A-></DT-></DL-></DD-></DL-></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 defines an internal (generic) representation for XML-   documents including their DTDs.-</P-><P->History:-   The original module was derived by hand from the XML specification,-   following the grammar precisely.  Then we simplified the types,-   removing layers of indirection and redundancy, and generally making-   things easier to work with.  Then we allowed PEReferences to be-   ubiquitous, by removing them from the types and resolving all-   PE references at parse-time.  Finally, we added a per-document-   symbol table for GEReferences, and a whitespace-significance flag-   for plaintext.-</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%3ASymTab"->SymTab</A-> a = [(String, a)]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AemptyST"->emptyST</A-> :: <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddST"->addST</A-> :: String -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AlookupST"->lookupST</A-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ADocument"->Document</A->  = <A HREF="#v%3ADocument"->Document</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AProlog"->Prolog</A-> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"->EntityDef</A->) <A HREF="Text-XML-HaXml-Types.html#t%3AElement"->Element</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AElement"->Element</A->  = <A HREF="#v%3AElem"->Elem</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AElemTag"->ElemTag</A->  = <A HREF="#v%3AElemTag"->ElemTag</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AContent"->Content</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ACElem"->CElem</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"->Element</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACString"->CString</A-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACRef"->CRef</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACMisc"->CMisc</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AAttribute"->Attribute</A-> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->, <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AAttValue"->AttValue</A->  = <A HREF="#v%3AAttValue"->AttValue</A-> [Either String <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AProlog"->Prolog</A->  = <A HREF="#v%3AProlog"->Prolog</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"->XMLDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AXMLDecl"->XMLDecl</A->  = <A HREF="#v%3AXMLDecl"->XMLDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"->VersionInfo</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"->EncodingDecl</A->) (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ASDDecl"->SDDecl</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AMisc"->Misc</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AComment"->Comment</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"->Comment</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3API"->PI</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"->ProcessingInstruction</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AProcessingInstruction"->ProcessingInstruction</A-> = (<A HREF="Text-XML-HaXml-Types.html#t%3APITarget"->PITarget</A->, String)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ASDDecl"->SDDecl</A-> = Bool</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AVersionInfo"->VersionInfo</A-> = String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AComment"->Comment</A-> = String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3APITarget"->PITarget</A-> = String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ADocTypeDecl"->DocTypeDecl</A->  = <A HREF="#v%3ADTD"->DTD</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"->MarkupDecl</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AMarkupDecl"->MarkupDecl</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AElementDecl"->ElementDecl</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AAttList"->AttList</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AAttListDecl"->AttListDecl</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AEntity"->Entity</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDecl"->EntityDecl</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ANotation"->Notation</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationDecl"->NotationDecl</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AMarkupMisc"->MarkupMisc</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AExtSubset"->ExtSubset</A->  = <A HREF="#v%3AExtSubset"->ExtSubset</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"->TextDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"->ExtSubsetDecl</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AExtSubsetDecl"->ExtSubsetDecl</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AExtMarkupDecl"->ExtMarkupDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"->MarkupDecl</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AExtConditionalSect"->ExtConditionalSect</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AConditionalSect"->ConditionalSect</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AElementDecl"->ElementDecl</A->  = <A HREF="#v%3AElementDecl"->ElementDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AContentSpec"->ContentSpec</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AContentSpec"->ContentSpec</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AEMPTY"->EMPTY</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AANY"->ANY</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AMixed"->Mixed</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AMixed"->Mixed</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AContentSpec"->ContentSpec</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ACP"->CP</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ACP"->CP</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ATagName"->TagName</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"->Modifier</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AChoice"->Choice</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"->CP</A->] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"->Modifier</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ASeq"->Seq</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"->CP</A->] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"->Modifier</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AModifier"->Modifier</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ANone"->None</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AQuery"->Query</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AStar"->Star</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3APlus"->Plus</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AMixed"->Mixed</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3APCDATA"->PCDATA</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3APCDATAplus"->PCDATAplus</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->]</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AAttListDecl"->AttListDecl</A->  = <A HREF="#v%3AAttListDecl"->AttListDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttDef"->AttDef</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AAttDef"->AttDef</A->  = <A HREF="#v%3AAttDef"->AttDef</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AAttType"->AttType</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ADefaultDecl"->DefaultDecl</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AAttType"->AttType</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AStringType"->StringType</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ATokenizedType"->TokenizedType</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ATokenizedType"->TokenizedType</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AEnumeratedType"->EnumeratedType</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeratedType"->EnumeratedType</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ATokenizedType"->TokenizedType</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AID"->ID</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AIDREF"->IDREF</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AIDREFS"->IDREFS</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AENTITY"->ENTITY</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AENTITIES"->ENTITIES</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ANMTOKEN"->NMTOKEN</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ANMTOKENS"->NMTOKENS</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AEnumeratedType"->EnumeratedType</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ANotationType"->NotationType</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationType"->NotationType</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AEnumeration"->Enumeration</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeration"->Enumeration</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ANotationType"->NotationType</A-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AEnumeration"->Enumeration</A-> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"->NmToken</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ADefaultDecl"->DefaultDecl</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AREQUIRED"->REQUIRED</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AIMPLIED"->IMPLIED</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ADefaultTo"->DefaultTo</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AFIXED"->FIXED</A->)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AFIXED"->FIXED</A->  = <A HREF="#v%3AFIXED"->FIXED</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AConditionalSect"->ConditionalSect</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AIncludeSect"->IncludeSect</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AIncludeSect"->IncludeSect</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AIgnoreSect"->IgnoreSect</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSect"->IgnoreSect</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AIncludeSect"->IncludeSect</A-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"->ExtSubsetDecl</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AIgnoreSect"->IgnoreSect</A-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"->IgnoreSectContents</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AIgnore"->Ignore</A->  = <A HREF="#v%3AIgnore"->Ignore</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AIgnoreSectContents"->IgnoreSectContents</A->  = <A HREF="#v%3AIgnoreSectContents"->IgnoreSectContents</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"->Ignore</A-> [(<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"->IgnoreSectContents</A->, <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"->Ignore</A->)]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AReference"->Reference</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ARefEntity"->RefEntity</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"->EntityRef</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARefChar"->RefChar</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"->CharRef</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AEntityRef"->EntityRef</A-> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ACharRef"->CharRef</A-> = Int</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3APEReference"->PEReference</A-> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AEntityDecl"->EntityDecl</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AEntityGEDecl"->EntityGEDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AGEDecl"->GEDecl</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AEntityPEDecl"->EntityPEDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3APEDecl"->PEDecl</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AGEDecl"->GEDecl</A->  = <A HREF="#v%3AGEDecl"->GEDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"->EntityDef</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3APEDecl"->PEDecl</A->  = <A HREF="#v%3APEDecl"->PEDecl</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3APEDef"->PEDef</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AEntityDef"->EntityDef</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ADefEntityValue"->DefEntityValue</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"->EntityValue</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ADefExternalID"->DefExternalID</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ANDataDecl"->NDataDecl</A->)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3APEDef"->PEDef</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3APEDefEntityValue"->PEDefEntityValue</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"->EntityValue</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3APEDefExternalID"->PEDefExternalID</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AExternalID"->ExternalID</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ASYSTEM"->SYSTEM</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"->SystemLiteral</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3APUBLIC"->PUBLIC</A-> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"->PubidLiteral</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"->SystemLiteral</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A HREF="#t%3ANDataDecl"->NDataDecl</A->  = <A HREF="#v%3ANDATA"->NDATA</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ATextDecl"->TextDecl</A->  = <A HREF="#v%3ATextDecl"->TextDecl</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"->VersionInfo</A->) <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"->EncodingDecl</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AExtParsedEnt"->ExtParsedEnt</A->  = <A HREF="#v%3AExtParsedEnt"->ExtParsedEnt</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"->TextDecl</A->) <A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AExtPE"->ExtPE</A->  = <A HREF="#v%3AExtPE"->ExtPE</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"->TextDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"->ExtSubsetDecl</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ANotationDecl"->NotationDecl</A->  = <A HREF="#v%3ANOTATION"->NOTATION</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> (Either <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A-> <A HREF="Text-XML-HaXml-Types.html#t%3APublicID"->PublicID</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A HREF="#t%3APublicID"->PublicID</A->  = <A HREF="#v%3APUBLICID"->PUBLICID</A-> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"->PubidLiteral</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A HREF="#t%3AEncodingDecl"->EncodingDecl</A->  = <A HREF="#v%3AEncodingDecl"->EncodingDecl</A-> String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AEntityValue"->EntityValue</A->  = <A HREF="#v%3AEntityValue"->EntityValue</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AEV"->EV</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AEV"->EV</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3AEVString"->EVString</A-> String</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AEVRef"->EVRef</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A HREF="#t%3APubidLiteral"->PubidLiteral</A->  = <A HREF="#v%3APubidLiteral"->PubidLiteral</A-> String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A HREF="#t%3ASystemLiteral"->SystemLiteral</A->  = <A HREF="#v%3ASystemLiteral"->SystemLiteral</A-> String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AName"->Name</A-> = String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ANames"->Names</A-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ANmToken"->NmToken</A-> = String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ANmTokens"->NmTokens</A-> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"->NmToken</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ACharData"->CharData</A-> = String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ACDSect"->CDSect</A-> = <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="1"->A simple symbol table mapping strings (references) to values.-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ASymTab"-></A-><B->SymTab</B-> a = [(String, a)]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="2"->Symbol table operations-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AemptyST"-></A-><B->emptyST</B-> :: <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AaddST"-></A-><B->addST</B-> :: String -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AlookupST"-></A-><B->lookupST</B-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> a -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="3"->XML Types-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="4"->The top-level document container-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ADocument"-></A-><B->Document</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The symbol table stored in a document holds all its general entity-   reference definitions.-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ADocument"-></A-><B->Document</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AProlog"->Prolog</A-> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"->EntityDef</A->) <A HREF="Text-XML-HaXml-Types.html#t%3AElement"->Element</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="5"->The main document content-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AElement"-></A-><B->Element</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AElem"-></A-><B->Elem</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Element" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"->Element</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AElemTag"-></A-><B->ElemTag</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AElemTag"-></A-><B->ElemTag</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->]</TD-><TD CLASS="rdoc"->intermediate for parsing-</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ElemTag')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:ElemTag" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"->ElemTag</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AContent"-></A-><B->Content</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ACElem"-></A-><B->CElem</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"->Element</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACString"-></A-><B->CString</B-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A-></TD-><TD CLASS="rdoc"->bool is whether whitespace is significant-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACRef"-></A-><B->CRef</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACMisc"-></A-><B->CMisc</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Content" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AAttribute"-></A-><B->Attribute</B-> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->, <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A->)</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AAttValue"-></A-><B->AttValue</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AAttValue"-></A-><B->AttValue</B-> [Either String <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AttValue')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:AttValue" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="6"->Administrative parts of the document-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AProlog"-></A-><B->Prolog</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AProlog"-></A-><B->Prolog</B-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"->XMLDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AXMLDecl"-></A-><B->XMLDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AXMLDecl"-></A-><B->XMLDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"->VersionInfo</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"->EncodingDecl</A->) (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ASDDecl"->SDDecl</A->)</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AMisc"-></A-><B->Misc</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AComment"-></A-><B->Comment</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"->Comment</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3API"-></A-><B->PI</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"->ProcessingInstruction</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AProcessingInstruction"-></A-><B->ProcessingInstruction</B-> = (<A HREF="Text-XML-HaXml-Types.html#t%3APITarget"->PITarget</A->, String)</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ASDDecl"-></A-><B->SDDecl</B-> = Bool</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AVersionInfo"-></A-><B->VersionInfo</B-> = String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AComment"-></A-><B->Comment</B-> = String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3APITarget"-></A-><B->PITarget</B-> = String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="7"->The DTD-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section3"-><A NAME="8"->content model-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ADocTypeDecl"-></A-><B->DocTypeDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ADTD"-></A-><B->DTD</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"->MarkupDecl</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AMarkupDecl"-></A-><B->MarkupDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AElement"-></A-><B->Element</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AElementDecl"->ElementDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AAttList"-></A-><B->AttList</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AAttListDecl"->AttListDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEntity"-></A-><B->Entity</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDecl"->EntityDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANotation"-></A-><B->Notation</B-> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationDecl"->NotationDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AMarkupMisc"-></A-><B->MarkupMisc</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AExtSubset"-></A-><B->ExtSubset</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AExtSubset"-></A-><B->ExtSubset</B-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"->TextDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"->ExtSubsetDecl</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AExtSubsetDecl"-></A-><B->ExtSubsetDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AExtMarkupDecl"-></A-><B->ExtMarkupDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"->MarkupDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AExtConditionalSect"-></A-><B->ExtConditionalSect</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AConditionalSect"->ConditionalSect</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AElementDecl"-></A-><B->ElementDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AElementDecl"-></A-><B->ElementDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AContentSpec"->ContentSpec</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AContentSpec"-></A-><B->ContentSpec</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AEMPTY"-></A-><B->EMPTY</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AANY"-></A-><B->ANY</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AMixed"-></A-><B->Mixed</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AMixed"->Mixed</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AContentSpec"-></A-><B->ContentSpec</B-> <A HREF="Text-XML-HaXml-Types.html#t%3ACP"->CP</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ACP"-></A-><B->CP</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ATagName"-></A-><B->TagName</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"->Modifier</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AChoice"-></A-><B->Choice</B-> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"->CP</A->] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"->Modifier</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ASeq"-></A-><B->Seq</B-> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"->CP</A->] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"->Modifier</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CP')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:CP" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-Types.html#t%3ACP"->CP</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AModifier"-></A-><B->Modifier</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ANone"-></A-><B->None</B-></TD-><TD CLASS="rdoc"->Just One-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AQuery"-></A-><B->Query</B-></TD-><TD CLASS="rdoc"->Zero Or One-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AStar"-></A-><B->Star</B-></TD-><TD CLASS="rdoc"->Zero Or More-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3APlus"-></A-><B->Plus</B-></TD-><TD CLASS="rdoc"->One Or More -</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Modifier')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Modifier" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"->Modifier</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AMixed"-></A-><B->Mixed</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3APCDATA"-></A-><B->PCDATA</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3APCDATAplus"-></A-><B->PCDATAplus</B-> [<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section3"-><A NAME="9"->attribute model-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AAttListDecl"-></A-><B->AttListDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AAttListDecl"-></A-><B->AttListDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttDef"->AttDef</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AAttDef"-></A-><B->AttDef</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AAttDef"-></A-><B->AttDef</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AAttType"->AttType</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ADefaultDecl"->DefaultDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AAttType"-></A-><B->AttType</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AStringType"-></A-><B->StringType</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATokenizedType"-></A-><B->TokenizedType</B-> <A HREF="Text-XML-HaXml-Types.html#t%3ATokenizedType"->TokenizedType</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEnumeratedType"-></A-><B->EnumeratedType</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeratedType"->EnumeratedType</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ATokenizedType"-></A-><B->TokenizedType</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AID"-></A-><B->ID</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AIDREF"-></A-><B->IDREF</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AIDREFS"-></A-><B->IDREFS</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AENTITY"-></A-><B->ENTITY</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AENTITIES"-></A-><B->ENTITIES</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANMTOKEN"-></A-><B->NMTOKEN</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANMTOKENS"-></A-><B->NMTOKENS</B-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AEnumeratedType"-></A-><B->EnumeratedType</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ANotationType"-></A-><B->NotationType</B-> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationType"->NotationType</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEnumeration"-></A-><B->Enumeration</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeration"->Enumeration</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ANotationType"-></A-><B->NotationType</B-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AEnumeration"-></A-><B->Enumeration</B-> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"->NmToken</A->]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ADefaultDecl"-></A-><B->DefaultDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AREQUIRED"-></A-><B->REQUIRED</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AIMPLIED"-></A-><B->IMPLIED</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ADefaultTo"-></A-><B->DefaultTo</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AFIXED"->FIXED</A->)</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AFIXED"-></A-><B->FIXED</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AFIXED"-></A-><B->FIXED</B-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section3"-><A NAME="10"->conditional sections-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AConditionalSect"-></A-><B->ConditionalSect</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AIncludeSect"-></A-><B->IncludeSect</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AIncludeSect"->IncludeSect</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AIgnoreSect"-></A-><B->IgnoreSect</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSect"->IgnoreSect</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AIncludeSect"-></A-><B->IncludeSect</B-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"->ExtSubsetDecl</A->]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AIgnoreSect"-></A-><B->IgnoreSect</B-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"->IgnoreSectContents</A->]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AIgnore"-></A-><B->Ignore</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AIgnore"-></A-><B->Ignore</B-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AIgnoreSectContents"-></A-><B->IgnoreSectContents</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AIgnoreSectContents"-></A-><B->IgnoreSectContents</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"->Ignore</A-> [(<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"->IgnoreSectContents</A->, <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"->Ignore</A->)]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="11"->References-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AReference"-></A-><B->Reference</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ARefEntity"-></A-><B->RefEntity</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"->EntityRef</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARefChar"-></A-><B->RefChar</B-> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"->CharRef</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reference')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Reference" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AEntityRef"-></A-><B->EntityRef</B-> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ACharRef"-></A-><B->CharRef</B-> = Int</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3APEReference"-></A-><B->PEReference</B-> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="12"->Entities-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AEntityDecl"-></A-><B->EntityDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AEntityGEDecl"-></A-><B->EntityGEDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AGEDecl"->GEDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEntityPEDecl"-></A-><B->EntityPEDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3APEDecl"->PEDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AGEDecl"-></A-><B->GEDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AGEDecl"-></A-><B->GEDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"->EntityDef</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3APEDecl"-></A-><B->PEDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3APEDecl"-></A-><B->PEDecl</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> <A HREF="Text-XML-HaXml-Types.html#t%3APEDef"->PEDef</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AEntityDef"-></A-><B->EntityDef</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ADefEntityValue"-></A-><B->DefEntityValue</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"->EntityValue</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ADefExternalID"-></A-><B->DefExternalID</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ANDataDecl"->NDataDecl</A->)</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3APEDef"-></A-><B->PEDef</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3APEDefEntityValue"-></A-><B->PEDefEntityValue</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"->EntityValue</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3APEDefExternalID"-></A-><B->PEDefExternalID</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AExternalID"-></A-><B->ExternalID</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ASYSTEM"-></A-><B->SYSTEM</B-> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"->SystemLiteral</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3APUBLIC"-></A-><B->PUBLIC</B-> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"->PubidLiteral</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"->SystemLiteral</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A NAME="t%3ANDataDecl"-></A-><B->NDataDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ANDATA"-></A-><B->NDATA</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ATextDecl"-></A-><B->TextDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ATextDecl"-></A-><B->TextDecl</B-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"->VersionInfo</A->) <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"->EncodingDecl</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AExtParsedEnt"-></A-><B->ExtParsedEnt</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AExtParsedEnt"-></A-><B->ExtParsedEnt</B-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"->TextDecl</A->) <A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AExtPE"-></A-><B->ExtPE</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AExtPE"-></A-><B->ExtPE</B-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"->TextDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"->ExtSubsetDecl</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ANotationDecl"-></A-><B->NotationDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ANOTATION"-></A-><B->NOTATION</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> (Either <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"->ExternalID</A-> <A HREF="Text-XML-HaXml-Types.html#t%3APublicID"->PublicID</A->)</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A NAME="t%3APublicID"-></A-><B->PublicID</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3APUBLICID"-></A-><B->PUBLICID</B-> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"->PubidLiteral</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A NAME="t%3AEncodingDecl"-></A-><B->EncodingDecl</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AEncodingDecl"-></A-><B->EncodingDecl</B-> String</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AEntityValue"-></A-><B->EntityValue</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AEntityValue"-></A-><B->EntityValue</B-> [<A HREF="Text-XML-HaXml-Types.html#t%3AEV"->EV</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AEV"-></A-><B->EV</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AEVString"-></A-><B->EVString</B-> String</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AEVRef"-></A-><B->EVRef</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A NAME="t%3APubidLiteral"-></A-><B->PubidLiteral</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3APubidLiteral"-></A-><B->PubidLiteral</B-> String</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A NAME="t%3ASystemLiteral"-></A-><B->SystemLiteral</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ASystemLiteral"-></A-><B->SystemLiteral</B-> String</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="13"->Basic value types-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AName"-></A-><B->Name</B-> = String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ANames"-></A-><B->Names</B-> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ANmToken"-></A-><B->NmToken</B-> = String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ANmTokens"-></A-><B->NmTokens</B-> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"->NmToken</A->]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ACharData"-></A-><B->CharData</B-> = String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ACDSect"-></A-><B->CDSect</B-> = <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A+><A HREF="src/Text/XML/HaXml/Types.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.Types</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>A simple symbol table mapping strings (references) to values.+</A+></DT+><DD+><DL+><DT+><A HREF="#2"+>Symbol table operations+</A+></DT+></DL+></DD+><DT+><A HREF="#3"+>XML Types+</A+></DT+><DD+><DL+><DT+><A HREF="#4"+>The top-level document container+</A+></DT+><DT+><A HREF="#5"+>The main document content+</A+></DT+><DT+><A HREF="#6"+>Administrative parts of the document+</A+></DT+><DT+><A HREF="#7"+>The DTD+</A+></DT+><DD+><DL+><DT+><A HREF="#8"+>content model+</A+></DT+><DT+><A HREF="#9"+>attribute model+</A+></DT+><DT+><A HREF="#10"+>conditional sections+</A+></DT+></DL+></DD+><DT+><A HREF="#11"+>References+</A+></DT+><DT+><A HREF="#12"+>Entities+</A+></DT+><DT+><A HREF="#13"+>Basic value types+</A+></DT+></DL+></DD+></DL+></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 defines an internal (generic) representation for XML+   documents including their DTDs.+</P+><P+>History:+   The original module was derived by hand from the XML specification,+   following the grammar precisely.  Then we simplified the types,+   removing layers of indirection and redundancy, and generally making+   things easier to work with.  Then we allowed PEReferences to be+   ubiquitous, by removing them from the types and resolving all+   PE references at parse-time.  Finally, we added a per-document+   symbol table for GEReferences, and a whitespace-significance flag+   for plaintext.+</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%3ASymTab"+>SymTab</A+> a = [(String, a)]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AemptyST"+>emptyST</A+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AaddST"+>addST</A+> :: String -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AlookupST"+>lookupST</A+> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a -&gt; Maybe a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ADocument"+>Document</A+> i = <A HREF="#v%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AProlog"+>Prolog</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+>) (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AElement"+>Element</A+> i = <A HREF="#v%3AElem"+>Elem</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AElemTag"+>ElemTag</A+>  = <A HREF="#v%3AElemTag"+>ElemTag</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AContent"+>Content</A+> i</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ACElem"+>CElem</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i) i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACString"+>CString</A+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+> i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACRef"+>CRef</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+> i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACMisc"+>CMisc</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+> i</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AAttribute"+>Attribute</A+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>, <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"+>AttValue</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AAttValue"+>AttValue</A+>  = <A HREF="#v%3AAttValue"+>AttValue</A+> [Either String <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AProlog"+>Prolog</A+>  = <A HREF="#v%3AProlog"+>Prolog</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"+>XMLDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AXMLDecl"+>XMLDecl</A+>  = <A HREF="#v%3AXMLDecl"+>XMLDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"+>VersionInfo</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"+>EncodingDecl</A+>) (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ASDDecl"+>SDDecl</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AMisc"+>Misc</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AComment"+>Comment</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"+>Comment</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3API"+>PI</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AProcessingInstruction"+>ProcessingInstruction</A+> = (<A HREF="Text-XML-HaXml-Types.html#t%3APITarget"+>PITarget</A+>, String)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ASDDecl"+>SDDecl</A+> = Bool</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AVersionInfo"+>VersionInfo</A+> = String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AComment"+>Comment</A+> = String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3APITarget"+>PITarget</A+> = String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ADocTypeDecl"+>DocTypeDecl</A+>  = <A HREF="#v%3ADTD"+>DTD</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"+>MarkupDecl</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AMarkupDecl"+>MarkupDecl</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AElementDecl"+>ElementDecl</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AAttList"+>AttList</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AAttListDecl"+>AttListDecl</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AEntity"+>Entity</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDecl"+>EntityDecl</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ANotation"+>Notation</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationDecl"+>NotationDecl</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AMarkupMisc"+>MarkupMisc</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AExtSubset"+>ExtSubset</A+>  = <A HREF="#v%3AExtSubset"+>ExtSubset</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"+>TextDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"+>ExtSubsetDecl</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AExtSubsetDecl"+>ExtSubsetDecl</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AExtMarkupDecl"+>ExtMarkupDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"+>MarkupDecl</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AExtConditionalSect"+>ExtConditionalSect</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AConditionalSect"+>ConditionalSect</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AElementDecl"+>ElementDecl</A+>  = <A HREF="#v%3AElementDecl"+>ElementDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AContentSpec"+>ContentSpec</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AContentSpec"+>ContentSpec</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AEMPTY"+>EMPTY</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AANY"+>ANY</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AMixed"+>Mixed</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AMixed"+>Mixed</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AContentSpec"+>ContentSpec</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ACP"+>CP</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ATagName"+>TagName</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AChoice"+>Choice</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+>] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ASeq"+>Seq</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+>] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AModifier"+>Modifier</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ANone"+>None</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AQuery"+>Query</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AStar"+>Star</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3APlus"+>Plus</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AMixed"+>Mixed</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3APCDATA"+>PCDATA</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3APCDATAplus"+>PCDATAplus</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>]</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AAttListDecl"+>AttListDecl</A+>  = <A HREF="#v%3AAttListDecl"+>AttListDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttDef"+>AttDef</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AAttDef"+>AttDef</A+>  = <A HREF="#v%3AAttDef"+>AttDef</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AAttType"+>AttType</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ADefaultDecl"+>DefaultDecl</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AAttType"+>AttType</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AStringType"+>StringType</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ATokenizedType"+>TokenizedType</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ATokenizedType"+>TokenizedType</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AEnumeratedType"+>EnumeratedType</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeratedType"+>EnumeratedType</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ATokenizedType"+>TokenizedType</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AID"+>ID</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AIDREF"+>IDREF</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AIDREFS"+>IDREFS</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AENTITY"+>ENTITY</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AENTITIES"+>ENTITIES</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ANMTOKEN"+>NMTOKEN</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ANMTOKENS"+>NMTOKENS</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AEnumeratedType"+>EnumeratedType</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ANotationType"+>NotationType</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationType"+>NotationType</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AEnumeration"+>Enumeration</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeration"+>Enumeration</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ANotationType"+>NotationType</A+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AEnumeration"+>Enumeration</A+> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"+>NmToken</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ADefaultDecl"+>DefaultDecl</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AREQUIRED"+>REQUIRED</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AIMPLIED"+>IMPLIED</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ADefaultTo"+>DefaultTo</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"+>AttValue</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AFIXED"+>FIXED</A+>)</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AFIXED"+>FIXED</A+>  = <A HREF="#v%3AFIXED"+>FIXED</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AConditionalSect"+>ConditionalSect</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AIncludeSect"+>IncludeSect</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AIncludeSect"+>IncludeSect</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AIgnoreSect"+>IgnoreSect</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSect"+>IgnoreSect</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AIncludeSect"+>IncludeSect</A+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"+>ExtSubsetDecl</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AIgnoreSect"+>IgnoreSect</A+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"+>IgnoreSectContents</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AIgnore"+>Ignore</A+>  = <A HREF="#v%3AIgnore"+>Ignore</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AIgnoreSectContents"+>IgnoreSectContents</A+>  = <A HREF="#v%3AIgnoreSectContents"+>IgnoreSectContents</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"+>Ignore</A+> [(<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"+>IgnoreSectContents</A+>, <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"+>Ignore</A+>)]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AReference"+>Reference</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ARefEntity"+>RefEntity</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"+>EntityRef</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ARefChar"+>RefChar</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"+>CharRef</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AEntityRef"+>EntityRef</A+> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ACharRef"+>CharRef</A+> = Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3APEReference"+>PEReference</A+> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AEntityDecl"+>EntityDecl</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AEntityGEDecl"+>EntityGEDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AGEDecl"+>GEDecl</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AEntityPEDecl"+>EntityPEDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3APEDecl"+>PEDecl</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AGEDecl"+>GEDecl</A+>  = <A HREF="#v%3AGEDecl"+>GEDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3APEDecl"+>PEDecl</A+>  = <A HREF="#v%3APEDecl"+>PEDecl</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3APEDef"+>PEDef</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AEntityDef"+>EntityDef</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ADefEntityValue"+>DefEntityValue</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"+>EntityValue</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ADefExternalID"+>DefExternalID</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ANDataDecl"+>NDataDecl</A+>)</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3APEDef"+>PEDef</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3APEDefEntityValue"+>PEDefEntityValue</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"+>EntityValue</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3APEDefExternalID"+>PEDefExternalID</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AExternalID"+>ExternalID</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ASYSTEM"+>SYSTEM</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"+>SystemLiteral</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3APUBLIC"+>PUBLIC</A+> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"+>PubidLiteral</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"+>SystemLiteral</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3ANDataDecl"+>NDataDecl</A+>  = <A HREF="#v%3ANDATA"+>NDATA</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ATextDecl"+>TextDecl</A+>  = <A HREF="#v%3ATextDecl"+>TextDecl</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"+>VersionInfo</A+>) <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"+>EncodingDecl</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AExtParsedEnt"+>ExtParsedEnt</A+> i = <A HREF="#v%3AExtParsedEnt"+>ExtParsedEnt</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"+>TextDecl</A+>) (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AExtPE"+>ExtPE</A+>  = <A HREF="#v%3AExtPE"+>ExtPE</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"+>TextDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"+>ExtSubsetDecl</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ANotationDecl"+>NotationDecl</A+>  = <A HREF="#v%3ANOTATION"+>NOTATION</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> (Either <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+> <A HREF="Text-XML-HaXml-Types.html#t%3APublicID"+>PublicID</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3APublicID"+>PublicID</A+>  = <A HREF="#v%3APUBLICID"+>PUBLICID</A+> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"+>PubidLiteral</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3AEncodingDecl"+>EncodingDecl</A+>  = <A HREF="#v%3AEncodingDecl"+>EncodingDecl</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AEntityValue"+>EntityValue</A+>  = <A HREF="#v%3AEntityValue"+>EntityValue</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AEV"+>EV</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AEV"+>EV</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3AEVString"+>EVString</A+> String</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AEVRef"+>EVRef</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3APubidLiteral"+>PubidLiteral</A+>  = <A HREF="#v%3APubidLiteral"+>PubidLiteral</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A HREF="#t%3ASystemLiteral"+>SystemLiteral</A+>  = <A HREF="#v%3ASystemLiteral"+>SystemLiteral</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AName"+>Name</A+> = String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ANames"+>Names</A+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ANmToken"+>NmToken</A+> = String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ANmTokens"+>NmTokens</A+> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"+>NmToken</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ACharData"+>CharData</A+> = String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ACDSect"+>CDSect</A+> = <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>A simple symbol table mapping strings (references) to values.+</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%3ASymTab"+></A+><B+>SymTab</B+> a = [(String, a)]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#SymTab"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="2"+>Symbol table operations+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AemptyST"+></A+><B+>emptyST</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#emptyST"+>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%3AaddST"+></A+><B+>addST</B+> :: String -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#addST"+>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%3AlookupST"+></A+><B+>lookupST</B+> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a -&gt; Maybe a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#lookupST"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="3"+>XML Types+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>The top-level document container+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3ADocument"+></A+><B+>Document</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Document"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The symbol table stored in a document holds all its general entity+   reference definitions.+</TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ADocument"+></A+><B+>Document</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AProlog"+>Prolog</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+>) (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Document')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Document" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>The main document content+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AElement"+></A+><B+>Element</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElem"+></A+><B+>Elem</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Element" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AElemTag"+></A+><B+>ElemTag</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ElemTag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElemTag"+></A+><B+>ElemTag</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>]</TD+><TD CLASS="rdoc"+>intermediate for parsing+</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ElemTag')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:ElemTag" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-Types.html#t%3AElemTag"+>ElemTag</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AContent"+></A+><B+>Content</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ACElem"+></A+><B+>CElem</B+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i) i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACString"+></A+><B+>CString</B+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+> i</TD+><TD CLASS="rdoc"+>bool is whether whitespace is significant+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACRef"+></A+><B+>CRef</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACMisc"+></A+><B+>CMisc</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+> i</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Content" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>type</SPAN+> <A NAME="t%3AAttribute"+></A+><B+>Attribute</B+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>, <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"+>AttValue</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Attribute"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AAttValue"+></A+><B+>AttValue</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#AttValue"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AAttValue"+></A+><B+>AttValue</B+> [Either String <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AttValue')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:AttValue" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"+>AttValue</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"+>AttValue</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="6"+>Administrative parts of the document+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AProlog"+></A+><B+>Prolog</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Prolog"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AProlog"+></A+><B+>Prolog</B+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"+>XMLDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+></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%3AXMLDecl"+></A+><B+>XMLDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#XMLDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AXMLDecl"+></A+><B+>XMLDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"+>VersionInfo</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"+>EncodingDecl</A+>) (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ASDDecl"+>SDDecl</A+>)</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AMisc"+></A+><B+>Misc</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Misc"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AComment"+></A+><B+>Comment</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AComment"+>Comment</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3API"+></A+><B+>PI</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction"+>ProcessingInstruction</A+></TD+><TD CLASS="rdoc"+></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%3AProcessingInstruction"+></A+><B+>ProcessingInstruction</B+> = (<A HREF="Text-XML-HaXml-Types.html#t%3APITarget"+>PITarget</A+>, String)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ProcessingInstruction"+>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"+>type</SPAN+> <A NAME="t%3ASDDecl"+></A+><B+>SDDecl</B+> = Bool</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#SDDecl"+>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"+>type</SPAN+> <A NAME="t%3AVersionInfo"+></A+><B+>VersionInfo</B+> = String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#VersionInfo"+>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"+>type</SPAN+> <A NAME="t%3AComment"+></A+><B+>Comment</B+> = String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Comment"+>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"+>type</SPAN+> <A NAME="t%3APITarget"+></A+><B+>PITarget</B+> = String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#PITarget"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="7"+>The DTD+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section3"+><A NAME="8"+>content model+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3ADocTypeDecl"+></A+><B+>DocTypeDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#DocTypeDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ADTD"+></A+><B+>DTD</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"+>MarkupDecl</A+>]</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AMarkupDecl"+></A+><B+>MarkupDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#MarkupDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElement"+></A+><B+>Element</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AElementDecl"+>ElementDecl</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AAttList"+></A+><B+>AttList</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AAttListDecl"+>AttListDecl</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEntity"+></A+><B+>Entity</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDecl"+>EntityDecl</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANotation"+></A+><B+>Notation</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationDecl"+>NotationDecl</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AMarkupMisc"+></A+><B+>MarkupMisc</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AExtSubset"+></A+><B+>ExtSubset</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ExtSubset"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AExtSubset"+></A+><B+>ExtSubset</B+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"+>TextDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"+>ExtSubsetDecl</A+>]</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AExtSubsetDecl"+></A+><B+>ExtSubsetDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ExtSubsetDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AExtMarkupDecl"+></A+><B+>ExtMarkupDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"+>MarkupDecl</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AExtConditionalSect"+></A+><B+>ExtConditionalSect</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AConditionalSect"+>ConditionalSect</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AElementDecl"+></A+><B+>ElementDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ElementDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElementDecl"+></A+><B+>ElementDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AContentSpec"+>ContentSpec</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AContentSpec"+></A+><B+>ContentSpec</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ContentSpec"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AEMPTY"+></A+><B+>EMPTY</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AANY"+></A+><B+>ANY</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AMixed"+></A+><B+>Mixed</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AMixed"+>Mixed</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AContentSpec"+></A+><B+>ContentSpec</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3ACP"+></A+><B+>CP</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#CP"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ATagName"+></A+><B+>TagName</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AChoice"+></A+><B+>Choice</B+> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+>] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ASeq"+></A+><B+>Seq</B+> [<A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+>] <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CP')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:CP" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3ACP"+>CP</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AModifier"+></A+><B+>Modifier</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Modifier"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ANone"+></A+><B+>None</B+></TD+><TD CLASS="rdoc"+>Just One+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AQuery"+></A+><B+>Query</B+></TD+><TD CLASS="rdoc"+>Zero Or One+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AStar"+></A+><B+>Star</B+></TD+><TD CLASS="rdoc"+>Zero Or More+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3APlus"+></A+><B+>Plus</B+></TD+><TD CLASS="rdoc"+>One Or More +</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Modifier')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Modifier" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3AModifier"+>Modifier</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AMixed"+></A+><B+>Mixed</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Mixed"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3APCDATA"+></A+><B+>PCDATA</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3APCDATAplus"+></A+><B+>PCDATAplus</B+> [<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section3"+><A NAME="9"+>attribute model+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AAttListDecl"+></A+><B+>AttListDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#AttListDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AAttListDecl"+></A+><B+>AttListDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttDef"+>AttDef</A+>]</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AAttDef"+></A+><B+>AttDef</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#AttDef"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AAttDef"+></A+><B+>AttDef</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AAttType"+>AttType</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ADefaultDecl"+>DefaultDecl</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AAttType"+></A+><B+>AttType</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#AttType"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AStringType"+></A+><B+>StringType</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokenizedType"+></A+><B+>TokenizedType</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ATokenizedType"+>TokenizedType</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEnumeratedType"+></A+><B+>EnumeratedType</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeratedType"+>EnumeratedType</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3ATokenizedType"+></A+><B+>TokenizedType</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#TokenizedType"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AID"+></A+><B+>ID</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AIDREF"+></A+><B+>IDREF</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AIDREFS"+></A+><B+>IDREFS</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AENTITY"+></A+><B+>ENTITY</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AENTITIES"+></A+><B+>ENTITIES</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANMTOKEN"+></A+><B+>NMTOKEN</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANMTOKENS"+></A+><B+>NMTOKENS</B+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AEnumeratedType"+></A+><B+>EnumeratedType</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#EnumeratedType"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ANotationType"+></A+><B+>NotationType</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ANotationType"+>NotationType</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEnumeration"+></A+><B+>Enumeration</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEnumeration"+>Enumeration</A+></TD+><TD CLASS="rdoc"+></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%3ANotationType"+></A+><B+>NotationType</B+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#NotationType"+>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"+>type</SPAN+> <A NAME="t%3AEnumeration"+></A+><B+>Enumeration</B+> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"+>NmToken</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Enumeration"+>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%3ADefaultDecl"+></A+><B+>DefaultDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#DefaultDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AREQUIRED"+></A+><B+>REQUIRED</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AIMPLIED"+></A+><B+>IMPLIED</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ADefaultTo"+></A+><B+>DefaultTo</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"+>AttValue</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AFIXED"+>FIXED</A+>)</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AFIXED"+></A+><B+>FIXED</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#FIXED"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AFIXED"+></A+><B+>FIXED</B+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section3"+><A NAME="10"+>conditional sections+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AConditionalSect"+></A+><B+>ConditionalSect</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ConditionalSect"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AIncludeSect"+></A+><B+>IncludeSect</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AIncludeSect"+>IncludeSect</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AIgnoreSect"+></A+><B+>IgnoreSect</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSect"+>IgnoreSect</A+></TD+><TD CLASS="rdoc"+></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%3AIncludeSect"+></A+><B+>IncludeSect</B+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"+>ExtSubsetDecl</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#IncludeSect"+>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"+>type</SPAN+> <A NAME="t%3AIgnoreSect"+></A+><B+>IgnoreSect</B+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"+>IgnoreSectContents</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#IgnoreSect"+>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%3AIgnore"+></A+><B+>Ignore</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Ignore"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AIgnore"+></A+><B+>Ignore</B+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AIgnoreSectContents"+></A+><B+>IgnoreSectContents</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#IgnoreSectContents"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AIgnoreSectContents"+></A+><B+>IgnoreSectContents</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"+>Ignore</A+> [(<A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents"+>IgnoreSectContents</A+>, <A HREF="Text-XML-HaXml-Types.html#t%3AIgnore"+>Ignore</A+>)]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="11"+>References+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AReference"+></A+><B+>Reference</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Reference"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ARefEntity"+></A+><B+>RefEntity</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"+>EntityRef</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ARefChar"+></A+><B+>RefChar</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"+>CharRef</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reference')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Reference" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>type</SPAN+> <A NAME="t%3AEntityRef"+></A+><B+>EntityRef</B+> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#EntityRef"+>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"+>type</SPAN+> <A NAME="t%3ACharRef"+></A+><B+>CharRef</B+> = Int</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#CharRef"+>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"+>type</SPAN+> <A NAME="t%3APEReference"+></A+><B+>PEReference</B+> = <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#PEReference"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="12"+>Entities+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AEntityDecl"+></A+><B+>EntityDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#EntityDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AEntityGEDecl"+></A+><B+>EntityGEDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AGEDecl"+>GEDecl</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEntityPEDecl"+></A+><B+>EntityPEDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3APEDecl"+>PEDecl</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AGEDecl"+></A+><B+>GEDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#GEDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AGEDecl"+></A+><B+>GEDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3APEDecl"+></A+><B+>PEDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#PEDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3APEDecl"+></A+><B+>PEDecl</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> <A HREF="Text-XML-HaXml-Types.html#t%3APEDef"+>PEDef</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AEntityDef"+></A+><B+>EntityDef</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#EntityDef"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ADefEntityValue"+></A+><B+>DefEntityValue</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"+>EntityValue</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ADefExternalID"+></A+><B+>DefExternalID</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ANDataDecl"+>NDataDecl</A+>)</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3APEDef"+></A+><B+>PEDef</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#PEDef"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3APEDefEntityValue"+></A+><B+>PEDefEntityValue</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"+>EntityValue</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3APEDefExternalID"+></A+><B+>PEDefExternalID</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PEDef')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:PEDef" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3APEDef"+>PEDef</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AExternalID"+></A+><B+>ExternalID</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ExternalID"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ASYSTEM"+></A+><B+>SYSTEM</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"+>SystemLiteral</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3APUBLIC"+></A+><B+>PUBLIC</B+> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"+>PubidLiteral</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"+>SystemLiteral</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ExternalID')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:ExternalID" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A NAME="t%3ANDataDecl"+></A+><B+>NDataDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#NDataDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ANDATA"+></A+><B+>NDATA</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3ATextDecl"+></A+><B+>TextDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#TextDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ATextDecl"+></A+><B+>TextDecl</B+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo"+>VersionInfo</A+>) <A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl"+>EncodingDecl</A+></TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AExtParsedEnt"+></A+><B+>ExtParsedEnt</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ExtParsedEnt"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AExtParsedEnt"+></A+><B+>ExtParsedEnt</B+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"+>TextDecl</A+>) (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i)</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AExtPE"+></A+><B+>ExtPE</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#ExtPE"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AExtPE"+></A+><B+>ExtPE</B+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl"+>TextDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl"+>ExtSubsetDecl</A+>]</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3ANotationDecl"+></A+><B+>NotationDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#NotationDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ANOTATION"+></A+><B+>NOTATION</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> (Either <A HREF="Text-XML-HaXml-Types.html#t%3AExternalID"+>ExternalID</A+> <A HREF="Text-XML-HaXml-Types.html#t%3APublicID"+>PublicID</A+>)</TD+><TD CLASS="rdoc"+></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"+>newtype</SPAN+> <A NAME="t%3APublicID"+></A+><B+>PublicID</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#PublicID"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3APUBLICID"+></A+><B+>PUBLICID</B+> <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"+>PubidLiteral</A+></TD+><TD CLASS="rdoc"+></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"+>newtype</SPAN+> <A NAME="t%3AEncodingDecl"+></A+><B+>EncodingDecl</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#EncodingDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AEncodingDecl"+></A+><B+>EncodingDecl</B+> String</TD+><TD CLASS="rdoc"+></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"+>data</SPAN+> <A NAME="t%3AEntityValue"+></A+><B+>EntityValue</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#EntityValue"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AEntityValue"+></A+><B+>EntityValue</B+> [<A HREF="Text-XML-HaXml-Types.html#t%3AEV"+>EV</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:EntityValue')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:EntityValue" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue"+>EntityValue</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AEV"+></A+><B+>EV</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#EV"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AEVString"+></A+><B+>EVString</B+> String</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AEVRef"+></A+><B+>EVRef</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:EV')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:EV" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3AEV"+>EV</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A NAME="t%3APubidLiteral"+></A+><B+>PubidLiteral</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#PubidLiteral"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3APubidLiteral"+></A+><B+>PubidLiteral</B+> String</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PubidLiteral')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:PubidLiteral" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral"+>PubidLiteral</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>newtype</SPAN+> <A NAME="t%3ASystemLiteral"+></A+><B+>SystemLiteral</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#SystemLiteral"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ASystemLiteral"+></A+><B+>SystemLiteral</B+> String</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SystemLiteral')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:SystemLiteral" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral"+>SystemLiteral</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="13"+>Basic value types+</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%3AName"+></A+><B+>Name</B+> = String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Name"+>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"+>type</SPAN+> <A NAME="t%3ANames"+></A+><B+>Names</B+> = [<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#Names"+>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"+>type</SPAN+> <A NAME="t%3ANmToken"+></A+><B+>NmToken</B+> = String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#NmToken"+>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"+>type</SPAN+> <A NAME="t%3ANmTokens"+></A+><B+>NmTokens</B+> = [<A HREF="Text-XML-HaXml-Types.html#t%3ANmToken"+>NmToken</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#NmTokens"+>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"+>type</SPAN+> <A NAME="t%3ACharData"+></A+><B+>CharData</B+> = String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#CharData"+>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"+>type</SPAN+> <A NAME="t%3ACDSect"+></A+><B+>CDSect</B+> = <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Types.html#CDSect"+>Source</A+></TD+></TR+></TABLE ></TD ></TR ><TR
docs/HaXml/Text-XML-HaXml-Validate.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Validate.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -90,7 +94,7 @@ >DocTypeDecl</A > -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; [String]</TD+> i -&gt; [String]</TD ></TR ><TR ><TD CLASS="s8"@@ -104,7 +108,7 @@ >DocTypeDecl</A > -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; [String]</TD+> i -&gt; [String]</TD ></TR ></TABLE ></TD@@ -122,7 +126,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Avalidate" ></A ><B@@ -131,8 +138,15 @@ >DocTypeDecl</A > -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; [String]</TD+> i -&gt; [String]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Validate.html#validate"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" ><P@@ -157,7 +171,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3ApartialValidate" ></A ><B@@ -166,7 +183,14 @@ >DocTypeDecl</A > -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Element</A-> -&gt; [String]</TD+> i -&gt; [String]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Validate.html#partialValidate"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="doc"
docs/HaXml/Text-XML-HaXml-Verbatim.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Verbatim.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -263,7 +267,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t%3AVerbatim"@@ -273,7 +280,14 @@ > a  <SPAN CLASS="keyword" >where</SPAN ></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Verbatim.html#Verbatim"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -300,16 +314,26 @@ ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Averbatim" ></A ><B >verbatim</B > :: a -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Verbatim.html#verbatim"+>Source</A+></TD ></TR ></TABLE ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s8" ></TD@@ -333,25 +357,25 @@ ><TD CLASS="decl" ><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim" >Verbatim</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AContent"->Content</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"+>Reference</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim" >Verbatim</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"->Element</A-></TD+> (<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> i)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim" >Verbatim</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD+> (<A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> i)</TD ></TR ><TR ><TD CLASS="decl"@@ -383,7 +407,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AverbAttr" ></A ><B@@ -391,6 +418,13 @@ > :: <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute" >Attribute</A > -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Verbatim.html#verbAttr"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="doc"
docs/HaXml/Text-XML-HaXml-Wrappers.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Wrappers.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -89,6 +93,8 @@ >processXmlWith</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A > -&gt; IO ()</TD ></TR ></TABLE@@ -107,13 +113,23 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Afix2Args" ></A ><B >fix2Args</B > :: IO (String, String)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Wrappers.html#fix2Args"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >This useful auxiliary checks the commandline arguments for two@@ -127,14 +143,26 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AprocessXmlWith" ></A ><B >processXmlWith</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A > -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Wrappers.html#processXmlWith"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="doc"
− docs/HaXml/Text-XML-HaXml-Xml2Haskell.html
@@ -1,2315 +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.HaXml.Xml2Haskell</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->HaXml</TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HaXml.Xml2Haskell</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"-><B->Contents</B-></TD-></TR-><TR-><TD-><DL-><DT-><A HREF="#1"->Reading and writing XML data into a typed Haskell representation.-</A-></DT-><DT-><A HREF="#2"->The enabling classes.-</A-></DT-><DT-><A HREF="#3"->Parsing and printing helper functions-</A-></DT-><DT-><A HREF="#4"->Re-exports-</A-></DT-></DL-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This module provides the <TT-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-></TT-> class and <TT-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AreadXml"->readXml</A-></TT-> and writeXml-   functions that you will need if you generate a module of Haskell-   datatype definitions from an XML DTD.  Use the DtdToHaskell-   program to generate both datatypes and instances of this class,-   then import this module to read and write values to and from XML files.-</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%3AreadXml"->readXml</A-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; String -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AshowXml"->showXml</A-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; a -&gt; String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhGetXml"->hGetXml</A-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; IO a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhPutXml"->hPutXml</A-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfReadXml"->fReadXml</A-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; IO a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfWriteXml"->fWriteXml</A-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="#t%3AXmlContent"->XmlContent</A-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromElem"->fromElem</A-> :: [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoElem"->toElem</A-> :: a -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->]</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="#t%3AXmlAttributes"->XmlAttributes</A-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromAttrs"->fromAttrs</A-> :: [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoAttrs"->toAttrs</A-> :: a -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->]</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="#t%3AXmlAttrType"->XmlAttrType</A-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromAttrToTyp"->fromAttrToTyp</A-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoAttrFrTyp"->toAttrFrTyp</A-> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Achoice"->choice</A-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; (a -&gt; b) -&gt; ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe b, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])) -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe b, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Adefinite"->definite</A-> :: ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Amany"->many</A-> :: ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])) -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; ([a], [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromText"->fromText</A-> :: [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe String, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoText"->toText</A-> :: String -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AList1"->List1</A-> a = <A HREF="#v%3ANonEmpty"->NonEmpty</A-> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AANYContent"->ANYContent</A->  = <A HREF="#v%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmaybeToAttr"->maybeToAttr</A-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdefaultToAttr"->defaultToAttr</A-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"->Defaultable</A-> a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdefiniteA"->definiteA</A-> :: (String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdefaultA"->defaultA</A-> :: (String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"->Defaultable</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ApossibleA"->possibleA</A-> :: (String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromAttrToStr"->fromAttrToStr</A-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoAttrFrStr"->toAttrFrStr</A-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ADefaultable"->Defaultable</A-> a</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ADefault"->Default</A-> a</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ANonDefault"->NonDefault</A-> a</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Astr2attr"->str2attr</A-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aattr2str"->attr2str</A-> :: <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A-> -&gt; String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AElement"->Element</A->  = <A HREF="#v%3AElem"->Elem</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AContent"->Content</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ACElem"->CElem</A-> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AElement"->Element</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACString"->CString</A-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACRef"->CRef</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACMisc"->CMisc</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="1"->Reading and writing XML data into a typed Haskell representation.-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AreadXml"-></A-><B->readXml</B-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; String -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="doc"->Read a fully-typed XML document from a string.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AshowXml"-></A-><B->showXml</B-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; a -&gt; String</TD-></TR-><TR-><TD CLASS="doc"->Convert a fully-typed XML document to a string.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AhGetXml"-></A-><B->hGetXml</B-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; IO a</TD-></TR-><TR-><TD CLASS="doc"->Read a fully-typed XML document from a file handle.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AhPutXml"-></A-><B->hPutXml</B-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="doc"->Write a fully-typed XML document to a file handle.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfReadXml"-></A-><B->fReadXml</B-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; IO a</TD-></TR-><TR-><TD CLASS="doc"->Read an XML document from a file and convert it to a fully-typed-   Haskell value.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfWriteXml"-></A-><B->fWriteXml</B-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="doc"->Write a fully-typed Haskell value to the given file as an XML-   document.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="2"->The enabling classes.-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A NAME="t%3AXmlContent"-></A-><B->XmlContent</B-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The XmlContent class promises that an XML content element can be-   converted to and from a Haskell value.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"->Methods</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A NAME="v%3AfromElem"-></A-><B->fromElem</B-> :: [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoElem"-></A-><B->toElem</B-> :: a -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->]</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:XmlContent')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:XmlContent" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (a, b)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (a, b, c)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AList1"->List1</A-> a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (Maybe a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> [a]</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"->OneOf2</A-> a b)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"->OneOf3</A-> a b c)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"->OneOf4</A-> a b c d)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"->OneOf5</A-> a b c d e)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"->OneOf6</A-> a b c d e f)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"->OneOf7</A-> a b c d e f g)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"->OneOf8</A-> a b c d e f g h)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"->OneOf9</A-> a b c d e f g h i)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"->OneOf10</A-> a b c d e f g h i j)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"->OneOf11</A-> a b c d e f g h i j k)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"->OneOf12</A-> a b c d e f g h i j k l)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"->OneOf13</A-> a b c d e f g h i j k l m)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"->OneOf14</A-> a b c d e f g h i j k l m n)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"->OneOf15</A-> a b c d e f g h i j k l m n o)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"->OneOf16</A-> a b c d e f g h i j k l m n o p)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"->OneOf17</A-> a b c d e f g h i j k l m n o p q)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> r) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"->OneOf18</A-> a b c d e f g h i j k l m n o p q r)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> r, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> s) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"->OneOf19</A-> a b c d e f g h i j k l m n o p q r s)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> r, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> s, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> t) =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"->OneOf20</A-> a b c d e f g h i j k l m n o p q r s t)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A NAME="t%3AXmlAttributes"-></A-><B->XmlAttributes</B-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The XmlAttributes class promises that a list of XML tag attributes-   can be converted to and from a Haskell value.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"->Methods</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A NAME="v%3AfromAttrs"-></A-><B->fromAttrs</B-> :: [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoAttrs"-></A-><B->toAttrs</B-> :: a -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->]</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A NAME="t%3AXmlAttrType"-></A-><B->XmlAttrType</B-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The XmlAttrType class promises that an attribute taking an XML enumerated-   type can be converted to and from a Haskell value.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"->Methods</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A NAME="v%3AfromAttrToTyp"-></A-><B->fromAttrToTyp</B-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoAttrFrTyp"-></A-><B->toAttrFrTyp</B-> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="3"->Parsing and printing helper functions-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3Achoice"-></A-><B->choice</B-> :: <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; (a -&gt; b) -&gt; ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe b, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])) -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe b, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3Adefinite"-></A-><B->definite</B-> :: ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3Amany"-></A-><B->many</B-> :: ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])) -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; ([a], [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfromText"-></A-><B->fromText</B-> :: [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->] -&gt; (Maybe String, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->])</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoText"-></A-><B->toText</B-> :: String -&gt; [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->]</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AList1"-></A-><B->List1</B-> a</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The List1 type represents lists with at least one element.-   It is required for DTD content models that use + as a modifier.-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ANonEmpty"-></A-><B->NonEmpty</B-> [a]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:List1')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:List1" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->??? a =&gt; Eq (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AList1"->List1</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->??? a =&gt; Show (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AList1"->List1</A-> a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AList1"->List1</A-> a)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AANYContent"-></A-><B->ANYContent</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->A type corresponding to XML's ANY contentspec-data ANYContent = forall a . XmlContent a =&gt; ANYContent a-</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%3AANYContent"-></A-><B->ANYContent</B-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ANYContent')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:ANYContent" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->XmlContent</A-> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AANYContent"->ANYContent</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AmaybeToAttr"-></A-><B->maybeToAttr</B-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AdefaultToAttr"-></A-><B->defaultToAttr</B-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"->Defaultable</A-> a -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AdefiniteA"-></A-><B->definiteA</B-> :: (String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AdefaultA"-></A-><B->defaultA</B-> :: (String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"->Defaultable</A-> a</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3ApossibleA"-></A-><B->possibleA</B-> :: (String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AfromAttrToStr"-></A-><B->fromAttrToStr</B-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3AtoAttrFrStr"-></A-><B->toAttrFrStr</B-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ADefaultable"-></A-><B->Defaultable</B-> a</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->If an attribute is defaultable, then it either takes the default-   value (which is omitted from the output), or a non-default value-   (which obviously must be printed).-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ADefault"-></A-><B->Default</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANonDefault"-></A-><B->NonDefault</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Defaultable')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Defaultable" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq a =&gt; Eq (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"->Defaultable</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->Show a =&gt; Show (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"->Defaultable</A-> a)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3Astr2attr"-></A-><B->str2attr</B-> :: String -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><A NAME="v%3Aattr2str"-></A-><B->attr2str</B-> :: <A HREF="Text-XML-HaXml-Types.html#t%3AAttValue"->AttValue</A-> -&gt; String</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="4"->Re-exports-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AElement"-></A-><B->Element</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AElem"-></A-><B->Elem</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"->Attribute</A->] [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Element" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AElement"->Element</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AContent"-></A-><B->Content</B-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ACElem"-></A-><B->CElem</B-> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AElement"->Element</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACString"-></A-><B->CString</B-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A-></TD-><TD CLASS="rdoc"->bool is whether whitespace is significant-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACRef"-></A-><B->CRef</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AReference"->Reference</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACMisc"-></A-><B->CMisc</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Content" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Content</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 0.8</TD-></TR-></TABLE-></BODY-></HTML->
+ docs/HaXml/Text-XML-HaXml-XmlContent.html view
@@ -0,0 +1,4464 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.XmlContent</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.XmlContent</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>Re-export the relevant set of generic XML document type definitions+</A+></DT+><DT+><A HREF="#2"+>The enabling classes, that define parsing/unparsing between Haskell+</A+></DT+><DD+><DL+><DT+><A HREF="#3"+>Auxiliaries for writing parsers in the XmlContent class+</A+></DT+><DT+><A HREF="#4"+>Auxiliaries for generating in the XmlContent class+</A+></DT+><DT+><A HREF="#5"+>Auxiliaries for the attribute-related classes+</A+></DT+></DL+></DD+><DT+><A HREF="#6"+>Whole-document conversion functions+</A+></DT+><DT+><A HREF="#7"+>Explicit representation of Haskell datatype information+</A+></DT+><DT+><A HREF="#8"+>Types useful for some content models+</A+></DT+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+><P+>The class <TT+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+></TT+> is a kind of replacement for Read and Show:+   it provides conversions between a generic XML tree representation+   and your own more specialised typeful Haskell data trees.+</P+><P+>If you are starting with a set of Haskell datatypes, use DrIFT to+   derive instances of this class for you:+       http://repetae.net/john/computer/haskell/DrIFT+   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+   to generate both the Haskell types and the corresponding instances.+</P+><P+>This unified class interface replaces two previous (somewhat similar)+   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have+   separate classes depending on how you originally defined your datatypes.+</P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ADocument"+>Document</A+> i = <A HREF="#v%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"+>Prolog</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+>) (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AElement"+>Element</A+> i = <A HREF="#v%3AElem"+>Elem</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> i]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AElemTag"+>ElemTag</A+>  = <A HREF="#v%3AElemTag"+>ElemTag</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AContent"+>Content</A+> i</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ACElem"+>CElem</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> i) i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACString"+>CString</A+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+> i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACRef"+>CRef</A+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Reference</A+> i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACMisc"+>CMisc</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+> i</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AAttribute"+>Attribute</A+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AAttValue"+>AttValue</A+>  = <A HREF="#v%3AAttValue"+>AttValue</A+> [Either String <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Reference</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AProlog"+>Prolog</A+>  = <A HREF="#v%3AProlog"+>Prolog</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"+>XMLDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AReference"+>Reference</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ARefEntity"+>RefEntity</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"+>EntityRef</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ARefChar"+>RefChar</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"+>CharRef</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A HREF="#t%3AXmlContent"+>XmlContent</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3AparseContents"+>parseContents</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoContents"+>toContents</A+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()]</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxToChar"+>xToChar</A+> :: a -&gt; Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxFromChar"+>xFromChar</A+> :: Char -&gt; a</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="#t%3AXmlAttributes"+>XmlAttributes</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromAttrs"+>fromAttrs</A+> :: [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrs"+>toAttrs</A+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>]</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="#t%3AXmlAttrType"+>XmlAttrType</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromAttrToTyp"+>fromAttrToTyp</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrFrTyp"+>toAttrFrTyp</A+> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AXMLParser"+>XMLParser</A+> a = Parser (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>) a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acontent"+>content</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposnElement"+>posnElement</A+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aelement"+>element</A+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Ainterior"+>interior</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AinElement"+>inElement</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atext"+>text</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aattributes"+>attributes</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"+>XmlAttributes</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposnElementWith"+>posnElementWith</A+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AelementWith"+>elementWith</A+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AinElementWith"+>inElementWith</A+> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achoice"+>choice</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> b -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adefinite"+>definite</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkElem"+>mkElem</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkElemC"+>mkElemC</A+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkAttr"+>mkAttr</A+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoText"+>toText</A+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoCData"+>toCData</A+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmaybeToAttr"+>maybeToAttr</A+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdefaultToAttr"+>defaultToAttr</A+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"+>Defaultable</A+> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdefiniteA"+>definiteA</A+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdefaultA"+>defaultA</A+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"+>Defaultable</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ApossibleA"+>possibleA</A+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; Maybe a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromAttrToStr"+>fromAttrToStr</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrFrStr"+>toAttrFrStr</A+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ADefaultable"+>Defaultable</A+> a</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ADefault"+>Default</A+> a</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ANonDefault"+>NonDefault</A+> a</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Astr2attr"+>str2attr</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aattr2str"+>attr2str</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+> -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aattval"+>attval</A+> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> i -&gt; a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoXml"+>toXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"+>Document</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromXml"+>fromXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Either String a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AreadXml"+>readXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; String -&gt; Either String a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AshowXml"+>showXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsShowXml"+>fpsShowXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfReadXml"+>fReadXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; IO a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfWriteXml"+>fWriteXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsWriteXml"+>fpsWriteXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AhGetXml"+>hGetXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; IO a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AhPutXml"+>hPutXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsHPutXml"+>fpsHPutXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-TypeMapping.html"+>Text.XML.HaXml.TypeMapping</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AList1"+>List1</A+> a = <A HREF="#v%3ANonEmpty"+>NonEmpty</A+> [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AANYContent"+>ANYContent</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <SPAN CLASS="keyword"+>forall</SPAN+> a . (XmlContent a, Show a) =&gt; <A HREF="#v%3AANYContent"+>ANYContent</A+> a</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AUnConverted"+>UnConverted</A+> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>]</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Re-export the relevant set of generic XML document type definitions+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3ADocument"+></A+><B+>Document</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#Document"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The symbol table stored in a document holds all its general entity+   reference definitions.+</TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ADocument"+></A+><B+>Document</B+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"+>Prolog</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+>) (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Document')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Document" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"+>Document</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AElement"+></A+><B+>Element</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#Element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElem"+></A+><B+>Elem</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> i]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Element" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AElemTag"+></A+><B+>ElemTag</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#ElemTag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElemTag"+></A+><B+>ElemTag</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>]</TD+><TD CLASS="rdoc"+>intermediate for parsing+</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ElemTag')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:ElemTag" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElemTag"+>ElemTag</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AContent"+></A+><B+>Content</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#Content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ACElem"+></A+><B+>CElem</B+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> i) i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACString"+></A+><B+>CString</B+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+> i</TD+><TD CLASS="rdoc"+>bool is whether whitespace is significant+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACRef"+></A+><B+>CRef</B+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Reference</A+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACMisc"+></A+><B+>CMisc</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+> i</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Content" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>type</SPAN+> <A NAME="t%3AAttribute"+></A+><B+>Attribute</B+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#Attribute"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AAttValue"+></A+><B+>AttValue</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#AttValue"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AAttValue"+></A+><B+>AttValue</B+> [Either String <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Reference</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AttValue')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:AttValue" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AProlog"+></A+><B+>Prolog</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#Prolog"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AProlog"+></A+><B+>Prolog</B+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"+>XMLDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AReference"+></A+><B+>Reference</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#Reference"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ARefEntity"+></A+><B+>RefEntity</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"+>EntityRef</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ARefChar"+></A+><B+>RefChar</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"+>CharRef</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reference')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Reference" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Reference</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>The enabling classes, that define parsing/unparsing between Haskell+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A NAME="t%3AXmlContent"+></A+><B+>XmlContent</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlContent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>XmlContent</TT+> class promises that an XML Content element can be+   converted to and from a Haskell value.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AparseContents"+></A+><B+>parseContents</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#parseContents"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert from XML to Haskell+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoContents"+></A+><B+>toContents</B+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toContents"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert from Haskell to XML+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxToChar"+></A+><B+>xToChar</B+> :: a -&gt; Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#xToChar"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Dummy functions (for most types): used <EM+>only</EM+> in the Char instance+   for coercing lists of Char into String.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxFromChar"+></A+><B+>xFromChar</B+> :: Char -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#xFromChar"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:XmlContent')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:XmlContent" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> Bool</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> Double</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> Float</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> Int</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> Integer</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> ()</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (a, b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (Maybe a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> [a]</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (Either a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>OneOf3</A+> a b c)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>OneOf4</A+> a b c d)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>OneOf5</A+> a b c d e)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>OneOf6</A+> a b c d e f)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>OneOf7</A+> a b c d e f g)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>OneOf8</A+> a b c d e f g h)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>OneOf9</A+> a b c d e f g h i)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>OneOf10</A+> a b c d e f g h i j)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>OneOf11</A+> a b c d e f g h i j k)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>OneOf12</A+> a b c d e f g h i j k l)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>OneOf13</A+> a b c d e f g h i j k l m)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>OneOf14</A+> a b c d e f g h i j k l m n)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>OneOf15</A+> a b c d e f g h i j k l m n o)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>OneOf16</A+> a b c d e f g h i j k l m n o p)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>OneOf17</A+> a b c d e f g h i j k l m n o p q)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>OneOf18</A+> a b c d e f g h i j k l m n o p q r)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>OneOf19</A+> a b c d e f g h i j k l m n o p q r s)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> s, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"+>OneOf20</A+> a b c d e f g h i j k l m n o p q r s t)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A NAME="t%3AXmlAttributes"+></A+><B+>XmlAttributes</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlAttributes"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>XmlAttributes</TT+> class promises that a list of XML tag attributes+   can be converted to and from a Haskell value.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromAttrs"+></A+><B+>fromAttrs</B+> :: [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrs"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoAttrs"+></A+><B+>toAttrs</B+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrs"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A NAME="t%3AXmlAttrType"+></A+><B+>XmlAttrType</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlAttrType"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>XmlAttrType</TT+> class promises that an attribute taking an XML+   enumerated type can be converted to and from a Haskell value.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromAttrToTyp"+></A+><B+>fromAttrToTyp</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrToTyp"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoAttrFrTyp"+></A+><B+>toAttrFrTyp</B+> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrFrTyp"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>Auxiliaries for writing parsers in the XmlContent class+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>type</SPAN+> <A NAME="t%3AXMLParser"+></A+><B+>XMLParser</B+> a = Parser (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>) a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#XMLParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>We need a parsing monad for reading generic XML Content into specific+   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly+   ones, where the input token type is fixed as XML Content.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acontent"+></A+><B+>content</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>The most primitive combinator for XMLParser - get one content item.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AposnElement"+></A+><B+>posnElement</B+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#posnElement"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>A specialisation of <TT+>posnElementWith (==)</TT+>.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelement"+></A+><B+>element</B+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Get the next content element, checking that it has one of the required+   tags.  (Skips over comments and whitespace, rejects text and refs.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Ainterior"+></A+><B+>interior</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#interior"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Run an XMLParser on the contents of the given element (i.e. not on the+   current monadic content sequence), checking that the contents are+   exhausted, before returning the calculated value within the current+   parser context.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AinElement"+></A+><B+>inElement</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#inElement"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>A combination of element + interior.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Atext"+></A+><B+>text</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#text"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Atext"+>text</A+></TT+> is a counterpart to <TT+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aelement"+>element</A+></TT+>, parsing text content if it+   exists.  Adjacent text and references are coalesced.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aattributes"+></A+><B+>attributes</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"+>XmlAttributes</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#attributes"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Do some parsing of the attributes of the given element+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AposnElementWith"+></A+><B+>posnElementWith</B+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#posnElementWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Get the next content element, checking that it has one of the required+   tags, using the given matching function. +   (Skips over comments and whitespace, rejects text and refs.+    Also returns position of element.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AelementWith"+></A+><B+>elementWith</B+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#elementWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Like element, only permits a more flexible match against the tagname.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AinElementWith"+></A+><B+>inElementWith</B+> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#inElementWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>A combination of elementWith + interior.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Achoice"+></A+><B+>choice</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> b -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> b</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#choice"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'choice f p' means if parseContents succeeds, apply f to the result,+   otherwise use the continuation parser.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adefinite"+></A+><B+>definite</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#definite"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>not sure this is needed now.   'definite p' previously ensured that+   an element was definitely present.  Now I think the monad might take+   care of that for us.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>Auxiliaries for generating in the XmlContent class+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkElem"+></A+><B+>mkElem</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#mkElem"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Generate an element with no attributes, named for its HType.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkElemC"+></A+><B+>mkElemC</B+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#mkElemC"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Generate an element with no attributes, named directly.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkAttr"+></A+><B+>mkAttr</B+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#mkAttr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Generate a single attribute.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoText"+></A+><B+>toText</B+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toText"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Turn a simple string into XML text. +</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoCData"+></A+><B+>toCData</B+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> ()]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toCData"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Turn a string into an XML CDATA section.+   (i.e. special characters like &amp; are preserved without interpretation.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>Auxiliaries for the attribute-related classes+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmaybeToAttr"+></A+><B+>maybeToAttr</B+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#maybeToAttr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdefaultToAttr"+></A+><B+>defaultToAttr</B+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"+>Defaultable</A+> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#defaultToAttr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdefiniteA"+></A+><B+>definiteA</B+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#definiteA"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdefaultA"+></A+><B+>defaultA</B+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"+>Defaultable</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#defaultA"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ApossibleA"+></A+><B+>possibleA</B+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+>] -&gt; Maybe a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#possibleA"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromAttrToStr"+></A+><B+>fromAttrToStr</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrToStr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoAttrFrStr"+></A+><B+>toAttrFrStr</B+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrFrStr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3ADefaultable"+></A+><B+>Defaultable</B+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#Defaultable"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>If an attribute is defaultable, then it either takes the default+   value (which is omitted from the output), or a non-default value+   (which obviously must be printed).+</TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ADefault"+></A+><B+>Default</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANonDefault"+></A+><B+>NonDefault</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Defaultable')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Defaultable" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"+>Defaultable</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+>Show a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"+>Defaultable</A+> a)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Astr2attr"+></A+><B+>str2attr</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#str2attr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aattr2str"+></A+><B+>attr2str</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>AttValue</A+> -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#attr2str"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aattval"+></A+><B+>attval</B+> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Element</A+> i -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#attval"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a single attribute called <A HREF="value.html"+>value</A+>.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="6"+>Whole-document conversion functions+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoXml"+></A+><B+>toXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"+>Document</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a string (with or without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromXml"+></A+><B+>fromXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Either String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fromXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a Haskell value from an XML document, ignoring the DTD and+   using the Haskell result type to determine how to parse it.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AreadXml"+></A+><B+>readXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; String -&gt; Either String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#readXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a fully-typed XML document from a string.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AshowXml"+></A+><B+>showXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#showXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a string (without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsShowXml"+></A+><B+>fpsShowXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsShowXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a ByteString (without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfReadXml"+></A+><B+>fReadXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; IO a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fReadXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read an XML document from a file and convert it to a fully-typed+   Haskell value.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfWriteXml"+></A+><B+>fWriteXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fWriteXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed Haskell value to the given file as an XML+   document.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsWriteXml"+></A+><B+>fpsWriteXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsWriteXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write any Haskell value to the given file as an XML document,+   using the FastPackedString interface (output will not be prettified).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AhGetXml"+></A+><B+>hGetXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; IO a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#hGetXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a fully-typed XML document from a file handle.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AhPutXml"+></A+><B+>hPutXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#hPutXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed XML document to a file handle.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsHPutXml"+></A+><B+>fpsHPutXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsHPutXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed XML document to a file handle, using the+   FastPackedString interface (output will not be prettified).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="7"+>Explicit representation of Haskell datatype information+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-TypeMapping.html"+>Text.XML.HaXml.TypeMapping</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="8"+>Types useful for some content models+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AList1"+></A+><B+>List1</B+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#List1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The List1 type represents lists with at least one element.+   It is required for DTD content models that use + as a modifier.+</TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ANonEmpty"+></A+><B+>NonEmpty</B+> [a]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:List1')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:List1" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>??? a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+>??? a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+>List1</A+> a)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AANYContent"+></A+><B+>ANYContent</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#ANYContent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+><P+>A type corresponding to XML's ANY contentspec. +   It is either a list of unconverted xml <TT+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+></TT+> +   or some <TT+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+></TT+>-able value.+</P+><P+>Parsing functions (e.g. <TT+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AparseContents"+>parseContents</A+></TT+>) will always produce <TT+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"+>UnConverted</A+></TT+>.+ Note: The Show instance for <TT+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"+>UnConverted</A+></TT+> uses <TT+><A HREF="Text-XML-HaXml-Verbatim.html#v%3Averbatim"+>verbatim</A+></TT+>.+</P+></TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><SPAN CLASS="keyword"+>forall</SPAN+> a . (XmlContent a, Show a) =&gt; <A NAME="v%3AANYContent"+></A+><B+>ANYContent</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AUnConverted"+></A+><B+>UnConverted</B+> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ANYContent')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:ANYContent" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>XmlContent</A+> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></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+>
docs/HaXml/Text-XML-HaXml-Xtract-Combinators.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -72,14 +76,12 @@    The main difference is that the Content Filter type becomes a    Double Filter.  A Double Filter always takes the whole document    as an extra argument, so you can start to traverse it again from-   any inner location within the document tree.+   the root, when at any inner location within the document tree. </P ><P->The new combinators definitions are derived from the old ones.-   New names are derived from the old by surrounding with the letter <TT->o</TT->,-   or by doubling the operator symbols.+>The new combinator definitions are derived from the old ones.+   The same names have the equivalent meaning - use module qualification+   on imports to distinguish between CFilter and DFilter variations. </P ></TD ></TR@@ -104,13 +106,13 @@ >type</SPAN > <A HREF="#t%3ADFilter" >DFilter</A-> = <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i = <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->]</TD+> i]</TD ></TR ><TR ><TD CLASS="s8"@@ -122,9 +124,9 @@ >local</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -136,9 +138,9 @@ >global</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -150,27 +152,41 @@ >dfilter</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+></TR+><TR+><TD CLASS="s8" ></TD ></TR ><TR+><TD CLASS="decl"+><A HREF="#v%3Acfilter"+>cfilter</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> i</TD+></TR+><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aoloco"->oloco</A+><A HREF="#v%3AliftLocal"+>liftLocal</A > :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -178,17 +194,17 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aoglobo"->oglobo</A+><A HREF="#v%3AliftGlobal"+>liftGlobal</A > :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -196,24 +212,34 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aooo"->ooo</A+><A HREF="#v%3Ao"+>o</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+></TR+><TR+><TD CLASS="s8" ></TD ></TR ><TR+><TD CLASS="decl"+><A HREF="#v%3A%7C%3E%7C"+>(|&gt;|)</A+> :: (a -&gt; b -&gt; [c]) -&gt; (a -&gt; b -&gt; [c]) -&gt; a -&gt; b -&gt; [c]</TD+></TR+><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3A%7C%7C%3E%7C%7C"->(||&gt;||)</A+><A HREF="#v%3Aunion"+>union</A > :: (a -&gt; b -&gt; [c]) -&gt; (a -&gt; b -&gt; [c]) -&gt; a -&gt; b -&gt; [c]</TD ></TR ><TR@@ -222,15 +248,15 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aowitho"->owitho</A+><A HREF="#v%3Awith"+>with</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -238,15 +264,15 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aowithouto"->owithouto</A+><A HREF="#v%3Awithout"+>without</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -254,11 +280,11 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aokeepo"->okeepo</A+><A HREF="#v%3Akeep"+>keep</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -266,11 +292,11 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aononeo"->ononeo</A+><A HREF="#v%3Anone"+>none</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -278,11 +304,11 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aochildreno"->ochildreno</A+><A HREF="#v%3Achildren"+>children</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -290,11 +316,11 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aoelmo"->oelmo</A+><A HREF="#v%3Aelm"+>elm</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -302,11 +328,11 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aotxto"->otxto</A+><A HREF="#v%3Atxt"+>txt</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -318,11 +344,11 @@ >applypred</A > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -330,15 +356,15 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aoiffindo"->oiffindo</A+><A HREF="#v%3Aiffind"+>iffind</A > :: String -&gt; (String -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -346,15 +372,15 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3AoifTxto"->oifTxto</A+><A HREF="#v%3AifTxt"+>ifTxt</A > :: (String -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -362,8 +388,8 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aocato"->ocato</A+><A HREF="#v%3Acat"+>cat</A > :: [a -&gt; b -&gt; [c]] -&gt; a -&gt; b -&gt; [c]</TD ></TR ><TR@@ -372,15 +398,15 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3A%2F%2F%3E%3E"->(//&gt;&gt;)</A+><A HREF="#v%3A%2F%3E"+>(/&gt;)</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -388,30 +414,58 @@ ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3A%3C%3C%2F%2F"->(&lt;&lt;//)</A+><A HREF="#v%3A%3C%2F"+>(&lt;/)</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+></TR+><TR+><TD CLASS="s8" ></TD ></TR ><TR+><TD CLASS="decl"+><A HREF="#v%3Adeep"+>deep</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i</TD+></TR+><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl"-><A HREF="#v%3Aodeepo"->odeepo</A+><A HREF="#v%3Adeepest"+>deepest</A > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+></TR+><TR+><TD CLASS="s8" ></TD ></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amulti"+>multi</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i</TD+></TR ></TABLE ></TD ></TR@@ -428,21 +482,31 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t%3ADFilter" ></A ><B >DFilter</B-> = <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i = <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A-> -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent"+> i -&gt; [<A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Content</A->]</TD+> i]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#DFilter"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >double content filter - takes document root + local subtree.@@ -453,17 +517,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Alocal" ></A ><B >local</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#local"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >lift an ordinary content filter to a double filter.@@ -474,36 +548,57 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aglobal" ></A ><B >global</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#global"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Adfilter" ></A ><B >dfilter</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#dfilter"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc"->drop a double filter to an ordinary content filter+>drop a double filter to an ordinary content filter.+   (permitting interior access to document root) </TD ></TR ><TR@@ -511,21 +606,73 @@ ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aoloco"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acfilter" ></A ><B->oloco</B+>cfilter</B+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#cfilter"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>drop a double filter to an ordinary content filter.+   (Where interior access to the document root is not needed, the+    retaining pointer to the outer element can be pruned away.+   <TT+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Acfilter"+>cfilter</A+></TT+> is more space-efficient than <TT+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Adfilter"+>dfilter</A+></TT+> in this situation.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AliftLocal"+></A+><B+>liftLocal</B > :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#liftLocal"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >lift a CFilter combinator to a DFilter combinator@@ -536,39 +683,59 @@ ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aoglobo"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AliftGlobal" ></A ><B->oglobo</B+>liftGlobal</B > :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#liftGlobal"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aooo"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Ao" ></A ><B->ooo</B+>o</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#o"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >lifted composition over double filters.@@ -579,13 +746,23 @@ ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3A%7C%7C%3E%7C%7C"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3A%7C%3E%7C" ></A ><B->(||&gt;||)</B+>(|&gt;|)</B > :: (a -&gt; b -&gt; [c]) -&gt; (a -&gt; b -&gt; [c]) -&gt; a -&gt; b -&gt; [c]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#%7C%3E%7C"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >lifted choice.@@ -596,19 +773,56 @@ ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aowitho"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aunion" ></A ><B->owitho</B+>union</B+> :: (a -&gt; b -&gt; [c]) -&gt; (a -&gt; b -&gt; [c]) -&gt; a -&gt; b -&gt; [c]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#union"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>lifted union.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Awith"+></A+><B+>with</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#with"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >lifted predicates.@@ -619,33 +833,53 @@ ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aowithouto"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Awithout" ></A ><B->owithouto</B+>without</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#without"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aokeepo"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Akeep" ></A ><B->okeepo</B+>keep</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#keep"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >lifted unit and zero.@@ -656,173 +890,335 @@ ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aononeo"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Anone" ></A ><B->ononeo</B+>none</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#none"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aochildreno"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Achildren" ></A ><B->ochildreno</B+>children</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#children"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aoelmo"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelm" ></A ><B->oelmo</B+>elm</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#elm"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aotxto"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Atxt" ></A ><B->otxto</B+>txt</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#txt"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aapplypred" ></A ><B >applypred</B > :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#applypred"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aoiffindo"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aiffind" ></A ><B->oiffindo</B+>iffind</B > :: String -&gt; (String -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#iffind"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3AoifTxto"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AifTxt" ></A ><B->oifTxto</B+>ifTxt</B > :: (String -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A->) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i) -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#ifTxt"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aocato"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acat" ></A ><B->ocato</B+>cat</B > :: [a -&gt; b -&gt; [c]] -&gt; a -&gt; b -&gt; [c]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#cat"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3A%2F%2F%3E%3E"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3A%2F%3E" ></A ><B->(//&gt;&gt;)</B+>(/&gt;)</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#%2F%3E"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3A%3C%3C%2F%2F"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3A%3C%2F" ></A ><B->(&lt;&lt;//)</B+>(&lt;/)</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#%3C%2F"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"-><A NAME="v%3Aodeepo"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adeep" ></A ><B->odeepo</B+>deep</B > :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-> -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#deep"+>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%3Adeepest"+></A+><B+>deepest</B+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#deepest"+>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%3Amulti"+></A+><B+>multi</B+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Combinators.html#multi"+>Source</A+></TD+></TR+></TABLE ></TD ></TR ><TR
docs/HaXml/Text-XML-HaXml-Xtract-Lex.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Xtract/Lex.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -81,10 +85,104 @@ ></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%3AlexXtract"+>lexXtract</A+> :: (String -&gt; String) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3AToken"+>Token</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3APosn"+>Posn</A+>  = <A HREF="#v%3APn"+>Pn</A+> Int</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ATokenT"+>TokenT</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ASymbol"+>Symbol</A+> String</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ATokString"+>TokString</A+> String</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ATokNum"+>TokNum</A+> Integer</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AToken"+>Token</A+> = Either String (<A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3ATokenT"+>TokenT</A+>)</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR ><TD CLASS="section1" >Documentation</TD ></TR@@ -93,21 +191,42 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AlexXtract" ></A ><B >lexXtract</B-> :: String -&gt; [<A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3AToken"+> :: (String -&gt; String) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3AToken" >Token</A >]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Lex.html#lexXtract"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR+><TD CLASS="doc"+>First argument is a transformer for pattern strings, e.g. map toLower,+   but only applying to parts of the pattern not in quotation marks.+   (Needed to canonicalise HTML where tags are case-insensitive, but+   attribute values are case sensitive.)+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3APosn"@@ -115,7 +234,14 @@ ><B >Posn</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Lex.html#Posn"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -172,7 +298,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t%3ATokenT"@@ -180,7 +309,14 @@ ><B >TokenT</B > </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Lex.html#TokenT"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"@@ -257,7 +393,10 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t%3AToken"@@ -269,6 +408,13 @@ >, <A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3ATokenT" >TokenT</A >)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Lex.html#Token"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="s15"
docs/HaXml/Text-XML-HaXml-Xtract-Parse.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/Xtract/Parse.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -95,9 +99,11 @@ ><TD CLASS="decl" ><A HREF="#v%3AparseXtract" >parseXtract</A-> :: String -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> :: [<A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3AToken"+>Token</A+>] -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A-></TD+> i</TD ></TR ><TR ><TD CLASS="s8"@@ -107,9 +113,9 @@ ><TD CLASS="decl" ><A HREF="#v%3Axtract" >xtract</A-> :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> :: (String -&gt; String) -&gt; String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A-></TD+> i</TD ></TR ></TABLE ></TD@@ -127,15 +133,27 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AparseXtract" ></A ><B >parseXtract</B-> :: String -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+> :: [<A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3AToken"+>Token</A+>] -&gt; <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Parse.html#parseXtract"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc" >The cool thing is that the Xtract command parser directly builds@@ -143,10 +161,13 @@ ><A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter" >DFilter</A ></TT-> (see <A HREF="Text-Xml-HaXml-Xtract-Combinators.html"->Text.Xml.HaXml.Xtract.Combinators</A+> (see <A HREF="Text-XML-HaXml-Xtract-Combinators.html"+>Text.XML.HaXml.Xtract.Combinators</A >)    which can be applied to an XML document without further ado.+   (<TT+>parseXtract</TT+> halts the program if a parse error is found.) </TD ></TR ><TR@@ -154,18 +175,29 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Axtract" ></A ><B >xtract</B-> :: String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+> :: (String -&gt; String) -&gt; String -&gt; <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter" >CFilter</A+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/Xtract/Parse.html#xtract"+>Source</A ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc"->To mix an Xtract query into an ordinary HaXml combinator expression.+>To convert an Xtract query into an ordinary HaXml combinator expression.+   First arg is a tag-transformation function (e.g. map toLower) applied </TD ></TR ><TR
docs/HaXml/Text-XML-HaXml.html view
@@ -21,6 +21,10 @@ ><TD CLASS="title" >HaXml</TD ><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml.html"+>Source code</A+></TD+><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD@@ -306,18 +310,26 @@ ></TD ></TR ><TR-><TD CLASS="decl"+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3Aversion" ></A ><B >version</B > :: String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml.html#version"+>Source</A+></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="doc"->The version of the library (currently <A HREF="1-13-2.html"->1.13.2</A->).+>The version of the library. </TD ></TR ><TR
− docs/HaXml/Text.ParserCombinators.HuttonMeijerWallace.html
@@ -1,1075 +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-  ><TITLE-    >Text.ParserCombinators.HuttonMeijerWallace</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "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.ParserCombinators.HuttonMeijerWallace</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >The parser monad</A-		    ></DT-		  ><DT-		  ><A HREF = "#2"-		    >Primitive parser combinators</A-		    ></DT-		  ><DT-		  ><A HREF = "#3"-		    >Derived combinators</A-		    ></DT-		  ><DT-		  ><A HREF = "#4"-		    >Error handling</A-		    ></DT-		  ><DT-		  ><A HREF = "#5"-		    >State handling</A-		    ></DT-		  ><DT-		  ><A HREF = "#6"-		    >Re-parsing</A-		    ></DT-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This library of monadic parser combinators is based on the ones-defined by Graham Hutton and Erik Meijer.  It has been extended by-Malcolm Wallace to use an abstract token type (no longer just a-string) as input, and to incorporate a State Transformer monad, useful-for symbol tables, macros, and so on.  Basic facilities for error-reporting have also been added, and later extended by Graham Klyne-to return the errors through an <TT-	  >Either</TT-	  > type, rather than just-calling <TT-	  >error</TT-	  >.</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%3AParser"-		>Parser</A-		> s t e a = <A HREF = "#v%3AP"-		>P</A-		> (s -&gt; [Either e t] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParseResult"-		>ParseResult</A-		> s t e a)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aitem"-		>item</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e t</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aeof"-		>eof</A-		> :: Show p =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) String ()</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Apapply"-		>papply</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t String a -&gt; s -&gt; [Either String t] -&gt; [(a, s, [Either String t])]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Apapply%27"-		>papply'</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; s -&gt; [Either e t] -&gt; Either e [(a, s, [Either e t])]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%2B%2B%2B"-		>(+++)</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Atok"-		>tok</A-		> :: Eq t =&gt; t -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) e t</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Anottok"-		>nottok</A-		> :: Eq t =&gt; [t] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) e t</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amany"-		>many</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e [a]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amany1"-		>many1</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e [a]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Asepby"-		>sepby</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e b -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e [a]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Asepby1"-		>sepby1</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e b -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e [a]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Achainl"-		>chainl</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Achainl1"-		>chainl1</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e (a -&gt; a -&gt; a) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Achainr"-		>chainr</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Achainr1"-		>chainr1</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e (a -&gt; a -&gt; a) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aops"-		>ops</A-		> :: [(<A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a, b)] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e b</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Abracket"-		>bracket</A-		> :: (Show p, Show t) =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) e b -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) e c -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) e b</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AtoEOF"-		>toEOF</A-		> :: Show p =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) String a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) String a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aelserror"-		>elserror</A-		> :: (Show p, Show t) =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) String a -&gt; String -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s (p, t) String a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Astupd"-		>stupd</A-		> :: (s -&gt; s) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e ()</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Astquery"-		>stquery</A-		> :: (s -&gt; a) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Astget"-		>stget</A-		> :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e s</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Areparse"-		>reparse</A-		> :: [Either e t] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		>Parser</A-		> s t e ()</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >The parser monad</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >newtype</SPAN-	  > <A NAME = "t%3AParser"-	  ></A-	  ><B-	  >Parser</B-	  > s t e a</TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AP"-		      ></A-		      ><B-		      >P</B-		      > (s -&gt; [Either e t] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParseResult"-		      >ParseResult</A-		      > s t e a)</TD-		    ><TD CLASS = "rdoc"-		    >The parser type is parametrised on the types of the state <TT-		      >s</TT-		      >,-the input tokens <TT-		      >t</TT-		      >, error-type <TT-		      >e</TT-		      >, and the result value <TT-		      >a</TT-		      >.-The state and remaining input are threaded through the monad.</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Functor (<A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		      >Parser</A-		      > s t e)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Monad (<A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		      >Parser</A-		      > s t e)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >MonadPlus (<A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-		      >Parser</A-		      > s t e)</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "2"-	  >Primitive parser combinators</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aitem"-	  ></A-	  ><B-	  >item</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e t</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver the first remaining token.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aeof"-	  ></A-	  ><B-	  >eof</B-	  > :: Show p =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) String ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Fail if end of input is not reached</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Apapply"-	  ></A-	  ><B-	  >papply</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t String a -&gt; s -&gt; [Either String t] -&gt; [(a, s, [Either String t])]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Apply the parser to some real input, given an initial state value.-If the parser fails, raise error to halt the program.-(This is the original exported behaviour - to allow the caller to-deal with the error differently, see <TT-	  >papply'</TT-	  >.)</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Apapply%27"-	  ></A-	  ><B-	  >papply'</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; s -&gt; [Either e t] -&gt; Either e [(a, s, [Either e t])]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Apply the parser to some real input, given an initial state value.-If the parser fails, return a diagnostic message to the caller.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "3"-	  >Derived combinators</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%2B%2B%2B"-	  ></A-	  ><B-	  >(+++)</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>A choice between parsers.  Keep only the first success.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Atok"-	  ></A-	  ><B-	  >tok</B-	  > :: Eq t =&gt; t -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) e t</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver the first token if it equals the argument.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Anottok"-	  ></A-	  ><B-	  >nottok</B-	  > :: Eq t =&gt; [t] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) e t</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver the first token if it does not equal the argument.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amany"-	  ></A-	  ><B-	  >many</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e [a]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver zero or more values of <TT-	  >a</TT-	  >.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amany1"-	  ></A-	  ><B-	  >many1</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e [a]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver one or more values of <TT-	  >a</TT-	  >.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Asepby"-	  ></A-	  ><B-	  >sepby</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e b -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e [a]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver zero or more values of <TT-	  >a</TT-	  > separated by <TT-	  >b</TT-	  >'s.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Asepby1"-	  ></A-	  ><B-	  >sepby1</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e b -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e [a]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver one or more values of <TT-	  >a</TT-	  > separated by <TT-	  >b</TT-	  >'s.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Achainl"-	  ></A-	  ><B-	  >chainl</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Achainl1"-	  ></A-	  ><B-	  >chainl1</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e (a -&gt; a -&gt; a) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Achainr"-	  ></A-	  ><B-	  >chainr</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e (a -&gt; a -&gt; a) -&gt; a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Achainr1"-	  ></A-	  ><B-	  >chainr1</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e (a -&gt; a -&gt; a) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aops"-	  ></A-	  ><B-	  >ops</B-	  > :: [(<A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a, b)] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e b</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Abracket"-	  ></A-	  ><B-	  >bracket</B-	  > :: (Show p, Show t) =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) e a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) e b -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) e c -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) e b</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AtoEOF"-	  ></A-	  ><B-	  >toEOF</B-	  > :: Show p =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) String a -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) String a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Accept a complete parse of the input only, no partial parses.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "4"-	  >Error handling</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aelserror"-	  ></A-	  ><B-	  >elserror</B-	  > :: (Show p, Show t) =&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) String a -&gt; String -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s (p, t) String a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>If the parser fails, generate an error message.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "5"-	  >State handling</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Astupd"-	  ></A-	  ><B-	  >stupd</B-	  > :: (s -&gt; s) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Update the internal state.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Astquery"-	  ></A-	  ><B-	  >stquery</B-	  > :: (s -&gt; a) -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Query the internal state.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Astget"-	  ></A-	  ><B-	  >stget</B-	  > :: <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e s</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Deliver the entire internal state.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "6"-	  >Re-parsing</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Areparse"-	  ></A-	  ><B-	  >reparse</B-	  > :: [Either e t] -&gt; <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"-	  >Parser</A-	  > s t e ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This is useful for recursively expanding macros.  When the-user-parser recognises a macro use, it can lookup the macro-expansion from the parse state, lex it, and then stuff the-lexed expansion back down into the parser.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.PrettyPrint.HughesPJ.html
@@ -1,845 +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-  ><TITLE-    >Text.PrettyPrint.HughesPJ</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "Text.PrettyPrint.html"-		>Parent</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.PrettyPrint.HughesPJ</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "Doc"-	  ></A-	  ><B-	  >Doc</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-		      >Doc</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "Mode"-	  ></A-	  ><B-	  >Mode</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "PageMode"-		      ></A-		      ><B-		      >PageMode</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "ZigZagMode"-		      ></A-		      ><B-		      >ZigZagMode</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "LeftMode"-		      ></A-		      ><B-		      >LeftMode</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "OneLineMode"-		      ></A-		      ><B-		      >OneLineMode</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "TextDetails"-	  ></A-	  ><B-	  >TextDetails</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "Chr"-		      ></A-		      ><B-		      >Chr</B-		      > Char</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "Str"-		      ></A-		      ><B-		      >Str</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "PStr"-		      ></A-		      ><B-		      >PStr</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "empty"-	  ></A-	  ><B-	  >empty</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "nest"-	  ></A-	  ><B-	  >nest</B-	  > :: Int -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "text"-	  ></A-	  ><B-	  >text</B-	  > :: String -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "char"-	  ></A-	  ><B-	  >char</B-	  > :: Char -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "int"-	  ></A-	  ><B-	  >int</B-	  > :: Int -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "integer"-	  ></A-	  ><B-	  >integer</B-	  > :: Integer -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "float"-	  ></A-	  ><B-	  >float</B-	  > :: Float -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "double"-	  ></A-	  ><B-	  >double</B-	  > :: Double -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "rational"-	  ></A-	  ><B-	  >rational</B-	  > :: <A HREF = "Ratio.html#Rational"-	  >Rational</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "parens"-	  ></A-	  ><B-	  >parens</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "brackets"-	  ></A-	  ><B-	  >brackets</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "braces"-	  ></A-	  ><B-	  >braces</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "quotes"-	  ></A-	  ><B-	  >quotes</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "doubleQuotes"-	  ></A-	  ><B-	  >doubleQuotes</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "semi"-	  ></A-	  ><B-	  >semi</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "comma"-	  ></A-	  ><B-	  >comma</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "colon"-	  ></A-	  ><B-	  >colon</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "space"-	  ></A-	  ><B-	  >space</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "equals"-	  ></A-	  ><B-	  >equals</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "lparen"-	  ></A-	  ><B-	  >lparen</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "rparen"-	  ></A-	  ><B-	  >rparen</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "lbrack"-	  ></A-	  ><B-	  >lbrack</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "rbrack"-	  ></A-	  ><B-	  >rbrack</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "lbrace"-	  ></A-	  ><B-	  >lbrace</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "rbrace"-	  ></A-	  ><B-	  >rbrace</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "<>"-	  ></A-	  ><B-	  >(&lt;&gt;)</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "<+>"-	  ></A-	  ><B-	  >(&lt;+&gt;)</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "hcat"-	  ></A-	  ><B-	  >hcat</B-	  > :: [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "hsep"-	  ></A-	  ><B-	  >hsep</B-	  > :: [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "$$"-	  ></A-	  ><B-	  >($$)</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "vcat"-	  ></A-	  ><B-	  >vcat</B-	  > :: [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "sep"-	  ></A-	  ><B-	  >sep</B-	  > :: [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "cat"-	  ></A-	  ><B-	  >cat</B-	  > :: [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "fsep"-	  ></A-	  ><B-	  >fsep</B-	  > :: [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "fcat"-	  ></A-	  ><B-	  >fcat</B-	  > :: [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "hang"-	  ></A-	  ><B-	  >hang</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; Int -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "punctuate"-	  ></A-	  ><B-	  >punctuate</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >] -&gt; [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "render"-	  ></A-	  ><B-	  >render</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "fullRender"-	  ></A-	  ><B-	  >fullRender</B-	  > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Mode"-	  >Mode</A-	  > -&gt; Int -&gt; Float -&gt; (<A HREF = "Text.PrettyPrint.HughesPJ.html#TextDetails"-	  >TextDetails</A-	  > -&gt; a -&gt; a) -&gt; a -&gt; <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-	  >Doc</A-	  > -&gt; 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.4</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Combinators.html
@@ -1,2156 +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-  ><TITLE-    >Text.XML.HaXml.Combinators</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Combinators</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >The content filter type.</A-		    ></DT-		  ><DT-		  ><A HREF = "#2"-		    >Simple filters.</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#3"-			>Selection filters.</A-			></DT-		      ><DT-		      ><A HREF = "#4"-			>Predicate filters.</A-			></DT-		      ><DT-		      ><A HREF = "#5"-			>Search filters.</A-			></DT-		      ></DL-		    ></DD-		  ><DT-		  ><A HREF = "#6"-		    >Filter combinators</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#7"-			>Basic combinators.</A-			></DT-		      ><DT-		      ><A HREF = "#8"-			>Recursive search.</A-			></DT-		      ><DT-		      ><A HREF = "#9"-			>Interior editing.</A-			></DT-		      ><DT-		      ><A HREF = "#10"-			>Constructive filters.</A-			></DT-		      ></DL-		    ></DD-		  ><DT-		  ><A HREF = "#11"-		    >C-like conditionals.</A-		    ></DT-		  ><DT-		  ><A HREF = "#12"-		    >Filters with labelled results.</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#13"-			>Using and combining labelled filters.</A-			></DT-		      ><DT-		      ><A HREF = "#14"-			>Some label-generating filters.</A-			></DT-		      ></DL-		    ></DD-		  ></DL-		></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 defines the notion of filters and filter combinators-for processing XML documents.-</P-	  ><P-	  >These XML transformation combinators are described in the paper-``Haskell and XML: Generic Combinators or Type-Based Translation?''-Malcolm Wallace and Colin Runciman, Proceedings ICFP'99.</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%3ACFilter"-		>CFilter</A-		> = <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		> -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Akeep"-		>keep</A-		> :: a -&gt; [a]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Anone"-		>none</A-		> :: a -&gt; [a]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Achildren"-		>children</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aposition"-		>position</A-		> :: Int -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aelm"-		>elm</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Atxt"-		>txt</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Atag"-		>tag</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aattr"-		>attr</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aattrval"-		>attrval</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AtagWith"-		>tagWith</A-		> :: (String -&gt; Bool) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Afind"-		>find</A-		> :: String -&gt; (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aiffind"-		>iffind</A-		> :: String -&gt; (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AifTxt"-		>ifTxt</A-		> :: (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ao"-		>o</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aunion"-		>union</A-		> :: (a -&gt; [b]) -&gt; (a -&gt; [b]) -&gt; a -&gt; [b]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Acat"-		>cat</A-		> :: [a -&gt; [b]] -&gt; a -&gt; [b]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AandThen"-		>andThen</A-		> :: (a -&gt; c) -&gt; (c -&gt; a -&gt; b) -&gt; a -&gt; b</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%7C%3E%7C"-		>(|&gt;|)</A-		> :: (a -&gt; [b]) -&gt; (a -&gt; [b]) -&gt; a -&gt; [b]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Awith"-		>with</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Awithout"-		>without</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%2F%3E"-		>(/&gt;)</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%3C%2F"-		>(&lt;/)</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aet"-		>et</A-		> :: (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Apath"-		>path</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Adeep"-		>deep</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Adeepest"-		>deepest</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amulti"-		>multi</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Awhen"-		>when</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aguards"-		>guards</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Achip"-		>chip</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfoldXml"-		>foldXml</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AmkElem"-		>mkElem</A-		> :: String -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AmkElemAttr"-		>mkElemAttr</A-		> :: String -&gt; [(String, <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>)] -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aliteral"-		>literal</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Acdata"-		>cdata</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AreplaceTag"-		>replaceTag</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AreplaceAttrs"-		>replaceAttrs</A-		> :: [(String, String)] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AThenElse"-		>ThenElse</A-		> a = <A HREF = "#v%3A%3A%3E"-		>(:&gt;)</A-		> a a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%3F%3E"-		>(?&gt;)</A-		> :: (a -&gt; [b]) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3AThenElse"-		>ThenElse</A-		> (a -&gt; [b]) -&gt; a -&gt; [b]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ALabelFilter"-		>LabelFilter</A-		> a = <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		> -&gt; [(a, <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		>)]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aoo"-		>oo</A-		> :: (a -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> a -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ax"-		>x</A-		> :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> a) -&gt; (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> b) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> (a, b)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Anumbered"-		>numbered</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ainterspersed"-		>interspersed</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Atagged"-		>tagged</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aattributed"-		>attributed</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Atextlabelled"-		>textlabelled</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> (Maybe String)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aextracted"-		>extracted</A-		> :: (<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		> -&gt; a) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-		>LabelFilter</A-		> a</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >The content filter type.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ACFilter"-	  ></A-	  ><B-	  >CFilter</B-	  > = <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  > -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>All document transformations are <EM-	  >content filters</EM-	  >.-A filter takes a single XML <TT-	  ><A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	    >Content</A-	    ></TT-	  > value and returns a sequence-of <TT-	  ><A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	    >Content</A-	    ></TT-	  > values, possibly empty.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "2"-	  >Simple filters.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "3"-	  >Selection filters.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>In the algebra of combinators, <TT-	  >none</TT-	  > is the zero, and <TT-	  >keep</TT-	  > the identity.-(They have a more general type than just CFilter.)</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Akeep"-	  ></A-	  ><B-	  >keep</B-	  > :: a -&gt; [a]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Anone"-	  ></A-	  ><B-	  >none</B-	  > :: a -&gt; [a]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Achildren"-	  ></A-	  ><B-	  >children</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Throw away current node, keep just the (unprocessed) children.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aposition"-	  ></A-	  ><B-	  >position</B-	  > :: Int -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Select the <TT-	  >n</TT-	  >'th positional result of a filter.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "4"-	  >Predicate filters.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>These filters either keep or throw away some content based on-a simple test.  For instance, <TT-	  >elm</TT-	  > keeps only a tagged element,-<TT-	  >txt</TT-	  > keeps only non-element text, <TT-	  >tag</TT-	  > keeps only an element-with the named tag, <TT-	  >attr</TT-	  > keeps only an element with the named-attribute, <TT-	  >attrval</TT-	  > keeps only an element with the given-attribute value, <TT-	  >tagWith</TT-	  > keeps only an element whose tag name-satisfies the given predicate.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aelm"-	  ></A-	  ><B-	  >elm</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Atxt"-	  ></A-	  ><B-	  >txt</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Atag"-	  ></A-	  ><B-	  >tag</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aattr"-	  ></A-	  ><B-	  >attr</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-	  >Name</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aattrval"-	  ></A-	  ><B-	  >attrval</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AtagWith"-	  ></A-	  ><B-	  >tagWith</B-	  > :: (String -&gt; Bool) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "5"-	  >Search filters.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Afind"-	  ></A-	  ><B-	  >find</B-	  > :: String -&gt; (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>For a mandatory attribute field, <TT-	  >find key cont</TT-	  > looks up the value of-the attribute name <TT-	  >key</TT-	  >, and applies the continuation <TT-	  >cont</TT-	  > to-the value.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aiffind"-	  ></A-	  ><B-	  >iffind</B-	  > :: String -&gt; (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>When an attribute field may be absent, use <TT-	  >iffind key yes no</TT-	  > to lookup-its value.  If the attribute is absent, it acts as the <TT-	  >no</TT-	  > filter,-otherwise it applies the <TT-	  >yes</TT-	  > filter.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AifTxt"-	  ></A-	  ><B-	  >ifTxt</B-	  > :: (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><TT-	  >ifTxt yes no</TT-	  > processes any textual content with the <TT-	  >yes</TT-	  > filter,-but otherwise is the same as the <TT-	  >no</TT-	  > filter.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "6"-	  >Filter combinators</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "7"-	  >Basic combinators.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ao"-	  ></A-	  ><B-	  >o</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Sequential (<EM-	  >Irish</EM-	  >,<EM-	  >backwards</EM-	  >) composition</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aunion"-	  ></A-	  ><B-	  >union</B-	  > :: (a -&gt; [b]) -&gt; (a -&gt; [b]) -&gt; a -&gt; [b]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Binary parallel composition.  Each filter uses a copy of the input,-rather than one filter using the result of the other.-(Has a more general type than just CFilter.)</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Acat"-	  ></A-	  ><B-	  >cat</B-	  > :: [a -&gt; [b]] -&gt; a -&gt; [b]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Glue a list of filters together.  (A list version of union;-also has a more general type than just CFilter.)</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AandThen"-	  ></A-	  ><B-	  >andThen</B-	  > :: (a -&gt; c) -&gt; (c -&gt; a -&gt; b) -&gt; a -&gt; b</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>A special form of filter composition where the second filter-works over the same data as the first, but also uses the-first's result.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%7C%3E%7C"-	  ></A-	  ><B-	  >(|&gt;|)</B-	  > :: (a -&gt; [b]) -&gt; (a -&gt; [b]) -&gt; a -&gt; [b]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Directional choice:-in <TT-	  >f |&gt;| g</TT-	  > give g-productions only if no f-productions</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Awith"-	  ></A-	  ><B-	  >with</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Pruning: in <TT-	  >f <TT-	    ><A HREF = "Text.XML.HaXml.Combinators.html#v%3Awith"-	      >with</A-	      ></TT-	    > g</TT-	  >,-keep only those f-productions which have at least one g-production</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Awithout"-	  ></A-	  ><B-	  >without</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Pruning: in <TT-	  >f <TT-	    ><A HREF = "Text.XML.HaXml.Combinators.html#v%3Awithout"-	      >without</A-	      ></TT-	    > g</TT-	  >,-keep only those f-productions which have no g-productions</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%2F%3E"-	  ></A-	  ><B-	  >(/&gt;)</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Pronounced <EM-	  >slash</EM-	  >, <TT-	  >f /&gt; g</TT-	  > means g inside f</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%3C%2F"-	  ></A-	  ><B-	  >(&lt;/)</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Pronounced <EM-	  >outside</EM-	  >, <TT-	  >f &lt;/ g</TT-	  > means f containing g</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aet"-	  ></A-	  ><B-	  >et</B-	  > :: (String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Join an element-matching filter with a text-only filter</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Apath"-	  ></A-	  ><B-	  >path</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Express a list of filters like an XPath query, e.g.-<TT-	  >path [children, tag &quot;name1&quot;, attr &quot;attr1&quot;, children, tag &quot;name2&quot;]</TT-	  >-is like the XPath query <TT-	  >/name1[@attr1]/name2</TT-	  >.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "8"-	  >Recursive search.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Recursive search has three variants: <TT-	  >deep</TT-	  > does a breadth-first-search of the tree, <TT-	  >deepest</TT-	  > does a depth-first search, <TT-	  >multi</TT-	  > returns-content at all tree-levels, even those strictly contained within results-that have already been returned.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Adeep"-	  ></A-	  ><B-	  >deep</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Adeepest"-	  ></A-	  ><B-	  >deepest</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amulti"-	  ></A-	  ><B-	  >multi</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "9"-	  >Interior editing.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Awhen"-	  ></A-	  ><B-	  >when</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Interior editing:-<TT-	  >f <TT-	    ><A HREF = "Text.XML.HaXml.Combinators.html#v%3Awhen"-	      >when</A-	      ></TT-	    > g</TT-	  > applies <TT-	  >f</TT-	  > only when the predicate <TT-	  >g</TT-	  > succeeds,-otherwise the content is unchanged.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aguards"-	  ></A-	  ><B-	  >guards</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Interior editing:-<TT-	  >g <TT-	    ><A HREF = "Text.XML.HaXml.Combinators.html#v%3Aguards"-	      >guards</A-	      ></TT-	    > f</TT-	  > applies <TT-	  >f</TT-	  > only when the predicate <TT-	  >g</TT-	  > succeeds,-otherwise the content is discarded.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Achip"-	  ></A-	  ><B-	  >chip</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Process CHildren In Place.  The filter is applied to any children-of an element content, and the element rebuilt around the results.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfoldXml"-	  ></A-	  ><B-	  >foldXml</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Recursive application of filters: a fold-like operator.  Defined-as <TT-	  >f <TT-	    ><A HREF = "Text.XML.HaXml.Combinators.html#v%3Ao"-	      >o</A-	      ></TT-	    > chip (foldXml f)</TT-	  >.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "10"-	  >Constructive filters.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AmkElem"-	  ></A-	  ><B-	  >mkElem</B-	  > :: String -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Build an element with the given tag name - its content is the results-of the given list of filters.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AmkElemAttr"-	  ></A-	  ><B-	  >mkElemAttr</B-	  > :: String -&gt; [(String, <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >)] -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Build an element with the given name, attributes, and content.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aliteral"-	  ></A-	  ><B-	  >literal</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Build some textual content.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Acdata"-	  ></A-	  ><B-	  >cdata</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Build some CDATA content.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AreplaceTag"-	  ></A-	  ><B-	  >replaceTag</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Rename an element tag.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AreplaceAttrs"-	  ></A-	  ><B-	  >replaceAttrs</B-	  > :: [(String, String)] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Replace the attributes of an element.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "11"-	  >C-like conditionals.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  >These definitions provide C-like conditionals, lifted to the filter level.-</P-	  ><P-	  >The <TT-	    >(cond ? yes : no)</TT-	    > style in C becomes <TT-	    >(cond ?&gt; yes :&gt; no)</TT-	    > in Haskell.</P-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AThenElse"-	  ></A-	  ><B-	  >ThenElse</B-	  > a</TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >Conjoin the two branches of a conditional.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3A%3A%3E"-		      ></A-		      ><B-		      >(:&gt;)</B-		      > a a</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%3F%3E"-	  ></A-	  ><B-	  >(?&gt;)</B-	  > :: (a -&gt; [b]) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3AThenElse"-	  >ThenElse</A-	  > (a -&gt; [b]) -&gt; a -&gt; [b]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Select between the two branches of a joined conditional.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "12"-	  >Filters with labelled results.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ALabelFilter"-	  ></A-	  ><B-	  >LabelFilter</B-	  > a = <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  > -&gt; [(a, <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  >)]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>A LabelFilter is like a CFilter except that it pairs up a polymorphic-value (label) with each of its results.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "13"-	  >Using and combining labelled filters.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aoo"-	  ></A-	  ><B-	  >oo</B-	  > :: (a -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > a -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Compose a label-processing filter with a label-generating filter.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ax"-	  ></A-	  ><B-	  >x</B-	  > :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > a) -&gt; (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > b) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > (a, b)</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Combine labels.  Think of this as a pair-wise zip on labels.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "14"-	  >Some label-generating filters.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Anumbered"-	  ></A-	  ><B-	  >numbered</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Number the results from 1 upwards.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ainterspersed"-	  ></A-	  ><B-	  >interspersed</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>In <TT-	  >interspersed a f b</TT-	  >, label each result of <TT-	  >f</TT-	  > with the string <TT-	  >a</TT-	  >,-except for the last one which is labelled with the string <TT-	  >b</TT-	  >.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Atagged"-	  ></A-	  ><B-	  >tagged</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Label each element in the result with its tag name.  Non-element-results get an empty string label.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aattributed"-	  ></A-	  ><B-	  >attributed</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Label each element in the result with the value of the named attribute.-Elements without the attribute, and non-element results, get an-empty string label.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Atextlabelled"-	  ></A-	  ><B-	  >textlabelled</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > (Maybe String)</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Label each textual part of the result with its text.  Element-results get an empty string label.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aextracted"-	  ></A-	  ><B-	  >extracted</B-	  > :: (<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  > -&gt; a) -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"-	  >LabelFilter</A-	  > a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Label each content with some information extracted from itself.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.DtdToHaskell.Convert.html
@@ -1,112 +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-  ><TITLE-    >Text.XML.HaXml.DtdToHaskell.Convert</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.DtdToHaskell.Convert</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This module performs the translation of a parsed XML DTD into the-internal representation of corresponding Haskell data/newtypes.</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%3Adtd2TypeDef"-		>dtd2TypeDef</A-		> :: [<A HREF = "Text.XML.HaXml.Types.html#t%3AMarkupDecl"-		>MarkupDecl</A-		>] -&gt; [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3ATypeDef"-		>TypeDef</A-		>]</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.DtdToHaskell.Instance.html
@@ -1,130 +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-  ><TITLE-    >Text.XML.HaXml.DtdToHaskell.Instance</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.DtdToHaskell.Instance</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></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%3AmkInstance"-		>mkInstance</A-		> :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3ATypeDef"-		>TypeDef</A-		> -&gt; Doc</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 = "decl"-	><A NAME = "v%3AmkInstance"-	  ></A-	  ><B-	  >mkInstance</B-	  > :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3ATypeDef"-	  >TypeDef</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Convert typedef to appropriate instance declaration, either <TT-	  >XmlContent</TT-	  >,-<TT-	  >XmlAttributes</TT-	  >, or <TT-	  >XmlAttrType</TT-	  >.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.DtdToHaskell.TypeDef.html
@@ -1,1027 +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-  ><TITLE-    >Text.XML.HaXml.DtdToHaskell.TypeDef</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.DtdToHaskell.TypeDef</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >Internal representation of types</A-		    ></DT-		  ><DT-		  ><A HREF = "#2"-		    >Pretty-print a TypeDef</A-		    ></DT-		  ><DT-		  ><A HREF = "#3"-		    >Name mangling</A-		    ></DT-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Defines an internal representation of Haskell data/newtype definitions-that correspond to the XML DTD types, and provides pretty-printers to-convert these types into the Doc type of <A HREF = "Text.PrettyPrint.HughesPJ.html"-	  >Text.PrettyPrint.HughesPJ</A-	  >.</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%3ATypeDef"-		      >TypeDef</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ADataDef"-			    >DataDef</A-			    > Bool <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-			    >Name</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AAttrFields"-			    >AttrFields</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AConstructors"-			    >Constructors</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEnumDef"-			    >EnumDef</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-			    >Name</A-			    > [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-			    >Name</A-			    >]</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AConstructors"-		>Constructors</A-		> = [(<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		>, [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		>StructType</A-		>])]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AAttrFields"-		>AttrFields</A-		> = [(<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		>, <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		>StructType</A-		>)]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AStructType"-		      >StructType</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AMaybe"-			    >Maybe</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-			    >StructType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ADefaultable"-			    >Defaultable</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-			    >StructType</A-			    > String</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AList"-			    >List</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-			    >StructType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AList1"-			    >List1</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-			    >StructType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATuple"-			    >Tuple</A-			    > [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-			    >StructType</A-			    >]</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AOneOf"-			    >OneOf</A-			    > [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-			    >StructType</A-			    >]</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AAny"-			    >Any</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AString"-			    >String</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ADefined"-			    >Defined</A-			    > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-			    >Name</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AppTypeDef"-		>ppTypeDef</A-		> :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3ATypeDef"-		>TypeDef</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AppHName"-		>ppHName</A-		> :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AppXName"-		>ppXName</A-		> :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AppAName"-		>ppAName</A-		> :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AName"-		>Name</A-		>  = <A HREF = "#v%3AName"-		>Name</A-		> {<TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "recfield"-		    ><A HREF = "#v%3AxName"-		      >xName</A-		      > :: String</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "recfield"-		    ><A HREF = "#v%3AhName"-		      >hName</A-		      > :: String</TD-		    ></TR-		  ></TABLE-		>}</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aname"-		>name</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aname_"-		>name_</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aname_a"-		>name_a</A-		> :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aname_ac"-		>name_ac</A-		> :: String -&gt; String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aname_f"-		>name_f</A-		> :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amangle"-		>mangle</A-		> :: String -&gt; String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amanglef"-		>manglef</A-		> :: String -&gt; String</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >Internal representation of types</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ATypeDef"-	  ></A-	  ><B-	  >TypeDef</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADataDef"-		      ></A-		      ><B-		      >DataDef</B-		      > Bool <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		      >Name</A-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AAttrFields"-		      >AttrFields</A-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AConstructors"-		      >Constructors</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    >Bool for main/aux.</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEnumDef"-		      ></A-		      ><B-		      >EnumDef</B-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		      >Name</A-		      > [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		      >Name</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3ATypeDef"-		      >TypeDef</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AConstructors"-	  ></A-	  ><B-	  >Constructors</B-	  > = [(<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  >, [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-	  >StructType</A-	  >])]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AAttrFields"-	  ></A-	  ><B-	  >AttrFields</B-	  > = [(<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  >, <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-	  >StructType</A-	  >)]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AStructType"-	  ></A-	  ><B-	  >StructType</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AMaybe"-		      ></A-		      ><B-		      >Maybe</B-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADefaultable"-		      ></A-		      ><B-		      >Defaultable</B-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      > String</TD-		    ><TD CLASS = "rdoc"-		    >String holds default value.</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AList"-		      ></A-		      ><B-		      >List</B-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AList1"-		      ></A-		      ><B-		      >List1</B-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    >Non-empty lists.</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATuple"-		      ></A-		      ><B-		      >Tuple</B-		      > [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AOneOf"-		      ></A-		      ><B-		      >OneOf</B-		      > [<A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AAny"-		      ></A-		      ><B-		      >Any</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >XML's contentspec allows ANY</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AString"-		      ></A-		      ><B-		      >String</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADefined"-		      ></A-		      ><B-		      >Defined</B-		      > <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		      >Name</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AStructType"-		      >StructType</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "2"-	  >Pretty-print a TypeDef</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AppTypeDef"-	  ></A-	  ><B-	  >ppTypeDef</B-	  > :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3ATypeDef"-	  >TypeDef</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AppHName"-	  ></A-	  ><B-	  >ppHName</B-	  > :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Pretty print Haskell name.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AppXName"-	  ></A-	  ><B-	  >ppXName</B-	  > :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Pretty print XML name.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AppAName"-	  ></A-	  ><B-	  >ppAName</B-	  > :: <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Pretty print Haskell attributes name.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "3"-	  >Name mangling</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AName"-	  ></A-	  ><B-	  >Name</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >Need to keep both the XML and Haskell versions of a name.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "5" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AName"-		      ></A-		      ><B-		      >Name</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body" COLSPAN = "2"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  ><A NAME = "v%3AxName"-			    ></A-			    ><B-			    >xName</B-			    > :: String</TD-			  ><TD CLASS = "rdoc"-			  >original XML name</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  ><A NAME = "v%3AhName"-			    ></A-			    ><B-			    >hName</B-			    > :: String</TD-			  ><TD CLASS = "rdoc"-			  >mangled Haskell name</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-		      >Name</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aname"-	  ></A-	  ><B-	  >name</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Make a name valid in both XML and Haskell.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aname_"-	  ></A-	  ><B-	  >name_</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Append an underscore to the Haskell version of the name.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aname_a"-	  ></A-	  ><B-	  >name_a</B-	  > :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Prefix an attribute enumeration type name with its containing element-name.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aname_ac"-	  ></A-	  ><B-	  >name_ac</B-	  > :: String -&gt; String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Prefix an attribute enumeration constructor with its element-tag name,-and its enumeration type name.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aname_f"-	  ></A-	  ><B-	  >name_f</B-	  > :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#t%3AName"-	  >Name</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Prefix a field name with its enclosing element name.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amangle"-	  ></A-	  ><B-	  >mangle</B-	  > :: String -&gt; String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Convert an XML name to a Haskell conid.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amanglef"-	  ></A-	  ><B-	  >manglef</B-	  > :: String -&gt; String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Convert an XML name to a Haskell varid.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Escape.html
@@ -1,157 +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-  ><TITLE-    >Text.XML.HaXml.Escape</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Escape</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></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%3AxmlEscape"-		>xmlEscape</A-		> :: <A HREF = "Text.XML.HaXml.Escape.html#t%3AXmlEscaper"-		>XmlEscaper</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AxmlUnEscape"-		>xmlUnEscape</A-		> :: <A HREF = "Text.XML.HaXml.Escape.html#t%3AXmlEscaper"-		>XmlEscaper</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AXmlEscaper"-		>XmlEscaper</A-		> </TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AstdXmlEscaper"-		>stdXmlEscaper</A-		> :: <A HREF = "Text.XML.HaXml.Escape.html#t%3AXmlEscaper"-		>XmlEscaper</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AmkXmlEscaper"-		>mkXmlEscaper</A-		> :: [(Char, String)] -&gt; (Char -&gt; Bool) -&gt; <A HREF = "Text.XML.HaXml.Escape.html#t%3AXmlEscaper"-		>XmlEscaper</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Haskell2Xml.html
@@ -1,1134 +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-  ><TITLE-    >Text.XML.HaXml.Haskell2Xml</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Haskell2Xml</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >Re-export the entire set of XML type definitions</A-		    ></DT-		  ><DT-		  ><A HREF = "#2"-		    >The class Haskell2Xml</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#3"-			>Conversion functions</A-			></DT-		      ><DT-		      ><A HREF = "#4"-			>IO conversion functions</A-			></DT-		      ></DL-		    ></DD-		  ><DT-		  ><A HREF = "#5"-		    >Auxiliary types</A-		    ></DT-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  >The class <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	      >Haskell2Xml</A-	      ></TT-	    > is a replacement for Read and Show: it provides-textual conversions (to and from an XML representation) for your-Haskell data values.  Use the tool-DrIFT to derive this class for your own datatypes, then-include this module where you want to use the facilities.-</P-	  ><P-	  >The methods <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AtoContents"-	      >toContents</A-	      ></TT-	    > and <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AfromContents"-	      >fromContents</A-	      ></TT-	    > convert a value to and from-a generic internal representation of an XML document <EM-	    >without</EM-	    > a DTD.-The functions <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AtoXml"-	      >toXml</A-	      ></TT-	    > and <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AfromXml"-	      >fromXml</A-	      ></TT-	    > convert a value to and from a generic-internal representation of an XML document <EM-	    >including</EM-	    > a DTD.-The functions <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AreadXml"-	      >readXml</A-	      ></TT-	    > and <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AshowXml"-	      >showXml</A-	      ></TT-	    > convert to and from Strings.-The functions <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AfReadXml"-	      >fReadXml</A-	      ></TT-	    > and <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AfWriteXml"-	      >fWriteXml</A-	      ></TT-	    > do the conversion to and from-the given filenames.-The functions <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AhGetXml"-	      >hGetXml</A-	      ></TT-	    > and <TT-	    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AhPutXml"-	      >hPutXml</A-	      ></TT-	    > do the conversion to and from-the given file handles.-(See the type signatures.)</P-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Synopsis</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Types.html"-		>Text.XML.HaXml.Types</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>class</SPAN-		> <A HREF = "#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a  <SPAN CLASS = "keyword"-		>where</SPAN-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AtoHType"-		      >toHType</A-		      > :: a -&gt; <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AtoContents"-		      >toContents</A-		      > :: a -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      >]</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AfromContents"-		      >fromContents</A-		      > :: [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      >] -&gt; (a, [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      >])</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AxToChar"-		      >xToChar</A-		      > :: a -&gt; Char</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AxFromChar"-		      >xFromChar</A-		      > :: Char -&gt; a</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AtoXml"-		>toXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; a -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-		>Document</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AtoDTD"-		>toDTD</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		>HType</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		>DocTypeDecl</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfromXml"-		>fromXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-		>Document</A-		> -&gt; a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AreadXml"-		>readXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; String -&gt; Maybe a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AshowXml"-		>showXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; a -&gt; String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfReadXml"-		>fReadXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; FilePath -&gt; IO a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfWriteXml"-		>fWriteXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AhGetXml"-		>hGetXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; Handle -&gt; IO a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AhPutXml"-		>hPutXml</A-		> :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		>Haskell2Xml</A-		> a =&gt; Handle -&gt; a -&gt; IO ()</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AHType"-		      >HType</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AMaybe"-			    >Maybe</A-			    > <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-			    >HType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AList"-			    >List</A-			    > <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-			    >HType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATuple"-			    >Tuple</A-			    > [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-			    >HType</A-			    >]</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3APrim"-			    >Prim</A-			    > String String</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AString"-			    >String</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ADefined"-			    >Defined</A-			    > String [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-			    >HType</A-			    >] [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AConstr"-			    >Constr</A-			    >]</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AConstr"-		>Constr</A-		>  = <A HREF = "#v%3AConstr"-		>Constr</A-		> String [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		>HType</A-		>] [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		>HType</A-		>]</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >Re-export the entire set of XML type definitions</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Types.html"-	  >Text.XML.HaXml.Types</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "2"-	  >The class Haskell2Xml</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >class</SPAN-	  > <A NAME = "t%3AHaskell2Xml"-	  ></A-	  ><B-	  >Haskell2Xml</B-	  > a  <SPAN CLASS = "keyword"-	  >where</SPAN-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >A class to convert any Haskell value to and from an XML representation.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Methods</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AtoHType"-		      ></A-		      ><B-		      >toHType</B-		      > :: a -&gt; <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "doc"-		    >Determine the type of the Haskell value (to create a DTD).</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "s8"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AtoContents"-		      ></A-		      ><B-		      >toContents</B-		      > :: a -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      >]</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "doc"-		    >Convert the Haskell value to a generic XML value.</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "s8"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AfromContents"-		      ></A-		      ><B-		      >fromContents</B-		      > :: [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      >] -&gt; (a, [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      >])</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "doc"-		    >Parse a Haskell value from a generic XML representation, returning-the value and the remainder of the XML.</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "s8"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AxToChar"-		      ></A-		      ><B-		      >xToChar</B-		      > :: a -&gt; Char</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "doc"-		    >This function is a dummy for most types: it is used <EM-		      >only</EM-		      > in-the Char instance for coercing lists of Char into String.</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "s8"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AxFromChar"-		      ></A-		      ><B-		      >xFromChar</B-		      > :: Char -&gt; a</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "doc"-		    >This function is a dummy for most types: it is used <EM-		      >only</EM-		      > in-the Char instance for coercing lists of Char into String.</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > Bool</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > Int</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > Integer</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > Float</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > Double</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > Char</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > a =&gt; <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > [a]</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > a, <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > b) =&gt; <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > (a, b)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > a =&gt; <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > (Maybe a)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > a, <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > b) =&gt; <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > (Either a b)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-		      >Haskell2Xml</A-		      > ()</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "3"-	  >Conversion functions</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AtoXml"-	  ></A-	  ><B-	  >toXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; a -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-	  >Document</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Convert any Haskell value to an XML document, including both DTD and-content.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AtoDTD"-	  ></A-	  ><B-	  >toDTD</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-	  >HType</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-	  >DocTypeDecl</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><TT-	  ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AtoDTD"-	    >toDTD</A-	    ></TT-	  > converts a concrete representation of the Haskell type of-a value (obtained by the method <TT-	  ><A HREF = "Text.XML.HaXml.Haskell2Xml.html#v%3AtoHType"-	    >toHType</A-	    ></TT-	  >) into a real DocTypeDecl.-It ensures that PERefs are defined before they are used, and that no-element or attribute-list is declared more than once.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfromXml"-	  ></A-	  ><B-	  >fromXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-	  >Document</A-	  > -&gt; a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Read a Haskell value from an XML document, ignoring the DTD and-using the Haskell result type to determine how to parse it.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AreadXml"-	  ></A-	  ><B-	  >readXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; String -&gt; Maybe a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Convert an XML document encoded as a String, into a Haskell value.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AshowXml"-	  ></A-	  ><B-	  >showXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; a -&gt; String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Convert a Haskell value to an XML document, encoded as a String.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "4"-	  >IO conversion functions</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfReadXml"-	  ></A-	  ><B-	  >fReadXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; FilePath -&gt; IO a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Read a Haskell value from an XML document stored in a file.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfWriteXml"-	  ></A-	  ><B-	  >fWriteXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; FilePath -&gt; a -&gt; IO ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Write a Haskell value to the given file as an XML document.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AhGetXml"-	  ></A-	  ><B-	  >hGetXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; Handle -&gt; IO a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Read a Haskell value from an XML document transmitted through the-given Handle.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AhPutXml"-	  ></A-	  ><B-	  >hPutXml</B-	  > :: <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHaskell2Xml"-	  >Haskell2Xml</A-	  > a =&gt; Handle -&gt; a -&gt; IO ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Write a Haskell value to the given Handle as an XML document.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "5"-	  >Auxiliary types</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AHType"-	  ></A-	  ><B-	  >HType</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >A concrete representation of any Haskell type.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AMaybe"-		      ></A-		      ><B-		      >Maybe</B-		      > <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AList"-		      ></A-		      ><B-		      >List</B-		      > <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATuple"-		      ></A-		      ><B-		      >Tuple</B-		      > [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APrim"-		      ></A-		      ><B-		      >Prim</B-		      > String String</TD-		    ><TD CLASS = "rdoc"-		    >separate Haskell name and Xml name</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AString"-		      ></A-		      ><B-		      >String</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADefined"-		      ></A-		      ><B-		      >Defined</B-		      > String [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      >] [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AConstr"-		      >Constr</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    >A user-defined type has a name, a sequence of type variables,-and a set of constructors.</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AConstr"-	  ></A-	  ><B-	  >Constr</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >A concrete representation of any user-defined Haskell constructor.-The constructor has a name, and a sequence of component types.  The-first sequence of types represents the minimum set of free type-variables occurring in the (second) list of real component types.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AConstr"-		      ></A-		      ><B-		      >Constr</B-		      > String [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      >] [<A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"-		      >HType</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AConstr"-		      >Constr</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AConstr"-		      >Constr</A-		      ></TD-		    ></TR-		  ></TABLE-		></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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Html.Generate.html
@@ -1,1151 +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-  ><TITLE-    >Text.XML.HaXml.Html.Generate</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Html.Generate</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >HTML construction filters</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#2"-			>Containers</A-			></DT-		      ><DT-		      ><A HREF = "#3"-			>Anchors</A-			></DT-		      ><DT-		      ><A HREF = "#4"-			>Text style</A-			></DT-		      ><DT-		      ><A HREF = "#5"-			>Tables</A-			></DT-		      ><DT-		      ><A HREF = "#6"-			>Breaks, lines</A-			></DT-		      ><DT-		      ><A HREF = "#7"-			>Attributes</A-			></DT-		      ></DL-		    ></DD-		  ><DT-		  ><A HREF = "#8"-		    >A simple HTML pretty-printer</A-		    ></DT-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>These are just some common abbreviations for generating HTML-content within the XML transformation framework defined-by <A HREF = "Text.Xml.HaXml.Combinators.html"-	  >Text.Xml.HaXml.Combinators</A-	  >.</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%3Ahtml"-		>html</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahhead"-		>hhead</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahtitle"-		>htitle</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahbody"-		>hbody</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ah1"-		>h1</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ah2"-		>h2</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ah3"-		>h3</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ah4"-		>h4</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahpara"-		>hpara</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahdiv"-		>hdiv</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahspan"-		>hspan</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amargin"-		>margin</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aanchor"-		>anchor</A-		> :: [(String, <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>)] -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amakehref"-		>makehref</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aanchorname"-		>anchorname</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahpre"-		>hpre</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahcentre"-		>hcentre</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahem"-		>hem</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahtt"-		>htt</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahbold"-		>hbold</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aparens"-		>parens</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Abullet"-		>bullet</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahtable"-		>htable</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahrow"-		>hrow</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahcol"-		>hcol</A-		> :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahbr"-		>hbr</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahhr"-		>hhr</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ashowattr"-		>showattr</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%21"-		>(!)</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%3F"-		>(?)</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Ahtmlprint"-		>htmlprint</A-		> :: [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		>] -&gt; <A HREF = "Pretty.html#t%3ADoc"-		>Doc</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >HTML construction filters</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "2"-	  >Containers</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahtml"-	  ></A-	  ><B-	  >html</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahhead"-	  ></A-	  ><B-	  >hhead</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahtitle"-	  ></A-	  ><B-	  >htitle</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahbody"-	  ></A-	  ><B-	  >hbody</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ah1"-	  ></A-	  ><B-	  >h1</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ah2"-	  ></A-	  ><B-	  >h2</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ah3"-	  ></A-	  ><B-	  >h3</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ah4"-	  ></A-	  ><B-	  >h4</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahpara"-	  ></A-	  ><B-	  >hpara</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahdiv"-	  ></A-	  ><B-	  >hdiv</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahspan"-	  ></A-	  ><B-	  >hspan</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amargin"-	  ></A-	  ><B-	  >margin</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "3"-	  >Anchors</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aanchor"-	  ></A-	  ><B-	  >anchor</B-	  > :: [(String, <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >)] -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amakehref"-	  ></A-	  ><B-	  >makehref</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aanchorname"-	  ></A-	  ><B-	  >anchorname</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "4"-	  >Text style</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahpre"-	  ></A-	  ><B-	  >hpre</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahcentre"-	  ></A-	  ><B-	  >hcentre</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahem"-	  ></A-	  ><B-	  >hem</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahtt"-	  ></A-	  ><B-	  >htt</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahbold"-	  ></A-	  ><B-	  >hbold</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aparens"-	  ></A-	  ><B-	  >parens</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Abullet"-	  ></A-	  ><B-	  >bullet</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "5"-	  >Tables</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahtable"-	  ></A-	  ><B-	  >htable</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahrow"-	  ></A-	  ><B-	  >hrow</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahcol"-	  ></A-	  ><B-	  >hcol</B-	  > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "6"-	  >Breaks, lines</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahbr"-	  ></A-	  ><B-	  >hbr</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahhr"-	  ></A-	  ><B-	  >hhr</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "7"-	  >Attributes</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ashowattr"-	  ></A-	  ><B-	  >showattr</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%21"-	  ></A-	  ><B-	  >(!)</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%3F"-	  ></A-	  ><B-	  >(?)</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "8"-	  >A simple HTML pretty-printer</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Ahtmlprint"-	  ></A-	  ><B-	  >htmlprint</B-	  > :: [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  >] -&gt; <A HREF = "Pretty.html#t%3ADoc"-	  >Doc</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Html.Parse.html
@@ -1,137 +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-  ><TITLE-    >Text.XML.HaXml.Html.Parse</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Html.Parse</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This is a parser for HTML documents.  Unlike for XML documents, it-must include a certain amount of error-correction to account for-HTML features like self-terminating tags, unterminated tags, and-incorrect nesting.  The input is tokenised by the-XML lexer (a separate lexer is not required for HTML).</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%3AhtmlParse"-		>htmlParse</A-		> :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-		>Document</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 = "decl"-	><A NAME = "v%3AhtmlParse"-	  ></A-	  ><B-	  >htmlParse</B-	  > :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-	  >Document</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>The first argument is the name of the file, the second is the string-contents of the file.  The result is the generic representation of-an XML document.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Html.Pretty.html
@@ -1,146 +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-  ><TITLE-    >Text.XML.HaXml.Html.Pretty</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Html.Pretty</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This is a separate pretty-printer for HTML documents, recognising-some of the differences between HTML and true XML.</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%3Adocument"-		>document</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-		>Document</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aelement"-		>element</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aattribute"-		>attribute</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Acontent"-		>content</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		> -&gt; Doc</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Lex.html
@@ -1,1277 +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-  ><TITLE-    >Text.XML.HaXml.Lex</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Lex</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >Entry points to the lexer</A-		    ></DT-		  ><DT-		  ><A HREF = "#2"-		    >Token and position types</A-		    ></DT-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  >You don't normally need to use this Lex module directly - it is-called automatically by the parser.  (This interface is only exposed-for debugging purposes.)-</P-	  ><P-	  >This is a hand-written lexer for tokenising the text of an XML-document so that it is ready for parsing.  It attaches position-information in (line,column) format to every token.  The main-entry point is <TT-	    ><A HREF = "Text.XML.HaXml.Lex.html#v%3AxmlLex"-	      >xmlLex</A-	      ></TT-	    >.  A secondary entry point, <TT-	    ><A HREF = "Text.XML.HaXml.Lex.html#v%3AxmlReLex"-	      >xmlReLex</A-	      ></TT-	    >, is-provided for when the parser needs to stuff a string back onto-the front of the text and re-tokenise it (typically when expanding-macros).-</P-	  ><P-	  >As one would expect, the lexer is essentially a small finite-state machine.</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%3AxmlLex"-		>xmlLex</A-		> :: String -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Lex.html#t%3AToken"-		>Token</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AxmlReLex"-		>xmlReLex</A-		> :: <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		>Posn</A-		> -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Lex.html#t%3AToken"-		>Token</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AposInNewCxt"-		>posInNewCxt</A-		> :: String -&gt; Maybe <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		>Posn</A-		> -&gt; <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		>Posn</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AToken"-		>Token</A-		> = Either String (<A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		>Posn</A-		>, <A HREF = "Text.XML.HaXml.Lex.html#t%3ATokenT"-		>TokenT</A-		>)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3APosn"-		>Posn</A-		>  = <A HREF = "#v%3APn"-		>Pn</A-		> String !Int !Int (Maybe <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		>Posn</A-		>)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ATokenT"-		      >TokenT</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ATokCommentOpen"-			    >TokCommentOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokCommentClose"-			    >TokCommentClose</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokPIOpen"-			    >TokPIOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokPIClose"-			    >TokPIClose</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSectionOpen"-			    >TokSectionOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSectionClose"-			    >TokSectionClose</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSection"-			    >TokSection</A-			    > <A HREF = "Text.XML.HaXml.Lex.html#t%3ASection"-			    >Section</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSpecialOpen"-			    >TokSpecialOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSpecial"-			    >TokSpecial</A-			    > <A HREF = "Text.XML.HaXml.Lex.html#t%3ASpecial"-			    >Special</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokEndOpen"-			    >TokEndOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokEndClose"-			    >TokEndClose</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokAnyOpen"-			    >TokAnyOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokAnyClose"-			    >TokAnyClose</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSqOpen"-			    >TokSqOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSqClose"-			    >TokSqClose</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokEqual"-			    >TokEqual</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokQuery"-			    >TokQuery</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokStar"-			    >TokStar</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokPlus"-			    >TokPlus</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokAmp"-			    >TokAmp</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokSemi"-			    >TokSemi</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokHash"-			    >TokHash</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokBraOpen"-			    >TokBraOpen</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokBraClose"-			    >TokBraClose</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokPipe"-			    >TokPipe</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokPercent"-			    >TokPercent</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokComma"-			    >TokComma</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokQuote"-			    >TokQuote</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokName"-			    >TokName</A-			    > String</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokFreeText"-			    >TokFreeText</A-			    > String</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokNull"-			    >TokNull</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ASpecial"-		      >Special</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ADOCTYPEx"-			    >DOCTYPEx</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AELEMENTx"-			    >ELEMENTx</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AATTLISTx"-			    >ATTLISTx</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AENTITYx"-			    >ENTITYx</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANOTATIONx"-			    >NOTATIONx</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ASection"-		      >Section</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ACDATAx"-			    >CDATAx</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AINCLUDEx"-			    >INCLUDEx</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AIGNOREx"-			    >IGNOREx</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >Entry points to the lexer</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AxmlLex"-	  ></A-	  ><B-	  >xmlLex</B-	  > :: String -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Lex.html#t%3AToken"-	  >Token</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>The first argument to <TT-	  ><A HREF = "Text.XML.HaXml.Lex.html#v%3AxmlLex"-	    >xmlLex</A-	    ></TT-	  > is the filename (used for source positions,-especially in error messages), and the second is the string content of-the XML file.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AxmlReLex"-	  ></A-	  ><B-	  >xmlReLex</B-	  > :: <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-	  >Posn</A-	  > -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Lex.html#t%3AToken"-	  >Token</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><TT-	  ><A HREF = "Text.XML.HaXml.Lex.html#v%3AxmlReLex"-	    >xmlReLex</A-	    ></TT-	  > is used when the parser expands a macro (PE reference).-The expansion of the macro must be re-lexed as if for the first time.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AposInNewCxt"-	  ></A-	  ><B-	  >posInNewCxt</B-	  > :: String -&gt; Maybe <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-	  >Posn</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-	  >Posn</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><TT-	  >posInNewCxt name pos</TT-	  > creates a new source position from an old one.-It is used when opening a new file (e.g. a DTD inclusion), to denote-the start of the file <TT-	  >name</TT-	  >, but retain the stacked information that-it was included from the old <TT-	  >pos</TT-	  >.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "2"-	  >Token and position types</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AToken"-	  ></A-	  ><B-	  >Token</B-	  > = Either String (<A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-	  >Posn</A-	  >, <A HREF = "Text.XML.HaXml.Lex.html#t%3ATokenT"-	  >TokenT</A-	  >)</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>All tokens are paired up with a source position.-Lexical errors are passed back through the <TT-	  >Either</TT-	  > type.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3APosn"-	  ></A-	  ><B-	  >Posn</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >Source positions contain a filename, line, column, and an-inclusion point, which is itself another source position,-recursively.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APn"-		      ></A-		      ><B-		      >Pn</B-		      > String !Int !Int (Maybe <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		      >Posn</A-		      >)</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		      >Posn</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"-		      >Posn</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ATokenT"-	  ></A-	  ><B-	  >TokenT</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >The basic token type.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokCommentOpen"-		      ></A-		      ><B-		      >TokCommentOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >&lt;!--</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokCommentClose"-		      ></A-		      ><B-		      >TokCommentClose</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ><UL-		      ><LI-			>-&gt;</LI-			></UL-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokPIOpen"-		      ></A-		      ><B-		      >TokPIOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >&lt;?</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokPIClose"-		      ></A-		      ><B-		      >TokPIClose</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >?&gt;</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSectionOpen"-		      ></A-		      ><B-		      >TokSectionOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >&lt;![</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSectionClose"-		      ></A-		      ><B-		      >TokSectionClose</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >]]&gt;</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSection"-		      ></A-		      ><B-		      >TokSection</B-		      > <A HREF = "Text.XML.HaXml.Lex.html#t%3ASection"-		      >Section</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    >CDATA INCLUDE IGNORE etc</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSpecialOpen"-		      ></A-		      ><B-		      >TokSpecialOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >&lt;!</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSpecial"-		      ></A-		      ><B-		      >TokSpecial</B-		      > <A HREF = "Text.XML.HaXml.Lex.html#t%3ASpecial"-		      >Special</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    >DOCTYPE ELEMENT ATTLIST etc</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokEndOpen"-		      ></A-		      ><B-		      >TokEndOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >&lt;/</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokEndClose"-		      ></A-		      ><B-		      >TokEndClose</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >/&gt;</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokAnyOpen"-		      ></A-		      ><B-		      >TokAnyOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >&lt;</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokAnyClose"-		      ></A-		      ><B-		      >TokAnyClose</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ><PRE-		      ></PRE-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSqOpen"-		      ></A-		      ><B-		      >TokSqOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >[</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSqClose"-		      ></A-		      ><B-		      >TokSqClose</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >]</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokEqual"-		      ></A-		      ><B-		      >TokEqual</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >=</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokQuery"-		      ></A-		      ><B-		      >TokQuery</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >?</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokStar"-		      ></A-		      ><B-		      >TokStar</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >*</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokPlus"-		      ></A-		      ><B-		      >TokPlus</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >+</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokAmp"-		      ></A-		      ><B-		      >TokAmp</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >&amp;</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokSemi"-		      ></A-		      ><B-		      >TokSemi</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >;</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokHash"-		      ></A-		      ><B-		      >TokHash</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >#</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokBraOpen"-		      ></A-		      ><B-		      >TokBraOpen</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >(</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokBraClose"-		      ></A-		      ><B-		      >TokBraClose</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokPipe"-		      ></A-		      ><B-		      >TokPipe</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >|</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokPercent"-		      ></A-		      ><B-		      >TokPercent</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >%</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokComma"-		      ></A-		      ><B-		      >TokComma</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >,</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokQuote"-		      ></A-		      ><B-		      >TokQuote</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >'' or &quot;&quot;</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokName"-		      ></A-		      ><B-		      >TokName</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    >begins with letter, no spaces</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokFreeText"-		      ></A-		      ><B-		      >TokFreeText</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    >any character data</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokNull"-		      ></A-		      ><B-		      >TokNull</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >fake token</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Lex.html#t%3ATokenT"-		      >TokenT</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Lex.html#t%3ATokenT"-		      >TokenT</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ASpecial"-	  ></A-	  ><B-	  >Special</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADOCTYPEx"-		      ></A-		      ><B-		      >DOCTYPEx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AELEMENTx"-		      ></A-		      ><B-		      >ELEMENTx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AATTLISTx"-		      ></A-		      ><B-		      >ATTLISTx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AENTITYx"-		      ></A-		      ><B-		      >ENTITYx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANOTATIONx"-		      ></A-		      ><B-		      >NOTATIONx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Lex.html#t%3ASpecial"-		      >Special</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Lex.html#t%3ASpecial"-		      >Special</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ASection"-	  ></A-	  ><B-	  >Section</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACDATAx"-		      ></A-		      ><B-		      >CDATAx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AINCLUDEx"-		      ></A-		      ><B-		      >INCLUDEx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIGNOREx"-		      ></A-		      ><B-		      >IGNOREx</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Lex.html#t%3ASection"-		      >Section</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Lex.html#t%3ASection"-		      >Section</A-		      ></TD-		    ></TR-		  ></TABLE-		></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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.OneOfN.html
@@ -1,1799 +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-  ><TITLE-    >Text.XML.HaXml.OneOfN</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.OneOfN</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></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"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf2"-		      >OneOf2</A-		      > a b</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf2"-			    >OneOf2</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf2"-			    >TwoOf2</A-			    > b</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf3"-		      >OneOf3</A-		      > a b c</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf3"-			    >OneOf3</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf3"-			    >TwoOf3</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf3"-			    >ThreeOf3</A-			    > c</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf4"-		      >OneOf4</A-		      > a b c d</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf4"-			    >OneOf4</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf4"-			    >TwoOf4</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf4"-			    >ThreeOf4</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf4"-			    >FourOf4</A-			    > d</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf5"-		      >OneOf5</A-		      > a b c d e</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf5"-			    >OneOf5</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf5"-			    >TwoOf5</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf5"-			    >ThreeOf5</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf5"-			    >FourOf5</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf5"-			    >FiveOf5</A-			    > e</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf6"-		      >OneOf6</A-		      > a b c d e f</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf6"-			    >OneOf6</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf6"-			    >TwoOf6</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf6"-			    >ThreeOf6</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf6"-			    >FourOf6</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf6"-			    >FiveOf6</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf6"-			    >SixOf6</A-			    > f</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf7"-		      >OneOf7</A-		      > a b c d e f g</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf7"-			    >OneOf7</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf7"-			    >TwoOf7</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf7"-			    >ThreeOf7</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf7"-			    >FourOf7</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf7"-			    >FiveOf7</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf7"-			    >SixOf7</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf7"-			    >SevenOf7</A-			    > g</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf8"-		      >OneOf8</A-		      > a b c d e f g h</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf8"-			    >OneOf8</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf8"-			    >TwoOf8</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf8"-			    >ThreeOf8</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf8"-			    >FourOf8</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf8"-			    >FiveOf8</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf8"-			    >SixOf8</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf8"-			    >SevenOf8</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf8"-			    >EightOf8</A-			    > h</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf9"-		      >OneOf9</A-		      > a b c d e f g h i</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf9"-			    >OneOf9</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf9"-			    >TwoOf9</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf9"-			    >ThreeOf9</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf9"-			    >FourOf9</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf9"-			    >FiveOf9</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf9"-			    >SixOf9</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf9"-			    >SevenOf9</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf9"-			    >EightOf9</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf9"-			    >NineOf9</A-			    > i</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf10"-		      >OneOf10</A-		      > a b c d e f g h i j</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf10"-			    >OneOf10</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf10"-			    >TwoOf10</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf10"-			    >ThreeOf10</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf10"-			    >FourOf10</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf10"-			    >FiveOf10</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf10"-			    >SixOf10</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf10"-			    >SevenOf10</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf10"-			    >EightOf10</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf10"-			    >NineOf10</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf10"-			    >TenOf10</A-			    > j</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf11"-		      >OneOf11</A-		      > a b c d e f g h i j k</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf11"-			    >OneOf11</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf11"-			    >TwoOf11</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf11"-			    >ThreeOf11</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf11"-			    >FourOf11</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf11"-			    >FiveOf11</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf11"-			    >SixOf11</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf11"-			    >SevenOf11</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf11"-			    >EightOf11</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf11"-			    >NineOf11</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf11"-			    >TenOf11</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf11"-			    >ElevenOf11</A-			    > k</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf12"-		      >OneOf12</A-		      > a b c d e f g h i j k l</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf12"-			    >OneOf12</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf12"-			    >TwoOf12</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf12"-			    >ThreeOf12</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf12"-			    >FourOf12</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf12"-			    >FiveOf12</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf12"-			    >SixOf12</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf12"-			    >SevenOf12</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf12"-			    >EightOf12</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf12"-			    >NineOf12</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf12"-			    >TenOf12</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf12"-			    >ElevenOf12</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf12"-			    >TwelveOf12</A-			    > l</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf13"-		      >OneOf13</A-		      > a b c d e f g h i j k l m</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf13"-			    >OneOf13</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf13"-			    >TwoOf13</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf13"-			    >ThreeOf13</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf13"-			    >FourOf13</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf13"-			    >FiveOf13</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf13"-			    >SixOf13</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf13"-			    >SevenOf13</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf13"-			    >EightOf13</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf13"-			    >NineOf13</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf13"-			    >TenOf13</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf13"-			    >ElevenOf13</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf13"-			    >TwelveOf13</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf13"-			    >ThirteenOf13</A-			    > m</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf14"-		      >OneOf14</A-		      > a b c d e f g h i j k l m n</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf14"-			    >OneOf14</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf14"-			    >TwoOf14</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf14"-			    >ThreeOf14</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf14"-			    >FourOf14</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf14"-			    >FiveOf14</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf14"-			    >SixOf14</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf14"-			    >SevenOf14</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf14"-			    >EightOf14</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf14"-			    >NineOf14</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf14"-			    >TenOf14</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf14"-			    >ElevenOf14</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf14"-			    >TwelveOf14</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf14"-			    >ThirteenOf14</A-			    > m</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourteenOf14"-			    >FourteenOf14</A-			    > n</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf15"-		      >OneOf15</A-		      > a b c d e f g h i j k l m n o</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf15"-			    >OneOf15</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf15"-			    >TwoOf15</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf15"-			    >ThreeOf15</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf15"-			    >FourOf15</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf15"-			    >FiveOf15</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf15"-			    >SixOf15</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf15"-			    >SevenOf15</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf15"-			    >EightOf15</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf15"-			    >NineOf15</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf15"-			    >TenOf15</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf15"-			    >ElevenOf15</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf15"-			    >TwelveOf15</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf15"-			    >ThirteenOf15</A-			    > m</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourteenOf15"-			    >FourteenOf15</A-			    > n</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFifteenOf15"-			    >FifteenOf15</A-			    > o</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf16"-		      >OneOf16</A-		      > a b c d e f g h i j k l m n o p</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf16"-			    >OneOf16</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf16"-			    >TwoOf16</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf16"-			    >ThreeOf16</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf16"-			    >FourOf16</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf16"-			    >FiveOf16</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf16"-			    >SixOf16</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf16"-			    >SevenOf16</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf16"-			    >EightOf16</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf16"-			    >NineOf16</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf16"-			    >TenOf16</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf16"-			    >ElevenOf16</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf16"-			    >TwelveOf16</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf16"-			    >ThirteenOf16</A-			    > m</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourteenOf16"-			    >FourteenOf16</A-			    > n</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFifteenOf16"-			    >FifteenOf16</A-			    > o</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixteenOf16"-			    >SixteenOf16</A-			    > p</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf17"-		      >OneOf17</A-		      > a b c d e f g h i j k l m n o p q</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf17"-			    >OneOf17</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf17"-			    >TwoOf17</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf17"-			    >ThreeOf17</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf17"-			    >FourOf17</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf17"-			    >FiveOf17</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf17"-			    >SixOf17</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf17"-			    >SevenOf17</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf17"-			    >EightOf17</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf17"-			    >NineOf17</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf17"-			    >TenOf17</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf17"-			    >ElevenOf17</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf17"-			    >TwelveOf17</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf17"-			    >ThirteenOf17</A-			    > m</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourteenOf17"-			    >FourteenOf17</A-			    > n</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFifteenOf17"-			    >FifteenOf17</A-			    > o</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixteenOf17"-			    >SixteenOf17</A-			    > p</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASeventeenOf17"-			    >SeventeenOf17</A-			    > q</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf18"-		      >OneOf18</A-		      > a b c d e f g h i j k l m n o p q r</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf18"-			    >OneOf18</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf18"-			    >TwoOf18</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf18"-			    >ThreeOf18</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf18"-			    >FourOf18</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf18"-			    >FiveOf18</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf18"-			    >SixOf18</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf18"-			    >SevenOf18</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf18"-			    >EightOf18</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf18"-			    >NineOf18</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf18"-			    >TenOf18</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf18"-			    >ElevenOf18</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf18"-			    >TwelveOf18</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf18"-			    >ThirteenOf18</A-			    > m</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourteenOf18"-			    >FourteenOf18</A-			    > n</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFifteenOf18"-			    >FifteenOf18</A-			    > o</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixteenOf18"-			    >SixteenOf18</A-			    > p</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASeventeenOf18"-			    >SeventeenOf18</A-			    > q</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEighteenOf18"-			    >EighteenOf18</A-			    > r</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf19"-		      >OneOf19</A-		      > a b c d e f g h i j k l m n o p q r s</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf19"-			    >OneOf19</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf19"-			    >TwoOf19</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf19"-			    >ThreeOf19</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf19"-			    >FourOf19</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf19"-			    >FiveOf19</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf19"-			    >SixOf19</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf19"-			    >SevenOf19</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf19"-			    >EightOf19</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf19"-			    >NineOf19</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf19"-			    >TenOf19</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf19"-			    >ElevenOf19</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf19"-			    >TwelveOf19</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf19"-			    >ThirteenOf19</A-			    > m</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourteenOf19"-			    >FourteenOf19</A-			    > n</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFifteenOf19"-			    >FifteenOf19</A-			    > o</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixteenOf19"-			    >SixteenOf19</A-			    > p</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASeventeenOf19"-			    >SeventeenOf19</A-			    > q</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEighteenOf19"-			    >EighteenOf19</A-			    > r</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineteenOf19"-			    >NineteenOf19</A-			    > s</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AOneOf20"-		      >OneOf20</A-		      > a b c d e f g h i j k l m n o p q r s t</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AOneOf20"-			    >OneOf20</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwoOf20"-			    >TwoOf20</A-			    > b</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThreeOf20"-			    >ThreeOf20</A-			    > c</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourOf20"-			    >FourOf20</A-			    > d</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFiveOf20"-			    >FiveOf20</A-			    > e</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixOf20"-			    >SixOf20</A-			    > f</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASevenOf20"-			    >SevenOf20</A-			    > g</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEightOf20"-			    >EightOf20</A-			    > h</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineOf20"-			    >NineOf20</A-			    > i</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATenOf20"-			    >TenOf20</A-			    > j</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AElevenOf20"-			    >ElevenOf20</A-			    > k</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwelveOf20"-			    >TwelveOf20</A-			    > l</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AThirteenOf20"-			    >ThirteenOf20</A-			    > m</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFourteenOf20"-			    >FourteenOf20</A-			    > n</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AFifteenOf20"-			    >FifteenOf20</A-			    > o</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASixteenOf20"-			    >SixteenOf20</A-			    > p</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASeventeenOf20"-			    >SeventeenOf20</A-			    > q</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEighteenOf20"-			    >EighteenOf20</A-			    > r</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANineteenOf20"-			    >NineteenOf20</A-			    > s</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATwentyOf20"-			    >TwentyOf20</A-			    > t</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "botbar"-	>Produced by <A HREF = "http://www.haskell.org/haddock/"-	  >Haddock</A-	  > version 0.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Parse.html
@@ -1,287 +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-  ><TITLE-    >Text.XML.HaXml.Parse</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Parse</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >Parse a whole document</A-		    ></DT-		  ><DT-		  ><A HREF = "#2"-		    >Parse just a DTD</A-		    ></DT-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>A non-validating XML parser.  For the input grammar, see-<A HREF = "http://www.w3.org/TR/REC-xml"-	  >http://www.w3.org/TR/REC-xml</A-	  >.</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%3AxmlParse"-		>xmlParse</A-		> :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-		>Document</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AxmlParse%27"-		>xmlParse'</A-		> :: String -&gt; String -&gt; Either String <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-		>Document</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AdtdParse"-		>dtdParse</A-		> :: String -&gt; String -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		>DocTypeDecl</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AdtdParse%27"-		>dtdParse'</A-		> :: String -&gt; String -&gt; Either String (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		>DocTypeDecl</A-		>)</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >Parse a whole document</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AxmlParse"-	  ></A-	  ><B-	  >xmlParse</B-	  > :: String -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-	  >Document</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>To parse a whole document, <TT-	  >xmlParse file content</TT-	  > takes a filename-(for generating error reports) and the string content of that file.-A parse error causes program failure, with message to stderr.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AxmlParse%27"-	  ></A-	  ><B-	  >xmlParse'</B-	  > :: String -&gt; String -&gt; Either String <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-	  >Document</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>To parse a whole document, <TT-	  >xmlParse' file content</TT-	  > takes a filename-(for generating error reports) and the string content of that file.-Any parse error message is passed back to the caller through the-<TT-	  >Either</TT-	  > type.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "2"-	  >Parse just a DTD</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AdtdParse"-	  ></A-	  ><B-	  >dtdParse</B-	  > :: String -&gt; String -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-	  >DocTypeDecl</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>To parse just a DTD, <TT-	  >dtdParse file content</TT-	  > takes a filename-(for generating error reports) and the string content of that-file.  If no DTD was found, you get <TT-	  >Nothing</TT-	  > rather than an error.-However, if a DTD is found but contains errors, the program crashes.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AdtdParse%27"-	  ></A-	  ><B-	  >dtdParse'</B-	  > :: String -&gt; String -&gt; Either String (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-	  >DocTypeDecl</A-	  >)</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>To parse just a DTD, <TT-	  >dtdParse' file content</TT-	  > takes a filename-(for generating error reports) and the string content of that-file.  If no DTD was found, you get <TT-	  >Right Nothing</TT-	  >.-If a DTD was found but contains errors, you get a <TT-	  >Left message</TT-	  >.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Pretty.html
@@ -1,362 +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-  ><TITLE-    >Text.XML.HaXml.Pretty</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Pretty</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >Pretty-print a whole document</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#2"-			>Just one content</A-			></DT-		      ><DT-		      ><A HREF = "#3"-			>Just one tagged element</A-			></DT-		      ></DL-		    ></DD-		  ><DT-		  ><A HREF = "#4"-		    >Pretty-print just a DTD</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#5"-			>The prolog</A-			></DT-		      ><DT-		      ><A HREF = "#6"-			>A content particle description</A-			></DT-		      ></DL-		    ></DD-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This is a pretty-printer for turning the internal representation-of generic structured XML documents into the Doc type (which can-later be rendered using Text.ParserCombinators.HughesPJ.render).-Essentially there is one pp function for each type in-Text.Xml.HaXml.Types, so you can pretty-print as much or as little-of the document as you wish.</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%3Adocument"-		>document</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-		>Document</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Acontent"-		>content</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aelement"-		>element</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Adoctypedecl"-		>doctypedecl</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		>DocTypeDecl</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aprolog"-		>prolog</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AProlog"-		>Prolog</A-		> -&gt; Doc</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Acp"-		>cp</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-		>CP</A-		> -&gt; Doc</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >Pretty-print a whole document</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Adocument"-	  ></A-	  ><B-	  >document</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-	  >Document</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "2"-	  >Just one content</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Acontent"-	  ></A-	  ><B-	  >content</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "3"-	  >Just one tagged element</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aelement"-	  ></A-	  ><B-	  >element</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-	  >Element</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "4"-	  >Pretty-print just a DTD</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Adoctypedecl"-	  ></A-	  ><B-	  >doctypedecl</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-	  >DocTypeDecl</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "5"-	  >The prolog</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aprolog"-	  ></A-	  ><B-	  >prolog</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3AProlog"-	  >Prolog</A-	  > -&gt; Doc</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "6"-	  >A content particle description</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Acp"-	  ></A-	  ><B-	  >cp</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-	  >CP</A-	  > -&gt; Doc</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Types.html
@@ -1,4775 +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-  ><TITLE-    >Text.XML.HaXml.Types</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Types</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >A simple symbol table mapping strings (references) to values.</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#2"-			>Symbol table operations</A-			></DT-		      ></DL-		    ></DD-		  ><DT-		  ><A HREF = "#3"-		    >XML Types</A-		    ></DT-		  ><DD-		  ><DL-		    ><DT-		      ><A HREF = "#4"-			>The top-level document container</A-			></DT-		      ><DT-		      ><A HREF = "#5"-			>The main document content</A-			></DT-		      ><DT-		      ><A HREF = "#6"-			>Administrative parts of the document</A-			></DT-		      ><DT-		      ><A HREF = "#7"-			>The DTD</A-			></DT-		      ><DD-		      ><DL-			><DT-			  ><A HREF = "#8"-			    >content model</A-			    ></DT-			  ><DT-			  ><A HREF = "#9"-			    >attribute model</A-			    ></DT-			  ><DT-			  ><A HREF = "#10"-			    >conditional sections</A-			    ></DT-			  ></DL-			></DD-		      ><DT-		      ><A HREF = "#11"-			>References</A-			></DT-		      ><DT-		      ><A HREF = "#12"-			>Entities</A-			></DT-		      ><DT-		      ><A HREF = "#13"-			>Basic value types</A-			></DT-		      ></DL-		    ></DD-		  ></DL-		></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 defines an internal (generic) representation for XML-documents including their DTDs.-</P-	  ><P-	  >History:-The original module was derived by hand from the XML specification,-following the grammar precisely.  Then we simplified the types,-removing layers of indirection and redundancy, and generally making-things easier to work with.  Then we allowed PEReferences to be-ubiquitous, by removing them from the types and resolving all-PE references at parse-time.  Finally, we added a per-document-symbol table for GEReferences, and a whitespace-significance flag-for plaintext.-</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%3ASymTab"-		>SymTab</A-		> a = [(String, a)]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AemptyST"-		>emptyST</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-		>SymTab</A-		> a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AaddST"-		>addST</A-		> :: String -&gt; a -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-		>SymTab</A-		> a -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-		>SymTab</A-		> a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AlookupST"-		>lookupST</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-		>SymTab</A-		> a -&gt; Maybe a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3ADocument"-		>Document</A-		>  = <A HREF = "#v%3ADocument"-		>Document</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AProlog"-		>Prolog</A-		> (<A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-		>SymTab</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityDef"-		>EntityDef</A-		>) <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		> [<A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		>Misc</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AElement"-		>Element</A-		>  = <A HREF = "#v%3AElem"-		>Elem</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>] [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AElemTag"-		>ElemTag</A-		>  = <A HREF = "#v%3AElemTag"-		>ElemTag</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AContent"-		      >Content</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ACElem"-			    >CElem</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-			    >Element</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ACString"-			    >CString</A-			    > Bool <A HREF = "Text.XML.HaXml.Types.html#t%3ACharData"-			    >CharData</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ACRef"-			    >CRef</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-			    >Reference</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ACMisc"-			    >CMisc</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-			    >Misc</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AAttribute"-		>Attribute</A-		> = (<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		>, <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-		>AttValue</A-		>)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AAttValue"-		>AttValue</A-		>  = <A HREF = "#v%3AAttValue"-		>AttValue</A-		> [Either String <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		>Reference</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AProlog"-		>Prolog</A-		>  = <A HREF = "#v%3AProlog"-		>Prolog</A-		> (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AXMLDecl"-		>XMLDecl</A-		>) [<A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		>Misc</A-		>] (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		>DocTypeDecl</A-		>) [<A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		>Misc</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AXMLDecl"-		>XMLDecl</A-		>  = <A HREF = "#v%3AXMLDecl"-		>XMLDecl</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AVersionInfo"-		>VersionInfo</A-		> (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AEncodingDecl"-		>EncodingDecl</A-		>) (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ASDDecl"-		>SDDecl</A-		>)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AMisc"-		      >Misc</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AComment"-			    >Comment</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AComment"-			    >Comment</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3API"-			    >PI</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AProcessingInstruction"-			    >ProcessingInstruction</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AProcessingInstruction"-		>ProcessingInstruction</A-		> = (<A HREF = "Text.XML.HaXml.Types.html#t%3APITarget"-		>PITarget</A-		>, String)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ASDDecl"-		>SDDecl</A-		> = Bool</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AVersionInfo"-		>VersionInfo</A-		> = String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AComment"-		>Comment</A-		> = String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3APITarget"-		>PITarget</A-		> = String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3ADocTypeDecl"-		>DocTypeDecl</A-		>  = <A HREF = "#v%3ADTD"-		>DTD</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-		>ExternalID</A-		>) [<A HREF = "Text.XML.HaXml.Types.html#t%3AMarkupDecl"-		>MarkupDecl</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AMarkupDecl"-		      >MarkupDecl</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AElement"-			    >Element</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AElementDecl"-			    >ElementDecl</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AAttList"-			    >AttList</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AAttListDecl"-			    >AttListDecl</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEntity"-			    >Entity</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityDecl"-			    >EntityDecl</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANotation"-			    >Notation</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3ANotationDecl"-			    >NotationDecl</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AMarkupMisc"-			    >MarkupMisc</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-			    >Misc</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AExtSubset"-		>ExtSubset</A-		>  = <A HREF = "#v%3AExtSubset"-		>ExtSubset</A-		> (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ATextDecl"-		>TextDecl</A-		>) [<A HREF = "Text.XML.HaXml.Types.html#t%3AExtSubsetDecl"-		>ExtSubsetDecl</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AExtSubsetDecl"-		      >ExtSubsetDecl</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AExtMarkupDecl"-			    >ExtMarkupDecl</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AMarkupDecl"-			    >MarkupDecl</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AExtConditionalSect"-			    >ExtConditionalSect</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AConditionalSect"-			    >ConditionalSect</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AElementDecl"-		>ElementDecl</A-		>  = <A HREF = "#v%3AElementDecl"-		>ElementDecl</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AContentSpec"-		>ContentSpec</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AContentSpec"-		      >ContentSpec</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AEMPTY"-			    >EMPTY</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AANY"-			    >ANY</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AMixed"-			    >Mixed</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AMixed"-			    >Mixed</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AContentSpec"-			    >ContentSpec</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-			    >CP</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ACP"-		      >CP</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ATagName"-			    >TagName</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-			    >Name</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AModifier"-			    >Modifier</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AChoice"-			    >Choice</A-			    > [<A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-			    >CP</A-			    >] <A HREF = "Text.XML.HaXml.Types.html#t%3AModifier"-			    >Modifier</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ASeq"-			    >Seq</A-			    > [<A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-			    >CP</A-			    >] <A HREF = "Text.XML.HaXml.Types.html#t%3AModifier"-			    >Modifier</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AModifier"-		      >Modifier</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ANone"-			    >None</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AQuery"-			    >Query</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AStar"-			    >Star</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3APlus"-			    >Plus</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AMixed"-		      >Mixed</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3APCDATA"-			    >PCDATA</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3APCDATAplus"-			    >PCDATAplus</A-			    > [<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-			    >Name</A-			    >]</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AAttListDecl"-		>AttListDecl</A-		>  = <A HREF = "#v%3AAttListDecl"-		>AttListDecl</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttDef"-		>AttDef</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AAttDef"-		>AttDef</A-		>  = <A HREF = "#v%3AAttDef"-		>AttDef</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttType"-		>AttType</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3ADefaultDecl"-		>DefaultDecl</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AAttType"-		      >AttType</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AStringType"-			    >StringType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokenizedType"-			    >TokenizedType</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3ATokenizedType"-			    >TokenizedType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEnumeratedType"-			    >EnumeratedType</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AEnumeratedType"-			    >EnumeratedType</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ATokenizedType"-		      >TokenizedType</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AID"-			    >ID</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AIDREF"-			    >IDREF</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AIDREFS"-			    >IDREFS</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AENTITY"-			    >ENTITY</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AENTITIES"-			    >ENTITIES</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANMTOKEN"-			    >NMTOKEN</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANMTOKENS"-			    >NMTOKENS</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AEnumeratedType"-		      >EnumeratedType</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ANotationType"-			    >NotationType</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3ANotationType"-			    >NotationType</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEnumeration"-			    >Enumeration</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AEnumeration"-			    >Enumeration</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ANotationType"-		>NotationType</A-		> = [<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AEnumeration"-		>Enumeration</A-		> = [<A HREF = "Text.XML.HaXml.Types.html#t%3ANmToken"-		>NmToken</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ADefaultDecl"-		      >DefaultDecl</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AREQUIRED"-			    >REQUIRED</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AIMPLIED"-			    >IMPLIED</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ADefaultTo"-			    >DefaultTo</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-			    >AttValue</A-			    > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AFIXED"-			    >FIXED</A-			    >)</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AFIXED"-		>FIXED</A-		>  = <A HREF = "#v%3AFIXED"-		>FIXED</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AConditionalSect"-		      >ConditionalSect</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AIncludeSect"-			    >IncludeSect</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AIncludeSect"-			    >IncludeSect</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AIgnoreSect"-			    >IgnoreSect</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AIgnoreSect"-			    >IgnoreSect</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AIncludeSect"-		>IncludeSect</A-		> = [<A HREF = "Text.XML.HaXml.Types.html#t%3AExtSubsetDecl"-		>ExtSubsetDecl</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AIgnoreSect"-		>IgnoreSect</A-		> = [<A HREF = "Text.XML.HaXml.Types.html#t%3AIgnoreSectContents"-		>IgnoreSectContents</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AIgnore"-		>Ignore</A-		>  = <A HREF = "#v%3AIgnore"-		>Ignore</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AIgnoreSectContents"-		>IgnoreSectContents</A-		>  = <A HREF = "#v%3AIgnoreSectContents"-		>IgnoreSectContents</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AIgnore"-		>Ignore</A-		> [(<A HREF = "Text.XML.HaXml.Types.html#t%3AIgnoreSectContents"-		>IgnoreSectContents</A-		>, <A HREF = "Text.XML.HaXml.Types.html#t%3AIgnore"-		>Ignore</A-		>)]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AReference"-		      >Reference</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ARefEntity"-			    >RefEntity</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityRef"-			    >EntityRef</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ARefChar"-			    >RefChar</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3ACharRef"-			    >CharRef</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AEntityRef"-		>EntityRef</A-		> = <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ACharRef"-		>CharRef</A-		> = Int</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3APEReference"-		>PEReference</A-		> = <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AEntityDecl"-		      >EntityDecl</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AEntityGEDecl"-			    >EntityGEDecl</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AGEDecl"-			    >GEDecl</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEntityPEDecl"-			    >EntityPEDecl</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3APEDecl"-			    >PEDecl</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AGEDecl"-		>GEDecl</A-		>  = <A HREF = "#v%3AGEDecl"-		>GEDecl</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityDef"-		>EntityDef</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3APEDecl"-		>PEDecl</A-		>  = <A HREF = "#v%3APEDecl"-		>PEDecl</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3APEDef"-		>PEDef</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AEntityDef"-		      >EntityDef</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ADefEntityValue"-			    >DefEntityValue</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityValue"-			    >EntityValue</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ADefExternalID"-			    >DefExternalID</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-			    >ExternalID</A-			    > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ANDataDecl"-			    >NDataDecl</A-			    >)</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3APEDef"-		      >PEDef</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3APEDefEntityValue"-			    >PEDefEntityValue</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityValue"-			    >EntityValue</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3APEDefExternalID"-			    >PEDefExternalID</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-			    >ExternalID</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AExternalID"-		      >ExternalID</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ASYSTEM"-			    >SYSTEM</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3ASystemLiteral"-			    >SystemLiteral</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3APUBLIC"-			    >PUBLIC</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3APubidLiteral"-			    >PubidLiteral</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3ASystemLiteral"-			    >SystemLiteral</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>newtype</SPAN-		> <A HREF = "#t%3ANDataDecl"-		>NDataDecl</A-		>  = <A HREF = "#v%3ANDATA"-		>NDATA</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3ATextDecl"-		>TextDecl</A-		>  = <A HREF = "#v%3ATextDecl"-		>TextDecl</A-		> (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AVersionInfo"-		>VersionInfo</A-		>) <A HREF = "Text.XML.HaXml.Types.html#t%3AEncodingDecl"-		>EncodingDecl</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AExtParsedEnt"-		>ExtParsedEnt</A-		>  = <A HREF = "#v%3AExtParsedEnt"-		>ExtParsedEnt</A-		> (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ATextDecl"-		>TextDecl</A-		>) <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AExtPE"-		>ExtPE</A-		>  = <A HREF = "#v%3AExtPE"-		>ExtPE</A-		> (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ATextDecl"-		>TextDecl</A-		>) [<A HREF = "Text.XML.HaXml.Types.html#t%3AExtSubsetDecl"-		>ExtSubsetDecl</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3ANotationDecl"-		>NotationDecl</A-		>  = <A HREF = "#v%3ANOTATION"-		>NOTATION</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> (Either <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-		>ExternalID</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3APublicID"-		>PublicID</A-		>)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>newtype</SPAN-		> <A HREF = "#t%3APublicID"-		>PublicID</A-		>  = <A HREF = "#v%3APUBLICID"-		>PUBLICID</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3APubidLiteral"-		>PubidLiteral</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>newtype</SPAN-		> <A HREF = "#t%3AEncodingDecl"-		>EncodingDecl</A-		>  = <A HREF = "#v%3AEncodingDecl"-		>EncodingDecl</A-		> String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AEntityValue"-		>EntityValue</A-		>  = <A HREF = "#v%3AEntityValue"-		>EntityValue</A-		> [<A HREF = "Text.XML.HaXml.Types.html#t%3AEV"-		>EV</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AEV"-		      >EV</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3AEVString"-			    >EVString</A-			    > String</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3AEVRef"-			    >EVRef</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-			    >Reference</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>newtype</SPAN-		> <A HREF = "#t%3APubidLiteral"-		>PubidLiteral</A-		>  = <A HREF = "#v%3APubidLiteral"-		>PubidLiteral</A-		> String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>newtype</SPAN-		> <A HREF = "#t%3ASystemLiteral"-		>SystemLiteral</A-		>  = <A HREF = "#v%3ASystemLiteral"-		>SystemLiteral</A-		> String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AName"-		>Name</A-		> = String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ANames"-		>Names</A-		> = [<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ANmToken"-		>NmToken</A-		> = String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ANmTokens"-		>NmTokens</A-		> = [<A HREF = "Text.XML.HaXml.Types.html#t%3ANmToken"-		>NmToken</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ACharData"-		>CharData</A-		> = String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3ACDSect"-		>CDSect</A-		> = <A HREF = "Text.XML.HaXml.Types.html#t%3ACharData"-		>CharData</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >A simple symbol table mapping strings (references) to values.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ASymTab"-	  ></A-	  ><B-	  >SymTab</B-	  > a = [(String, a)]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "2"-	  >Symbol table operations</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AemptyST"-	  ></A-	  ><B-	  >emptyST</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-	  >SymTab</A-	  > a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AaddST"-	  ></A-	  ><B-	  >addST</B-	  > :: String -&gt; a -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-	  >SymTab</A-	  > a -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-	  >SymTab</A-	  > a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AlookupST"-	  ></A-	  ><B-	  >lookupST</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-	  >SymTab</A-	  > a -&gt; Maybe a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "3"-	  >XML Types</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "4"-	  >The top-level document container</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ADocument"-	  ></A-	  ><B-	  >Document</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >The symbol table stored in a document holds all its general entity-reference definitions.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADocument"-		      ></A-		      ><B-		      >Document</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AProlog"-		      >Prolog</A-		      > (<A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"-		      >SymTab</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityDef"-		      >EntityDef</A-		      >) <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		      >Element</A-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		      >Misc</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "5"-	  >The main document content</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AElement"-	  ></A-	  ><B-	  >Element</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AElem"-		      ></A-		      ><B-		      >Elem</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      >] [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		      >Element</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AElemTag"-	  ></A-	  ><B-	  >ElemTag</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AElemTag"-		      ></A-		      ><B-		      >ElemTag</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    >intermediate for parsing</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Types.html#t%3AElemTag"-		      >ElemTag</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AContent"-	  ></A-	  ><B-	  >Content</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACElem"-		      ></A-		      ><B-		      >CElem</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		      >Element</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACString"-		      ></A-		      ><B-		      >CString</B-		      > Bool <A HREF = "Text.XML.HaXml.Types.html#t%3ACharData"-		      >CharData</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    >bool is whether whitespace is significant</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACRef"-		      ></A-		      ><B-		      >CRef</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		      >Reference</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACMisc"-		      ></A-		      ><B-		      >CMisc</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		      >Misc</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AAttribute"-	  ></A-	  ><B-	  >Attribute</B-	  > = (<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-	  >Name</A-	  >, <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-	  >AttValue</A-	  >)</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AAttValue"-	  ></A-	  ><B-	  >AttValue</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AAttValue"-		      ></A-		      ><B-		      >AttValue</B-		      > [Either String <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		      >Reference</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-		      >AttValue</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "6"-	  >Administrative parts of the document</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AProlog"-	  ></A-	  ><B-	  >Prolog</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AProlog"-		      ></A-		      ><B-		      >Prolog</B-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AXMLDecl"-		      >XMLDecl</A-		      >) [<A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		      >Misc</A-		      >] (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		      >DocTypeDecl</A-		      >) [<A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		      >Misc</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AXMLDecl"-	  ></A-	  ><B-	  >XMLDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AXMLDecl"-		      ></A-		      ><B-		      >XMLDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AVersionInfo"-		      >VersionInfo</A-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AEncodingDecl"-		      >EncodingDecl</A-		      >) (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ASDDecl"-		      >SDDecl</A-		      >)</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AMisc"-	  ></A-	  ><B-	  >Misc</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AComment"-		      ></A-		      ><B-		      >Comment</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AComment"-		      >Comment</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3API"-		      ></A-		      ><B-		      >PI</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AProcessingInstruction"-		      >ProcessingInstruction</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AProcessingInstruction"-	  ></A-	  ><B-	  >ProcessingInstruction</B-	  > = (<A HREF = "Text.XML.HaXml.Types.html#t%3APITarget"-	  >PITarget</A-	  >, String)</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ASDDecl"-	  ></A-	  ><B-	  >SDDecl</B-	  > = Bool</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AVersionInfo"-	  ></A-	  ><B-	  >VersionInfo</B-	  > = String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AComment"-	  ></A-	  ><B-	  >Comment</B-	  > = String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3APITarget"-	  ></A-	  ><B-	  >PITarget</B-	  > = String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "7"-	  >The DTD</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section3"-	><A NAME = "8"-	  >content model</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ADocTypeDecl"-	  ></A-	  ><B-	  >DocTypeDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADTD"-		      ></A-		      ><B-		      >DTD</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-		      >ExternalID</A-		      >) [<A HREF = "Text.XML.HaXml.Types.html#t%3AMarkupDecl"-		      >MarkupDecl</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AMarkupDecl"-	  ></A-	  ><B-	  >MarkupDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AElement"-		      ></A-		      ><B-		      >Element</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AElementDecl"-		      >ElementDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AAttList"-		      ></A-		      ><B-		      >AttList</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AAttListDecl"-		      >AttListDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEntity"-		      ></A-		      ><B-		      >Entity</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityDecl"-		      >EntityDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANotation"-		      ></A-		      ><B-		      >Notation</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ANotationDecl"-		      >NotationDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AMarkupMisc"-		      ></A-		      ><B-		      >MarkupMisc</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		      >Misc</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AExtSubset"-	  ></A-	  ><B-	  >ExtSubset</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AExtSubset"-		      ></A-		      ><B-		      >ExtSubset</B-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ATextDecl"-		      >TextDecl</A-		      >) [<A HREF = "Text.XML.HaXml.Types.html#t%3AExtSubsetDecl"-		      >ExtSubsetDecl</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AExtSubsetDecl"-	  ></A-	  ><B-	  >ExtSubsetDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AExtMarkupDecl"-		      ></A-		      ><B-		      >ExtMarkupDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AMarkupDecl"-		      >MarkupDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AExtConditionalSect"-		      ></A-		      ><B-		      >ExtConditionalSect</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AConditionalSect"-		      >ConditionalSect</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AElementDecl"-	  ></A-	  ><B-	  >ElementDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AElementDecl"-		      ></A-		      ><B-		      >ElementDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AContentSpec"-		      >ContentSpec</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AContentSpec"-	  ></A-	  ><B-	  >ContentSpec</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEMPTY"-		      ></A-		      ><B-		      >EMPTY</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AANY"-		      ></A-		      ><B-		      >ANY</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AMixed"-		      ></A-		      ><B-		      >Mixed</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AMixed"-		      >Mixed</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AContentSpec"-		      ></A-		      ><B-		      >ContentSpec</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-		      >CP</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ACP"-	  ></A-	  ><B-	  >CP</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATagName"-		      ></A-		      ><B-		      >TagName</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AModifier"-		      >Modifier</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AChoice"-		      ></A-		      ><B-		      >Choice</B-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-		      >CP</A-		      >] <A HREF = "Text.XML.HaXml.Types.html#t%3AModifier"-		      >Modifier</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ASeq"-		      ></A-		      ><B-		      >Seq</B-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-		      >CP</A-		      >] <A HREF = "Text.XML.HaXml.Types.html#t%3AModifier"-		      >Modifier</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Types.html#t%3ACP"-		      >CP</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AModifier"-	  ></A-	  ><B-	  >Modifier</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANone"-		      ></A-		      ><B-		      >None</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >Just One</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AQuery"-		      ></A-		      ><B-		      >Query</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >Zero Or One</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AStar"-		      ></A-		      ><B-		      >Star</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >Zero Or More</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APlus"-		      ></A-		      ><B-		      >Plus</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    >One Or More </TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Types.html#t%3AModifier"-		      >Modifier</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AMixed"-	  ></A-	  ><B-	  >Mixed</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APCDATA"-		      ></A-		      ><B-		      >PCDATA</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APCDATAplus"-		      ></A-		      ><B-		      >PCDATAplus</B-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section3"-	><A NAME = "9"-	  >attribute model</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AAttListDecl"-	  ></A-	  ><B-	  >AttListDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AAttListDecl"-		      ></A-		      ><B-		      >AttListDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttDef"-		      >AttDef</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AAttDef"-	  ></A-	  ><B-	  >AttDef</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AAttDef"-		      ></A-		      ><B-		      >AttDef</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AAttType"-		      >AttType</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ADefaultDecl"-		      >DefaultDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AAttType"-	  ></A-	  ><B-	  >AttType</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AStringType"-		      ></A-		      ><B-		      >StringType</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATokenizedType"-		      ></A-		      ><B-		      >TokenizedType</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ATokenizedType"-		      >TokenizedType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEnumeratedType"-		      ></A-		      ><B-		      >EnumeratedType</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEnumeratedType"-		      >EnumeratedType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ATokenizedType"-	  ></A-	  ><B-	  >TokenizedType</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AID"-		      ></A-		      ><B-		      >ID</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIDREF"-		      ></A-		      ><B-		      >IDREF</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIDREFS"-		      ></A-		      ><B-		      >IDREFS</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AENTITY"-		      ></A-		      ><B-		      >ENTITY</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AENTITIES"-		      ></A-		      ><B-		      >ENTITIES</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANMTOKEN"-		      ></A-		      ><B-		      >NMTOKEN</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANMTOKENS"-		      ></A-		      ><B-		      >NMTOKENS</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AEnumeratedType"-	  ></A-	  ><B-	  >EnumeratedType</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANotationType"-		      ></A-		      ><B-		      >NotationType</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ANotationType"-		      >NotationType</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEnumeration"-		      ></A-		      ><B-		      >Enumeration</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEnumeration"-		      >Enumeration</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ANotationType"-	  ></A-	  ><B-	  >NotationType</B-	  > = [<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-	  >Name</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AEnumeration"-	  ></A-	  ><B-	  >Enumeration</B-	  > = [<A HREF = "Text.XML.HaXml.Types.html#t%3ANmToken"-	  >NmToken</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ADefaultDecl"-	  ></A-	  ><B-	  >DefaultDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AREQUIRED"-		      ></A-		      ><B-		      >REQUIRED</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIMPLIED"-		      ></A-		      ><B-		      >IMPLIED</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADefaultTo"-		      ></A-		      ><B-		      >DefaultTo</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-		      >AttValue</A-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AFIXED"-		      >FIXED</A-		      >)</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AFIXED"-	  ></A-	  ><B-	  >FIXED</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AFIXED"-		      ></A-		      ><B-		      >FIXED</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section3"-	><A NAME = "10"-	  >conditional sections</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AConditionalSect"-	  ></A-	  ><B-	  >ConditionalSect</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIncludeSect"-		      ></A-		      ><B-		      >IncludeSect</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AIncludeSect"-		      >IncludeSect</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIgnoreSect"-		      ></A-		      ><B-		      >IgnoreSect</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AIgnoreSect"-		      >IgnoreSect</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AIncludeSect"-	  ></A-	  ><B-	  >IncludeSect</B-	  > = [<A HREF = "Text.XML.HaXml.Types.html#t%3AExtSubsetDecl"-	  >ExtSubsetDecl</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AIgnoreSect"-	  ></A-	  ><B-	  >IgnoreSect</B-	  > = [<A HREF = "Text.XML.HaXml.Types.html#t%3AIgnoreSectContents"-	  >IgnoreSectContents</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AIgnore"-	  ></A-	  ><B-	  >Ignore</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIgnore"-		      ></A-		      ><B-		      >Ignore</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AIgnoreSectContents"-	  ></A-	  ><B-	  >IgnoreSectContents</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AIgnoreSectContents"-		      ></A-		      ><B-		      >IgnoreSectContents</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AIgnore"-		      >Ignore</A-		      > [(<A HREF = "Text.XML.HaXml.Types.html#t%3AIgnoreSectContents"-		      >IgnoreSectContents</A-		      >, <A HREF = "Text.XML.HaXml.Types.html#t%3AIgnore"-		      >Ignore</A-		      >)]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "11"-	  >References</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AReference"-	  ></A-	  ><B-	  >Reference</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ARefEntity"-		      ></A-		      ><B-		      >RefEntity</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityRef"-		      >EntityRef</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ARefChar"-		      ></A-		      ><B-		      >RefChar</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ACharRef"-		      >CharRef</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		      >Reference</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		      >Reference</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AEntityRef"-	  ></A-	  ><B-	  >EntityRef</B-	  > = <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-	  >Name</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ACharRef"-	  ></A-	  ><B-	  >CharRef</B-	  > = Int</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3APEReference"-	  ></A-	  ><B-	  >PEReference</B-	  > = <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-	  >Name</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "12"-	  >Entities</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AEntityDecl"-	  ></A-	  ><B-	  >EntityDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEntityGEDecl"-		      ></A-		      ><B-		      >EntityGEDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AGEDecl"-		      >GEDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEntityPEDecl"-		      ></A-		      ><B-		      >EntityPEDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3APEDecl"-		      >PEDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AGEDecl"-	  ></A-	  ><B-	  >GEDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AGEDecl"-		      ></A-		      ><B-		      >GEDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityDef"-		      >EntityDef</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3APEDecl"-	  ></A-	  ><B-	  >PEDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APEDecl"-		      ></A-		      ><B-		      >PEDecl</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3APEDef"-		      >PEDef</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AEntityDef"-	  ></A-	  ><B-	  >EntityDef</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADefEntityValue"-		      ></A-		      ><B-		      >DefEntityValue</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityValue"-		      >EntityValue</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADefExternalID"-		      ></A-		      ><B-		      >DefExternalID</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-		      >ExternalID</A-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ANDataDecl"-		      >NDataDecl</A-		      >)</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3APEDef"-	  ></A-	  ><B-	  >PEDef</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APEDefEntityValue"-		      ></A-		      ><B-		      >PEDefEntityValue</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AEntityValue"-		      >EntityValue</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APEDefExternalID"-		      ></A-		      ><B-		      >PEDefExternalID</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-		      >ExternalID</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AExternalID"-	  ></A-	  ><B-	  >ExternalID</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ASYSTEM"-		      ></A-		      ><B-		      >SYSTEM</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ASystemLiteral"-		      >SystemLiteral</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APUBLIC"-		      ></A-		      ><B-		      >PUBLIC</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3APubidLiteral"-		      >PubidLiteral</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3ASystemLiteral"-		      >SystemLiteral</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >newtype</SPAN-	  > <A NAME = "t%3ANDataDecl"-	  ></A-	  ><B-	  >NDataDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANDATA"-		      ></A-		      ><B-		      >NDATA</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ATextDecl"-	  ></A-	  ><B-	  >TextDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ATextDecl"-		      ></A-		      ><B-		      >TextDecl</B-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AVersionInfo"-		      >VersionInfo</A-		      >) <A HREF = "Text.XML.HaXml.Types.html#t%3AEncodingDecl"-		      >EncodingDecl</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AExtParsedEnt"-	  ></A-	  ><B-	  >ExtParsedEnt</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AExtParsedEnt"-		      ></A-		      ><B-		      >ExtParsedEnt</B-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ATextDecl"-		      >TextDecl</A-		      >) <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AExtPE"-	  ></A-	  ><B-	  >ExtPE</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AExtPE"-		      ></A-		      ><B-		      >ExtPE</B-		      > (Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3ATextDecl"-		      >TextDecl</A-		      >) [<A HREF = "Text.XML.HaXml.Types.html#t%3AExtSubsetDecl"-		      >ExtSubsetDecl</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ANotationDecl"-	  ></A-	  ><B-	  >NotationDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANOTATION"-		      ></A-		      ><B-		      >NOTATION</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > (Either <A HREF = "Text.XML.HaXml.Types.html#t%3AExternalID"-		      >ExternalID</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3APublicID"-		      >PublicID</A-		      >)</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >newtype</SPAN-	  > <A NAME = "t%3APublicID"-	  ></A-	  ><B-	  >PublicID</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APUBLICID"-		      ></A-		      ><B-		      >PUBLICID</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3APubidLiteral"-		      >PubidLiteral</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >newtype</SPAN-	  > <A NAME = "t%3AEncodingDecl"-	  ></A-	  ><B-	  >EncodingDecl</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEncodingDecl"-		      ></A-		      ><B-		      >EncodingDecl</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AEntityValue"-	  ></A-	  ><B-	  >EntityValue</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEntityValue"-		      ></A-		      ><B-		      >EntityValue</B-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3AEV"-		      >EV</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AEV"-	  ></A-	  ><B-	  >EV</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEVString"-		      ></A-		      ><B-		      >EVString</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AEVRef"-		      ></A-		      ><B-		      >EVRef</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		      >Reference</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >newtype</SPAN-	  > <A NAME = "t%3APubidLiteral"-	  ></A-	  ><B-	  >PubidLiteral</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3APubidLiteral"-		      ></A-		      ><B-		      >PubidLiteral</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >newtype</SPAN-	  > <A NAME = "t%3ASystemLiteral"-	  ></A-	  ><B-	  >SystemLiteral</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ASystemLiteral"-		      ></A-		      ><B-		      >SystemLiteral</B-		      > String</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section2"-	><A NAME = "13"-	  >Basic value types</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3AName"-	  ></A-	  ><B-	  >Name</B-	  > = String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ANames"-	  ></A-	  ><B-	  >Names</B-	  > = [<A HREF = "Text.XML.HaXml.Types.html#t%3AName"-	  >Name</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ANmToken"-	  ></A-	  ><B-	  >NmToken</B-	  > = String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ANmTokens"-	  ></A-	  ><B-	  >NmTokens</B-	  > = [<A HREF = "Text.XML.HaXml.Types.html#t%3ANmToken"-	  >NmToken</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ACharData"-	  ></A-	  ><B-	  >CharData</B-	  > = String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ACDSect"-	  ></A-	  ><B-	  >CDSect</B-	  > = <A HREF = "Text.XML.HaXml.Types.html#t%3ACharData"-	  >CharData</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Validate.html
@@ -1,188 +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-  ><TITLE-    >Text.XML.HaXml.Validate</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Validate</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Validate a document against a 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%3Avalidate"-		>validate</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		>DocTypeDecl</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		> -&gt; [String]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3ApartialValidate"-		>partialValidate</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-		>DocTypeDecl</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</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 = "decl"-	><A NAME = "v%3Avalidate"-	  ></A-	  ><B-	  >validate</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-	  >DocTypeDecl</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-	  >Element</A-	  > -&gt; [String]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  ><TT-	    ><A HREF = "Text.XML.HaXml.Validate.html#v%3Avalidate"-	      >validate</A-	      ></TT-	    > takes a DTD and a tagged element, and returns a list of-errors in the document with respect to its DTD.-</P-	  ><P-	  >If you have several documents to validate against a single DTD,-then you will gain efficiency by freezing-in the DTD through partial-application, e.g. <TT-	    >checkMyDTD = validate myDTD</TT-	    >.</P-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3ApartialValidate"-	  ></A-	  ><B-	  >partialValidate</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"-	  >DocTypeDecl</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-	  >Element</A-	  > -&gt; [String]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><TT-	  ><A HREF = "Text.XML.HaXml.Validate.html#v%3ApartialValidate"-	    >partialValidate</A-	    ></TT-	  > is like validate, except that it does not check that-the element type matches that of the DTD's root element.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Verbatim.html
@@ -1,421 +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-  ><TITLE-    >Text.XML.HaXml.Verbatim</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Verbatim</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"-		    >  simons@cryp.to</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  >The preferred method for rendering a <TT-	    ><A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"-	      >Document</A-	      ></TT-	    > or single <TT-	    ><A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	      >Content</A-	      ></TT-	    >-is by using the pretty printing facility defined in <A HREF = "Pretty.html"-	    >Pretty</A-	    >.-Pretty-printing does not work well for cases, however, where the-formatting in the XML document is significant. Examples of this-case are XHTML's <TT-	    >&lt;pre&gt;</TT-	    > tag, Docbook's <TT-	    >&lt;literallayout&gt;</TT-	    > tag,-and many more.-</P-	  ><P-	  >Theoretically, the document author could avoid this problem by-wrapping the contents of these tags in a &lt;![CDATA[...]]&gt; section,-but often this is not practical, for instance when the-literal-layout section contains other elements. Finally, program-writers could manually format these elements by transforming them-into a literal string in their CFliter, etc., but this is-annoying to do and prone to omissions and formatting errors.-</P-	  ><P-	  >As an alternative, this module provides the function <TT-	    ><A HREF = "Text.XML.HaXml.Verbatim.html#v%3Averbatim"-	      >verbatim</A-	      ></TT-	    >,-which will format XML <TT-	    ><A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	      >Content</A-	      ></TT-	    > as a String while retaining the-formatting of the input document unchanged.-</P-	  ><P-	  ><EM-	    >Know problems</EM-	    >:-</P-	  ><UL-	  ><LI-	    > HaXml's parser eats line feeds between two tags.-</LI-	    ><LI-	    > <TT-	      ><A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		></TT-	      >s should be formatted by making them an instance of-<TT-	      ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		>Verbatim</A-		></TT-	      > as well, but since an <TT-	      ><A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		></TT-	      > is just a tuple,-not a full data type, the helper function <TT-	      ><A HREF = "Text.XML.HaXml.Verbatim.html#v%3AverbAttr"-		>verbAttr</A-		></TT-	      > must be-used instead.-</LI-	    ><LI-	    > <TT-	      ><A HREF = "Text.XML.HaXml.Types.html#v%3ACMisc"-		>CMisc</A-		></TT-	      > is not yet supported.-</LI-	    ><LI-	    > <TT-	      ><A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		>Element</A-		></TT-	      >s, which contain no content, are formatted as-<TT-	      >&lt;element-name/&gt;</TT-	      >, even if they were not defined as being of-type <TT-	      >EMPTY</TT-	      >. In XML this perfectly alright, but in SGML it is-not. Those, who wish to use <TT-	      ><A HREF = "Text.XML.HaXml.Verbatim.html#v%3Averbatim"-		>verbatim</A-		></TT-	      > to format parts of say-an HTML page will have to (a) replace problematic elements by-literals <EM-	      >before</EM-	      > running <TT-	      ><A HREF = "Text.XML.HaXml.Verbatim.html#v%3Averbatim"-		>verbatim</A-		></TT-	      > or (b) use a second-search-and-replace stage to fix this.-</LI-	    ></UL-	  ></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"-		>class</SPAN-		> <A HREF = "#t%3AVerbatim"-		>Verbatim</A-		> a  <SPAN CLASS = "keyword"-		>where</SPAN-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3Averbatim"-		      >verbatim</A-		      > :: a -&gt; String</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AverbAttr"-		>verbAttr</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</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 = "decl"-	><SPAN CLASS = "keyword"-	  >class</SPAN-	  > <A NAME = "t%3AVerbatim"-	  ></A-	  ><B-	  >Verbatim</B-	  > a  <SPAN CLASS = "keyword"-	  >where</SPAN-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >This class promises that the function <TT-		><A HREF = "Text.XML.HaXml.Verbatim.html#v%3Averbatim"-		  >verbatim</A-		  ></TT-		> knows how to-format this data type into a string without changing the-formatting.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Methods</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3Averbatim"-		      ></A-		      ><B-		      >verbatim</B-		      > :: a -&gt; String</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > a =&gt; <A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > [a]</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > Char</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > a, <A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > b) =&gt; <A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > (Either a b)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		      >Content</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"-		      >Element</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		      >Reference</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AverbAttr"-	  ></A-	  ><B-	  >verbAttr</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  > -&gt; String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This is a helper function is required because Haskell does not-allow to make an ordinary tuple (like <TT-	  ><A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	    >Attribute</A-	    ></TT-	  >) an instance of a-class. The resulting output will preface the actual attribute with-a single blank so that lists of <TT-	  ><A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	    >Attribute</A-	    ></TT-	  >s can be handled-implicitly by the definition for lists of <TT-	  ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-	    >Verbatim</A-	    ></TT-	  > data 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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Wrappers.html
@@ -1,164 +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-  ><TITLE-    >Text.XML.HaXml.Wrappers</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Wrappers</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></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%3Afix2Args"-		>fix2Args</A-		> :: IO (String, String)</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AprocessXmlWith"-		>processXmlWith</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; IO ()</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 = "decl"-	><A NAME = "v%3Afix2Args"-	  ></A-	  ><B-	  >fix2Args</B-	  > :: IO (String, String)</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This useful auxiliary checks the commandline arguments for two-filenames, the input and output file respectively.  If either-is missing, it is replaced by '-', which can be interpreted by the-caller as stdin and/or stdout.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AprocessXmlWith"-	  ></A-	  ><B-	  >processXmlWith</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; IO ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  >The wrapper <TT-	    >processXmlWith</TT-	    > returns an IO () computation-that collects the filenames (or stdin/stdout) to use when-reading/writing XML documents.  Its CFilter argument-is applied to transform the XML document from the input and-write it to the output.  No DTD is attached to the output.-</P-	  ><P-	  >If the input filename ends with .html or .htm, it is parsed using-the error-correcting HTML parser rather than the strict XML parser.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Xml2Haskell.html
@@ -1,2300 +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-  ><TITLE-    >Text.XML.HaXml.Xml2Haskell</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Xml2Haskell</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      ><B-		>Contents</B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      ><DL-		><DT-		  ><A HREF = "#1"-		    >Reading and writing XML data into a typed Haskell representation.</A-		    ></DT-		  ><DT-		  ><A HREF = "#2"-		    >The enabling classes.</A-		    ></DT-		  ><DT-		  ><A HREF = "#3"-		    >Parsing and printing helper functions</A-		    ></DT-		  ><DT-		  ><A HREF = "#4"-		    >Re-exports</A-		    ></DT-		  ></DL-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This module provides the <TT-	  ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	    >XmlContent</A-	    ></TT-	  > class and <TT-	  ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#v%3AreadXml"-	    >readXml</A-	    ></TT-	  > and writeXml-functions that you will need if you generate a module of Haskell-datatype definitions from an XML DTD.  Use the DtdToHaskell-program to generate both datatypes and instances of this class,-then import this module to read and write values to and from XML files.</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%3AreadXml"-		>readXml</A-		> :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		>XmlContent</A-		> a =&gt; String -&gt; Maybe a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AshowXml"-		>showXml</A-		> :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		>XmlContent</A-		> a =&gt; a -&gt; String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AhGetXml"-		>hGetXml</A-		> :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		>XmlContent</A-		> a =&gt; Handle -&gt; IO a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AhPutXml"-		>hPutXml</A-		> :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		>XmlContent</A-		> a =&gt; Handle -&gt; a -&gt; IO ()</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfReadXml"-		>fReadXml</A-		> :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		>XmlContent</A-		> a =&gt; FilePath -&gt; IO a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfWriteXml"-		>fWriteXml</A-		> :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		>XmlContent</A-		> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>class</SPAN-		> <A HREF = "#t%3AXmlContent"-		>XmlContent</A-		> a  <SPAN CLASS = "keyword"-		>where</SPAN-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AfromElem"-		      >fromElem</A-		      > :: [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      >] -&gt; (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      >])</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AtoElem"-		      >toElem</A-		      > :: a -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      >]</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>class</SPAN-		> <A HREF = "#t%3AXmlAttributes"-		>XmlAttributes</A-		> a  <SPAN CLASS = "keyword"-		>where</SPAN-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AfromAttrs"-		      >fromAttrs</A-		      > :: [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      >] -&gt; a</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AtoAttrs"-		      >toAttrs</A-		      > :: a -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      >]</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>class</SPAN-		> <A HREF = "#t%3AXmlAttrType"-		>XmlAttrType</A-		> a  <SPAN CLASS = "keyword"-		>where</SPAN-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AfromAttrToTyp"-		      >fromAttrToTyp</A-		      > :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      > -&gt; Maybe a</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "#v%3AtoAttrFrTyp"-		      >toAttrFrTyp</A-		      > :: String -&gt; a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Achoice"-		>choice</A-		> :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		>XmlContent</A-		> a =&gt; (a -&gt; b) -&gt; ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>] -&gt; (Maybe b, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>])) -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>] -&gt; (Maybe b, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>])</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Adefinite"-		>definite</A-		> :: ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>] -&gt; (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>])) -&gt; String -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>] -&gt; (a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>])</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Amany"-		>many</A-		> :: ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>] -&gt; (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>])) -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>] -&gt; ([a], [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>])</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfromText"-		>fromText</A-		> :: [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>] -&gt; (Maybe String, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>])</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AtoText"-		>toText</A-		> :: String -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AList1"-		>List1</A-		> a = <A HREF = "#v%3ANonEmpty"-		>NonEmpty</A-		> [a]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AANYContent"-		>ANYContent</A-		>  = <A HREF = "#v%3AANYContent"-		>ANYContent</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AmaybeToAttr"-		>maybeToAttr</A-		> :: (String -&gt; a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AdefaultToAttr"-		>defaultToAttr</A-		> :: (String -&gt; a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>) -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"-		>Defaultable</A-		> a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AdefiniteA"-		>definiteA</A-		> :: (String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>] -&gt; a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AdefaultA"-		>defaultA</A-		> :: (String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>] -&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"-		>Defaultable</A-		> a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3ApossibleA"-		>possibleA</A-		> :: (String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		> -&gt; Maybe a) -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>] -&gt; Maybe a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AfromAttrToStr"-		>fromAttrToStr</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		> -&gt; Maybe String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AtoAttrFrStr"-		>toAttrFrStr</A-		> :: String -&gt; String -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ADefaultable"-		      >Defaultable</A-		      > a</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ADefault"-			    >Default</A-			    > a</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ANonDefault"-			    >NonDefault</A-			    > a</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Astr2attr"-		>str2attr</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-		>AttValue</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aattr2str"-		>attr2str</A-		> :: <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-		>AttValue</A-		> -&gt; String</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3AElement"-		>Element</A-		>  = <A HREF = "#v%3AElem"-		>Elem</A-		> <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		>Name</A-		> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		>Attribute</A-		>] [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		>Content</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3AContent"-		      >Content</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ACElem"-			    >CElem</A-			    > <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AElement"-			    >Element</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ACString"-			    >CString</A-			    > Bool <A HREF = "Text.XML.HaXml.Types.html#t%3ACharData"-			    >CharData</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ACRef"-			    >CRef</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-			    >Reference</A-			    ></TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ACMisc"-			    >CMisc</A-			    > <A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-			    >Misc</A-			    ></TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "1"-	  >Reading and writing XML data into a typed Haskell representation.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AreadXml"-	  ></A-	  ><B-	  >readXml</B-	  > :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	  >XmlContent</A-	  > a =&gt; String -&gt; Maybe a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Read a fully-typed XML document from a string.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AshowXml"-	  ></A-	  ><B-	  >showXml</B-	  > :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	  >XmlContent</A-	  > a =&gt; a -&gt; String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Convert a fully-typed XML document to a string.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AhGetXml"-	  ></A-	  ><B-	  >hGetXml</B-	  > :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	  >XmlContent</A-	  > a =&gt; Handle -&gt; IO a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Read a fully-typed XML document from a file handle.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AhPutXml"-	  ></A-	  ><B-	  >hPutXml</B-	  > :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	  >XmlContent</A-	  > a =&gt; Handle -&gt; a -&gt; IO ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Write a fully-typed XML document to a file handle.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfReadXml"-	  ></A-	  ><B-	  >fReadXml</B-	  > :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	  >XmlContent</A-	  > a =&gt; FilePath -&gt; IO a</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Read an XML document from a file and convert it to a fully-typed-Haskell value.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfWriteXml"-	  ></A-	  ><B-	  >fWriteXml</B-	  > :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	  >XmlContent</A-	  > a =&gt; FilePath -&gt; a -&gt; IO ()</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>Write a fully-typed Haskell value to the given file as an XML-document.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "2"-	  >The enabling classes.</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >class</SPAN-	  > <A NAME = "t%3AXmlContent"-	  ></A-	  ><B-	  >XmlContent</B-	  > a  <SPAN CLASS = "keyword"-	  >where</SPAN-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >The XmlContent class promises that an XML content element can be-converted to and from a Haskell value.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Methods</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AfromElem"-		      ></A-		      ><B-		      >fromElem</B-		      > :: [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      >] -&gt; (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      >])</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "s8"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AtoElem"-		      ></A-		      ><B-		      >toElem</B-		      > :: a -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      >]</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf2"-		      >OneOf2</A-		      > a b)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf3"-		      >OneOf3</A-		      > a b c)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf4"-		      >OneOf4</A-		      > a b c d)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf5"-		      >OneOf5</A-		      > a b c d e)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf6"-		      >OneOf6</A-		      > a b c d e f)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf7"-		      >OneOf7</A-		      > a b c d e f g)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf8"-		      >OneOf8</A-		      > a b c d e f g h)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf9"-		      >OneOf9</A-		      > a b c d e f g h i)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf10"-		      >OneOf10</A-		      > a b c d e f g h i j)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf11"-		      >OneOf11</A-		      > a b c d e f g h i j k)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf12"-		      >OneOf12</A-		      > a b c d e f g h i j k l)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf13"-		      >OneOf13</A-		      > a b c d e f g h i j k l m)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > n) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf14"-		      >OneOf14</A-		      > a b c d e f g h i j k l m n)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > n, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > o) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf15"-		      >OneOf15</A-		      > a b c d e f g h i j k l m n o)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > n, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > o, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > p) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf16"-		      >OneOf16</A-		      > a b c d e f g h i j k l m n o p)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > n, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > o, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > p, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > q) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf17"-		      >OneOf17</A-		      > a b c d e f g h i j k l m n o p q)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > n, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > o, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > p, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > q, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > r) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf18"-		      >OneOf18</A-		      > a b c d e f g h i j k l m n o p q r)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > n, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > o, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > p, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > q, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > r, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > s) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf19"-		      >OneOf19</A-		      > a b c d e f g h i j k l m n o p q r s)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > d, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > e, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > f, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > g, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > h, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > i, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > j, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > k, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > l, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > m, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > n, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > o, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > p, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > q, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > r, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > s, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > t) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.OneOfN.html#t%3AOneOf20"-		      >OneOf20</A-		      > a b c d e f g h i j k l m n o p q r s t)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (a, b)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >(<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > b, <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > c) =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (a, b, c)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > [a]</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (Maybe a)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AList1"-		      >List1</A-		      > a)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AANYContent"-		      >ANYContent</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >class</SPAN-	  > <A NAME = "t%3AXmlAttributes"-	  ></A-	  ><B-	  >XmlAttributes</B-	  > a  <SPAN CLASS = "keyword"-	  >where</SPAN-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >The XmlAttributes class promises that a list of XML tag attributes-can be converted to and from a Haskell value.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Methods</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AfromAttrs"-		      ></A-		      ><B-		      >fromAttrs</B-		      > :: [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      >] -&gt; a</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "s8"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AtoAttrs"-		      ></A-		      ><B-		      >toAttrs</B-		      > :: a -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      >]</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >class</SPAN-	  > <A NAME = "t%3AXmlAttrType"-	  ></A-	  ><B-	  >XmlAttrType</B-	  > a  <SPAN CLASS = "keyword"-	  >where</SPAN-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >The XmlAttrType class promises that an attribute taking an XML enumerated-type can be converted to and from a Haskell value.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Methods</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AfromAttrToTyp"-		      ></A-		      ><B-		      >fromAttrToTyp</B-		      > :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      > -&gt; Maybe a</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "s8"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AtoAttrFrTyp"-		      ></A-		      ><B-		      >toAttrFrTyp</B-		      > :: String -&gt; a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "3"-	  >Parsing and printing helper functions</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Achoice"-	  ></A-	  ><B-	  >choice</B-	  > :: <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-	  >XmlContent</A-	  > a =&gt; (a -&gt; b) -&gt; ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >] -&gt; (Maybe b, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >])) -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >] -&gt; (Maybe b, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >])</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Adefinite"-	  ></A-	  ><B-	  >definite</B-	  > :: ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >] -&gt; (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >])) -&gt; String -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >] -&gt; (a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >])</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Amany"-	  ></A-	  ><B-	  >many</B-	  > :: ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >] -&gt; (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >])) -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >] -&gt; ([a], [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >])</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfromText"-	  ></A-	  ><B-	  >fromText</B-	  > :: [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >] -&gt; (Maybe String, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >])</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AtoText"-	  ></A-	  ><B-	  >toText</B-	  > :: String -&gt; [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-	  >Content</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AList1"-	  ></A-	  ><B-	  >List1</B-	  > a</TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >The List1 type represents lists with at least one element.-It is required for DTD content models that use + as a modifier.</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANonEmpty"-		      ></A-		      ><B-		      >NonEmpty</B-		      > [a]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > a =&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AList1"-		      >List1</A-		      > a)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >??? a =&gt; Eq (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AList1"-		      >List1</A-		      > a)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >??? a =&gt; Show (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AList1"-		      >List1</A-		      > a)</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AANYContent"-	  ></A-	  ><B-	  >ANYContent</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >A type corresponding to XML's ANY contentspec-data ANYContent = forall a . XmlContent a =&gt; ANYContent a</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AANYContent"-		      ></A-		      ><B-		      >ANYContent</B-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AXmlContent"-		      >XmlContent</A-		      > <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AANYContent"-		      >ANYContent</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Eq <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AANYContent"-		      >ANYContent</A-		      ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Show <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AANYContent"-		      >ANYContent</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AmaybeToAttr"-	  ></A-	  ><B-	  >maybeToAttr</B-	  > :: (String -&gt; a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  >) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AdefaultToAttr"-	  ></A-	  ><B-	  >defaultToAttr</B-	  > :: (String -&gt; a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  >) -&gt; String -&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"-	  >Defaultable</A-	  > a -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AdefiniteA"-	  ></A-	  ><B-	  >definiteA</B-	  > :: (String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  > -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  >] -&gt; a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AdefaultA"-	  ></A-	  ><B-	  >defaultA</B-	  > :: (String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  > -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  >] -&gt; <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"-	  >Defaultable</A-	  > a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3ApossibleA"-	  ></A-	  ><B-	  >possibleA</B-	  > :: (String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  > -&gt; Maybe a) -&gt; String -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  >] -&gt; Maybe a</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AfromAttrToStr"-	  ></A-	  ><B-	  >fromAttrToStr</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  > -&gt; Maybe String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AtoAttrFrStr"-	  ></A-	  ><B-	  >toAttrFrStr</B-	  > :: String -&gt; String -&gt; Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-	  >Attribute</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3ADefaultable"-	  ></A-	  ><B-	  >Defaultable</B-	  > a</TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "ndoc"-	      >If an attribute is defaultable, then it either takes the default-value (which is omitted from the output), or a non-default value-(which obviously must be printed).</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ADefault"-		      ></A-		      ><B-		      >Default</B-		      > a</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ANonDefault"-		      ></A-		      ><B-		      >NonDefault</B-		      > a</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    >Eq a =&gt; Eq (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"-		      >Defaultable</A-		      > a)</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    >Show a =&gt; Show (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"-		      >Defaultable</A-		      > a)</TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Astr2attr"-	  ></A-	  ><B-	  >str2attr</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-	  >AttValue</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aattr2str"-	  ></A-	  ><B-	  >attr2str</B-	  > :: <A HREF = "Text.XML.HaXml.Types.html#t%3AAttValue"-	  >AttValue</A-	  > -&gt; String</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	><A NAME = "4"-	  >Re-exports</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AElement"-	  ></A-	  ><B-	  >Element</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3AElem"-		      ></A-		      ><B-		      >Elem</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AName"-		      >Name</A-		      > [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"-		      >Attribute</A-		      >] [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      >]</TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AElement"-		      >Element</A-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><SPAN CLASS = "keyword"-	  >data</SPAN-	  > <A NAME = "t%3AContent"-	  ></A-	  ><B-	  >Content</B-	  > </TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "section4"-	      >Constructors</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACElem"-		      ></A-		      ><B-		      >CElem</B-		      > <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AElement"-		      >Element</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACString"-		      ></A-		      ><B-		      >CString</B-		      > Bool <A HREF = "Text.XML.HaXml.Types.html#t%3ACharData"-		      >CharData</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    >bool is whether whitespace is significant</TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACRef"-		      ></A-		      ><B-		      >CRef</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AReference"-		      >Reference</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ><TR-		  ><TD CLASS = "decl"-		    ><A NAME = "v%3ACMisc"-		      ></A-		      ><B-		      >CMisc</B-		      > <A HREF = "Text.XML.HaXml.Types.html#t%3AMisc"-		      >Misc</A-		      ></TD-		    ><TD CLASS = "rdoc"-		    ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "section4"-	      >Instances</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "body"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><A HREF = "Text.XML.HaXml.Verbatim.html#t%3AVerbatim"-		      >Verbatim</A-		      > <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"-		      >Content</A-		      ></TD-		    ></TR-		  ></TABLE-		></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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Xtract.Combinators.html
@@ -1,829 +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-  ><TITLE-    >Text.XML.HaXml.Xtract.Combinators</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Xtract.Combinators</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  >This is a new set of XML combinators for Xtract, not standard,-but based on the standard set in <A HREF = "Text.Xml.Haxml.Combinators.html"-	    >Text.Xml.Haxml.Combinators</A-	    >.-The main difference is that the Content Filter type becomes a-Double Filter.  A Double Filter always takes the whole document-as an extra argument, so you can start to traverse it again from-any inner location within the document tree.-</P-	  ><P-	  >The new combinators definitions are derived from the old ones.-New names are derived from the old by surrounding with the letter <TT-	    >o</TT-	    >,-or by doubling the operator symbols.</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%3ADFilter"-		>DFilter</A-		> = <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		> -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		> -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-		>Content</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Alocal"-		>local</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aglobal"-		>global</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Adfilter"-		>dfilter</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aoloco"-		>oloco</A-		> :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aoglobo"-		>oglobo</A-		> :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aooo"-		>ooo</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%7C%7C%3E%7C%7C"-		>(||&gt;||)</A-		> :: (a -&gt; b -&gt; [c]) -&gt; (a -&gt; b -&gt; [c]) -&gt; a -&gt; b -&gt; [c]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aowitho"-		>owitho</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aowithouto"-		>owithouto</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aokeepo"-		>okeepo</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aononeo"-		>ononeo</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aochildreno"-		>ochildreno</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aoelmo"-		>oelmo</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aotxto"-		>otxto</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aapplypred"-		>applypred</A-		> :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aoiffindo"-		>oiffindo</A-		> :: String -&gt; (String -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3AoifTxto"-		>oifTxto</A-		> :: (String -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		>) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aocato"-		>ocato</A-		> :: [a -&gt; b -&gt; [c]] -&gt; a -&gt; b -&gt; [c]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%2F%2F%3E%3E"-		>(//&gt;&gt;)</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3A%3C%3C%2F%2F"-		>(&lt;&lt;//)</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aodeepo"-		>odeepo</A-		> :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		> -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</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 = "decl"-	><SPAN CLASS = "keyword"-	  >type</SPAN-	  > <A NAME = "t%3ADFilter"-	  ></A-	  ><B-	  >DFilter</B-	  > = <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  > -&gt; [<A HREF = "Text.XML.HaXml.Types.html#t%3AContent"-	  >Content</A-	  >]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>double content filter - takes document root + local subtree.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Alocal"-	  ></A-	  ><B-	  >local</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>lift an ordinary content filter to a double filter.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aglobal"-	  ></A-	  ><B-	  >global</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Adfilter"-	  ></A-	  ><B-	  >dfilter</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>drop a double filter to an ordinary content filter</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aoloco"-	  ></A-	  ><B-	  >oloco</B-	  > :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>lift a CFilter combinator to a DFilter combinator</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aoglobo"-	  ></A-	  ><B-	  >oglobo</B-	  > :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aooo"-	  ></A-	  ><B-	  >ooo</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>lifted composition over double filters.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%7C%7C%3E%7C%7C"-	  ></A-	  ><B-	  >(||&gt;||)</B-	  > :: (a -&gt; b -&gt; [c]) -&gt; (a -&gt; b -&gt; [c]) -&gt; a -&gt; b -&gt; [c]</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>lifted choice.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aowitho"-	  ></A-	  ><B-	  >owitho</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>lifted predicates.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aowithouto"-	  ></A-	  ><B-	  >owithouto</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aokeepo"-	  ></A-	  ><B-	  >okeepo</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>lifted unit and zero.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aononeo"-	  ></A-	  ><B-	  >ononeo</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aochildreno"-	  ></A-	  ><B-	  >ochildreno</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aoelmo"-	  ></A-	  ><B-	  >oelmo</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aotxto"-	  ></A-	  ><B-	  >otxto</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aapplypred"-	  ></A-	  ><B-	  >applypred</B-	  > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aoiffindo"-	  ></A-	  ><B-	  >oiffindo</B-	  > :: String -&gt; (String -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3AoifTxto"-	  ></A-	  ><B-	  >oifTxto</B-	  > :: (String -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  >) -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aocato"-	  ></A-	  ><B-	  >ocato</B-	  > :: [a -&gt; b -&gt; [c]] -&gt; a -&gt; b -&gt; [c]</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%2F%2F%3E%3E"-	  ></A-	  ><B-	  >(//&gt;&gt;)</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3A%3C%3C%2F%2F"-	  ></A-	  ><B-	  >(&lt;&lt;//)</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aodeepo"-	  ></A-	  ><B-	  >odeepo</B-	  > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  > -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Xtract.Lex.html
@@ -1,190 +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-  ><TITLE-    >Text.XML.HaXml.Xtract.Lex</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Xtract.Lex</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	><P-	  >This is another hand-written lexer, this time for the Xtract-command-language.  The entry point is lexXtract.  You don't-normally need to use this module directly - the lexer is called-automatically by the parser.  (We only expose this interface-for debugging purposes.)-</P-	  ><P-	  >The Xtract command language is very like the XPath specification.</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%3AlexXtract"-		>lexXtract</A-		> :: String -&gt; [<A HREF = "Text.XML.HaXml.Xtract.Lex.html#t%3AToken"-		>Token</A-		>]</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>data</SPAN-		> <A HREF = "#t%3APosn"-		>Posn</A-		>  = <A HREF = "#v%3APn"-		>Pn</A-		> Int</TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		><TR-		  ><TD CLASS = "decl"-		    ><SPAN CLASS = "keyword"-		      >data</SPAN-		      > <A HREF = "#t%3ATokenT"-		      >TokenT</A-		      > </TD-		    ></TR-		  ><TR-		  ><TD CLASS = "body"-		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-		      ><TR-			><TD CLASS = "decl"-			  >= <A HREF = "#v%3ASymbol"-			    >Symbol</A-			    > String</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokString"-			    >TokString</A-			    > String</TD-			  ></TR-			><TR-			><TD CLASS = "decl"-			  >| <A HREF = "#v%3ATokNum"-			    >TokNum</A-			    > Integer</TD-			  ></TR-			></TABLE-		      ></TD-		    ></TR-		  ></TABLE-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><SPAN CLASS = "keyword"-		>type</SPAN-		> <A HREF = "#t%3AToken"-		>Token</A-		> = Either String (<A HREF = "Text.XML.HaXml.Xtract.Lex.html#t%3APosn"-		>Posn</A-		>, <A HREF = "Text.XML.HaXml.Xtract.Lex.html#t%3ATokenT"-		>TokenT</A-		>)</TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.Xtract.Parse.html
@@ -1,178 +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-  ><TITLE-    >Text.XML.HaXml.Xtract.Parse</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml.Xtract.Parse</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>A parser for the Xtract command-language.  (The string input is-tokenised internally by the lexer <TT-	  ><A HREF = "Text.XML.HaXml.Xtract.Lex.html#v%3AlexXtract"-	    >lexXtract</A-	    ></TT-	  >.)-See <A HREF = "http://www.haskell.org/HaXml/Xtract.html"-	  >http://www.haskell.org/HaXml/Xtract.html</A-	  > for the grammar that-is accepted.</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%3AparseXtract"-		>parseXtract</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-		>DFilter</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Axtract"-		>xtract</A-		> :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-		>CFilter</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 = "decl"-	><A NAME = "v%3AparseXtract"-	  ></A-	  ><B-	  >parseXtract</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	  >DFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>The cool thing is that the Xtract command parser directly builds-a higher-order <TT-	  ><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"-	    >DFilter</A-	    ></TT-	  > (see <A HREF = "Text.Xml.HaXml.Xtract.Combinators.html"-	  >Text.Xml.HaXml.Xtract.Combinators</A-	  >)-which can be applied to an XML document without further ado.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Axtract"-	  ></A-	  ><B-	  >xtract</B-	  > :: String -&gt; <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"-	  >CFilter</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>To mix an Xtract query into an ordinary HaXml combinator expression.</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/Text.XML.HaXml.html
@@ -1,331 +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-  ><TITLE-    >Text.XML.HaXml</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "modulebar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><FONT SIZE = "6"-		>Text.XML.HaXml</FONT-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Description</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>This is just a convenient way of bunching the XML combinators-together with some other things you are likely to want at the-same time.</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Synopsis</TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "body"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Types.html"-		>Text.XML.HaXml.Types</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Combinators.html"-		>Text.XML.HaXml.Combinators</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Parse.html"-		>Text.XML.HaXml.Parse</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Pretty.html"-		>Text.XML.HaXml.Pretty</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Html.Generate.html"-		>Text.XML.HaXml.Html.Generate</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Html.Parse.html"-		>Text.XML.HaXml.Html.Parse</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Validate.html"-		>Text.XML.HaXml.Validate</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Wrappers.html"-		>Text.XML.HaXml.Wrappers</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Verbatim.html"-		>Text.XML.HaXml.Verbatim</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      >module <A HREF = "Text.XML.HaXml.Escape.html"-		>Text.XML.HaXml.Escape</A-		></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "s8"-	      ></TD-	      ></TR-	    ><TR-	    ><TD CLASS = "decl"-	      ><A HREF = "#v%3Aversion"-		>version</A-		> :: 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 = "decl"-	>module <A HREF = "Text.XML.HaXml.Types.html"-	  >Text.XML.HaXml.Types</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Combinators.html"-	  >Text.XML.HaXml.Combinators</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Parse.html"-	  >Text.XML.HaXml.Parse</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Pretty.html"-	  >Text.XML.HaXml.Pretty</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Html.Generate.html"-	  >Text.XML.HaXml.Html.Generate</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Html.Parse.html"-	  >Text.XML.HaXml.Html.Parse</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Validate.html"-	  >Text.XML.HaXml.Validate</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Wrappers.html"-	  >Text.XML.HaXml.Wrappers</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Verbatim.html"-	  >Text.XML.HaXml.Verbatim</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	>module <A HREF = "Text.XML.HaXml.Escape.html"-	  >Text.XML.HaXml.Escape</A-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "s15"-	></TD-	></TR-      ><TR-      ><TD CLASS = "decl"-	><A NAME = "v%3Aversion"-	  ></A-	  ><B-	  >version</B-	  > :: String</TD-	></TR-      ><TR-      ><TD CLASS = "doc"-	>The version of the library (currently <A HREF = "1.13.1.html"-	  >1.13.1</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.6</TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
docs/HaXml/doc-index-124.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -166,18 +162,22 @@ ><TD ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >|&gt;|</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3A%7C%3E%7C" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->||&gt;||</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%7C%7C%3E%7C%7C"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%7C%3E%7C" >Text.XML.HaXml.Xtract.Combinators</A ></TD ></TR
docs/HaXml/doc-index-33.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD
docs/HaXml/doc-index-43.html view
@@ -71,6 +71,10 @@ >I</A ></TD ><TD+><A HREF="doc-index-J.html"+>J</A+></TD+><TD ><A HREF="doc-index-K.html" >K</A ></TD@@ -166,8 +170,20 @@ ><TD ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >+++</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijer.html#v%3A%2B%2B%2B"+>Text.ParserCombinators.HuttonMeijer</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3A%2B%2B%2B" >Text.ParserCombinators.HuttonMeijerWallace</A
docs/HaXml/doc-index-47.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -166,20 +162,24 @@ ><TD ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR-><TD CLASS="indexentry"->//&gt;&gt;</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%2F%2F%3E%3E"->Text.XML.HaXml.Xtract.Combinators</A-></TD+><TD CLASS="indexentry" COLSPAN="2"+>/&gt;</TD ></TR ><TR-><TD CLASS="indexentry"->/&gt;</TD+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3A%2F%3E" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%2F%3E"+>Text.XML.HaXml.Xtract.Combinators</A+></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-58.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD
docs/HaXml/doc-index-60.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -166,18 +162,22 @@ ><TD ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >&lt;/</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3A%3C%2F" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->&lt;&lt;//</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%3C%3C%2F%2F"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%3C%2F" >Text.XML.HaXml.Xtract.Combinators</A ></TD ></TR
docs/HaXml/doc-index-63.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD
docs/HaXml/doc-index-A.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AANY" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -181,16 +177,16 @@ ><TD CLASS="indexannot" >1 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AANYContent"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AANYContent"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AANYContent"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -219,7 +215,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AAttDef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -227,7 +223,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AAttDef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -235,7 +231,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AAttList" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -247,7 +243,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AAttListDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -255,7 +251,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AAttListDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -263,7 +259,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AAttType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -275,7 +271,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AAttValue" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -283,7 +281,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AAttValue" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AAttValue"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -299,7 +299,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AAttribute" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -307,10 +309,18 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AaddST" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"+>addcol</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3Aaddcol"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry" >anchor</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Aanchor"@@ -353,8 +363,8 @@ ><TD CLASS="indexentry" >attr2str</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Aattr2str"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattr2str"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -375,11 +385,27 @@ ></TR ><TR ><TD CLASS="indexentry"+>attributes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattributes"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" >attrval</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Aattrval" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>attval</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattval"+>Text.XML.HaXml.XmlContent</A+></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-B.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -165,14 +161,6 @@ ><TR ><TD ><TABLE CELLPADDING="0" CELLSPACING="5"-><TR-><TD CLASS="indexentry"->bracket</TD-><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Abracket"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD-></TR ><TR ><TD CLASS="indexentry" >bullet</TD
docs/HaXml/doc-index-C.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -179,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ACDSect" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -187,8 +183,8 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACElem" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, <A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ACElem"->Text.XML.HaXml.Xml2Haskell</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACElem"+>Text.XML.HaXml.XmlContent</A >, Text.XML.HaXml</TD ></TR ><TR@@ -205,8 +201,8 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACMisc" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, <A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ACMisc"->Text.XML.HaXml.Xml2Haskell</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACMisc"+>Text.XML.HaXml.XmlContent</A >, Text.XML.HaXml</TD ></TR ><TR@@ -215,7 +211,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ACP" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -223,8 +219,8 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACRef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, <A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ACRef"->Text.XML.HaXml.Xml2Haskell</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACRef"+>Text.XML.HaXml.XmlContent</A >, Text.XML.HaXml</TD ></TR ><TR@@ -233,8 +229,8 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACString" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, <A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ACString"->Text.XML.HaXml.Xml2Haskell</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACString"+>Text.XML.HaXml.XmlContent</A >, Text.XML.HaXml</TD ></TR ><TR@@ -243,7 +239,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ACharData" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -251,7 +247,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ACharRef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -259,7 +255,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AChoice" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -271,7 +267,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AComment" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -279,7 +275,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AComment" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -287,7 +283,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AConditionalSect" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -297,17 +293,17 @@ ><TD CLASS="indexannot" >1 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AConstr"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AConstr"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AConstr"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AConstr"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"@@ -323,8 +319,8 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"->Text.XML.HaXml.Xml2Haskell</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"+>Text.XML.HaXml.XmlContent</A >, Text.XML.HaXml</TD ></TR ><TR@@ -337,7 +333,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AContentSpec" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -345,22 +341,34 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AContentSpec" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >cat</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Acat" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Acat"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR ><TD CLASS="indexentry" >catMaybes</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AcatMaybes"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AcatMaybes"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -373,45 +381,61 @@ ></TR ><TR ><TD CLASS="indexentry"->chainl</TD+>cdsect</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainl"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Parse.html#v%3Acdsect"+>Text.XML.HaXml.Parse</A ></TD ></TR ><TR ><TD CLASS="indexentry"->chainl1</TD+>cfilter</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainl1"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Acfilter"+>Text.XML.HaXml.Xtract.Combinators</A ></TD ></TR ><TR-><TD CLASS="indexentry"->chainr</TD+><TD CLASS="indexentry" COLSPAN="2"+>chardata</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainr"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Parse.html#v%3Achardata"+>Text.XML.HaXml.Parse</A ></TD ></TR ><TR-><TD CLASS="indexentry"->chainr1</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainr1"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Achardata"+>Text.XML.HaXml.ParseLazy</A ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >children</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Achildren" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Achildren"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR ><TD CLASS="indexentry" >chip</TD ><TD CLASS="indexlinks"@@ -423,33 +447,97 @@ ><TD CLASS="indexentry" >choice</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Achoice"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Achoice"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"+>comment</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Acomment"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Acomment"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >content</TD ></TR ><TR ><TD CLASS="indexannot" >1 (Function)</TD ><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ByteStringPP.html#v%3Acontent"+>Text.XML.HaXml.ByteStringPP</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Html-Pretty.html#v%3Acontent" >Text.XML.HaXml.Html.Pretty</A ></TD ></TR ><TR ><TD CLASS="indexannot"->2 (Function)</TD+>3 (Function)</TD ><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Acontent"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>4 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Acontent"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>5 (Function)</TD+><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Pretty.html#v%3Acontent" >Text.XML.HaXml.Pretty</A ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>6 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Acontent"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >cp</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ByteStringPP.html#v%3Acp"+>Text.XML.HaXml.ByteStringPP</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Pretty.html#v%3Acp" >Text.XML.HaXml.Pretty</A
docs/HaXml/doc-index-D.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -187,7 +183,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ADTD" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -203,7 +199,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ADefEntityValue" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -211,14 +207,14 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ADefExternalID" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" >Default</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ADefault"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3ADefault"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -227,7 +223,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ADefaultDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -235,7 +231,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ADefaultTo" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -253,8 +249,8 @@ ><TD CLASS="indexannot" >2 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -273,9 +269,9 @@ ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3ADefined"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3ADefined"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"@@ -283,7 +279,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -295,7 +291,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ADocument" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -303,54 +301,80 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ADocument" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ADocument"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >deep</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Adeep" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Adeep"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >deepest</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Adeepest" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Adeepest"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR ><TD CLASS="indexentry" >defaultA</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AdefaultA"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefaultA"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" >defaultToAttr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AdefaultToAttr"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefaultToAttr"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" >definite</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Adefinite"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Adefinite"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" >definiteA</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AdefiniteA"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefiniteA"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -362,9 +386,37 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >doctypedecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ByteStringPP.html#v%3Adoctypedecl"+>Text.XML.HaXml.ByteStringPP</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Adoctypedecl"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>3 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Adoctypedecl"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>4 (Function)</TD+><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Pretty.html#v%3Adoctypedecl" >Text.XML.HaXml.Pretty</A ></TD@@ -377,14 +429,38 @@ ><TD CLASS="indexannot" >1 (Function)</TD ><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ByteStringPP.html#v%3Adocument"+>Text.XML.HaXml.ByteStringPP</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Html-Pretty.html#v%3Adocument" >Text.XML.HaXml.Html.Pretty</A ></TD ></TR ><TR ><TD CLASS="indexannot"->2 (Function)</TD+>3 (Function)</TD ><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Adocument"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>4 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Adocument"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>5 (Function)</TD+><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Pretty.html#v%3Adocument" >Text.XML.HaXml.Pretty</A ></TD@@ -398,12 +474,24 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >dtdParse</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Parse.html#v%3AdtdParse" >Text.XML.HaXml.Parse</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3AdtdParse"+>Text.XML.HaXml.ParseLazy</A+></TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-E.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -179,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEMPTY" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -187,7 +183,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AENTITIES" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -195,7 +191,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AENTITY" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -211,7 +207,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEV" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -219,7 +215,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEVRef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -227,7 +223,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEVString" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -363,8 +359,8 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AElem" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, <A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AElem"->Text.XML.HaXml.Xml2Haskell</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AElem"+>Text.XML.HaXml.XmlContent</A >, Text.XML.HaXml</TD ></TR ><TR@@ -377,7 +373,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AElemTag" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElemTag"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -385,7 +383,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AElemTag" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AElemTag"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -397,8 +397,8 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AElement"->Text.XML.HaXml.Xml2Haskell</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"+>Text.XML.HaXml.XmlContent</A >, Text.XML.HaXml</TD ></TR ><TR@@ -407,7 +407,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AElement" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -419,7 +419,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AElementDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -427,7 +427,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AElementDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -519,7 +519,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEncodingDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -527,7 +527,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEncodingDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -535,7 +535,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEntity" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -543,7 +543,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEntityDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -551,7 +551,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -559,7 +559,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEntityGEDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -567,7 +567,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEntityPEDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -575,7 +575,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -587,7 +587,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEntityValue" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -595,7 +595,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEntityValue" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -615,7 +615,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEnumeratedType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -623,7 +623,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEnumeratedType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -635,7 +635,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AEnumeration" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -643,7 +643,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AEnumeration" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -651,7 +651,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AExtConditionalSect" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -659,7 +659,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AExtMarkupDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -671,7 +671,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AExtPE" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -679,7 +679,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AExtPE" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -691,7 +691,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AExtParsedEnt" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -699,7 +699,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AExtParsedEnt" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -711,7 +711,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AExtSubset" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -719,7 +719,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AExtSubset" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -727,7 +727,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AExtSubsetDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -735,42 +735,146 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AExternalID" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"+>elemCloseTag</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3AelemCloseTag"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3AelemCloseTag"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>elemOpenTag</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3AelemOpenTag"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3AelemOpenTag"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >element</TD ></TR ><TR ><TD CLASS="indexannot" >1 (Function)</TD ><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ByteStringPP.html#v%3Aelement"+>Text.XML.HaXml.ByteStringPP</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Html-Pretty.html#v%3Aelement" >Text.XML.HaXml.Html.Pretty</A ></TD ></TR ><TR ><TD CLASS="indexannot"->2 (Function)</TD+>3 (Function)</TD ><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Aelement"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>4 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Aelement"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>5 (Function)</TD+><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Pretty.html#v%3Aelement" >Text.XML.HaXml.Pretty</A >, Text.XML.HaXml</TD ></TR ><TR+><TD CLASS="indexannot"+>6 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aelement"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR ><TD CLASS="indexentry"+>elementWith</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AelementWith"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>elemtag</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Aelemtag"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Aelemtag"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >elm</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Aelm" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->elserror</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Aelserror"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aelm"+>Text.XML.HaXml.Xtract.Combinators</A ></TD ></TR ><TR@@ -779,14 +883,26 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AemptyST" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->eof</TD+><TD CLASS="indexentry" COLSPAN="2"+>emptySTs</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Aeof"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Parse.html#v%3AemptySTs"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3AemptySTs"+>Text.XML.HaXml.ParseLazy</A ></TD ></TR ><TR
docs/HaXml/doc-index-F.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -175,7 +171,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AFIXED" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -183,7 +179,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AFIXED" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -554,43 +550,19 @@ ></TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"+><TD CLASS="indexentry" >fReadXml</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfReadXml"->Text.XML.HaXml.Haskell2Xml</A-></TD-></TR-><TR-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfReadXml"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfReadXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"+><TD CLASS="indexentry" >fWriteXml</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfWriteXml"->Text.XML.HaXml.Haskell2Xml</A-></TD-></TR-><TR-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfWriteXml"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfWriteXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -619,58 +591,86 @@ ></TR ><TR ><TD CLASS="indexentry"->fromAttrToStr</TD+>forcep</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromAttrToStr"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-Posn.html#v%3Aforcep"+>Text.XML.HaXml.Posn</A ></TD ></TR ><TR ><TD CLASS="indexentry"->fromAttrToTyp</TD+>fpsHPutXml</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromAttrToTyp"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsHPutXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->fromAttrs</TD+>fpsShowXml</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromAttrs"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsShowXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->fromContents</TD+>fpsWriteXml</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfromContents"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsWriteXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->fromElem</TD+>fromAttrToStr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromElem"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrToStr"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->fromText</TD+>fromAttrToTyp</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromText"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrToTyp"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"+>fromAttrs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrs"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" >fromXml</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfromXml"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromXml"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>fst3</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Afst3"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Afst3"+>Text.XML.HaXml.ParseLazy</A ></TD ></TR ></TABLE
docs/HaXml/doc-index-G.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -175,7 +171,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AGEDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -183,7 +179,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AGEDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-H.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -169,17 +165,17 @@ ><TD CLASS="indexentry" >HType</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"->Haskell2Xml</TD+>HTypeable</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"@@ -214,23 +210,11 @@ >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"+><TD CLASS="indexentry" >hGetXml</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AhGetXml"->Text.XML.HaXml.Haskell2Xml</A-></TD-></TR-><TR-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AhGetXml"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AhGetXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -242,23 +226,11 @@ ></TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"+><TD CLASS="indexentry" >hPutXml</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AhPutXml"->Text.XML.HaXml.Haskell2Xml</A-></TD-></TR-><TR-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AhPutXml"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AhPutXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -390,12 +362,24 @@ >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >htmlParse</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Html-Parse.html#v%3AhtmlParse" >Text.XML.HaXml.Html.Parse</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-ParseLazy.html#v%3AhtmlParse"+>Text.XML.HaXml.Html.ParseLazy</A+></TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-I.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AID" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -179,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AIDREF" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -187,7 +183,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AIDREFS" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -203,7 +199,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AIMPLIED" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -223,7 +219,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AIgnore" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -231,7 +227,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AIgnore" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -243,7 +239,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSect" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -251,7 +247,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AIgnoreSect" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -263,7 +259,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AIgnoreSectContents" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -271,7 +267,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AIgnoreSectContents" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -283,7 +279,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AIncludeSect" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -291,47 +287,97 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AIncludeSect" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >ifTxt</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3AifTxt" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3AifTxt"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >iffind</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Aiffind" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aiffind"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR ><TD CLASS="indexentry"->interspersed</TD+>inElement</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Combinators.html#v%3Ainterspersed"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AinElement"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>inElementWith</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AinElementWith"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>info</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Types.html#v%3Ainfo"+>Text.XML.HaXml.Types</A+>, <A HREF="Text-XML-HaXml.html#v%3Ainfo"+>Text.XML.HaXml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>inplace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Ainplace" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"->isPrefixOf</TD+>interior</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AisPrefixOf"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Ainterior"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->item</TD+>interspersed</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Aitem"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD+><A HREF="Text-XML-HaXml-Combinators.html#v%3Ainterspersed"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD ></TR ></TABLE ></TD
+ docs/HaXml/doc-index-J.html view
@@ -0,0 +1,186 @@+<!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+>HaXml (Index)</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD+><A HREF="doc-index-A.html"+>A</A+></TD+><TD+><A HREF="doc-index-B.html"+>B</A+></TD+><TD+><A HREF="doc-index-C.html"+>C</A+></TD+><TD+><A HREF="doc-index-D.html"+>D</A+></TD+><TD+><A HREF="doc-index-E.html"+>E</A+></TD+><TD+><A HREF="doc-index-F.html"+>F</A+></TD+><TD+><A HREF="doc-index-G.html"+>G</A+></TD+><TD+><A HREF="doc-index-H.html"+>H</A+></TD+><TD+><A HREF="doc-index-I.html"+>I</A+></TD+><TD+><A HREF="doc-index-J.html"+>J</A+></TD+><TD+><A HREF="doc-index-K.html"+>K</A+></TD+><TD+><A HREF="doc-index-L.html"+>L</A+></TD+><TD+><A HREF="doc-index-M.html"+>M</A+></TD+><TD+><A HREF="doc-index-N.html"+>N</A+></TD+><TD+><A HREF="doc-index-O.html"+>O</A+></TD+><TD+><A HREF="doc-index-P.html"+>P</A+></TD+><TD+><A HREF="doc-index-Q.html"+>Q</A+></TD+><TD+><A HREF="doc-index-R.html"+>R</A+></TD+><TD+><A HREF="doc-index-S.html"+>S</A+></TD+><TD+><A HREF="doc-index-T.html"+>T</A+></TD+><TD+><A HREF="doc-index-U.html"+>U</A+></TD+><TD+><A HREF="doc-index-V.html"+>V</A+></TD+><TD+><A HREF="doc-index-W.html"+>W</A+></TD+><TD+><A HREF="doc-index-X.html"+>X</A+></TD+><TD+><A HREF="doc-index-58.html"+>:</A+></TD+><TD+><A HREF="doc-index-33.html"+>!</A+></TD+><TD+><A HREF="doc-index-43.html"+>+</A+></TD+><TD+><A HREF="doc-index-47.html"+>/</A+></TD+><TD+><A HREF="doc-index-60.html"+>&lt;</A+></TD+><TD+><A HREF="doc-index-63.html"+>?</A+></TD+><TD+><A HREF="doc-index-124.html"+>|</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section1"+>Index (J)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>junk</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijer.html#v%3Ajunk"+>Text.ParserCombinators.HuttonMeijer</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
docs/HaXml/doc-index-K.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -166,12 +162,24 @@ ><TD ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >keep</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Akeep" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Akeep"+>Text.XML.HaXml.Xtract.Combinators</A+></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-L.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -189,9 +185,9 @@ ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AList"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AList"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -209,8 +205,8 @@ ><TD CLASS="indexannot" >2 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AList1"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -223,6 +219,22 @@ ></TR ><TR ><TD CLASS="indexentry"+>liftGlobal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3AliftGlobal"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>liftLocal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3AliftLocal"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry" >literal</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Aliteral"@@ -243,7 +255,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AlookupST" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-M.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -179,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AMarkupMisc" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -197,9 +193,9 @@ ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AMaybe"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AMaybe"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"@@ -207,7 +203,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AMisc" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -219,7 +215,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AMixed" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -227,7 +223,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AMixed" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -235,7 +231,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AModifier" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -262,35 +258,7 @@ ></TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"->many</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Amany"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD-></TR-><TR-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Amany"->Text.XML.HaXml.Xml2Haskell</A-></TD-></TR-><TR ><TD CLASS="indexentry"->many1</TD-><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Amany1"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD-></TR-><TR-><TD CLASS="indexentry" >margin</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Amargin"@@ -301,11 +269,19 @@ ><TD CLASS="indexentry" >maybeToAttr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AmaybeToAttr"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmaybeToAttr"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR+><TD CLASS="indexentry"+>mkAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkAttr"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR ><TD CLASS="indexentry" COLSPAN="2" >mkElem</TD ></TR@@ -321,8 +297,8 @@ ><TD CLASS="indexannot" >2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AmkElem"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkElem"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -337,8 +313,8 @@ ><TD CLASS="indexentry" >mkElemC</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AmkElemC"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkElemC"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -358,12 +334,24 @@ >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >multi</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Amulti" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Amulti"+>Text.XML.HaXml.Xtract.Combinators</A+></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-N.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ANDATA" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -179,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ANDataDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -187,7 +183,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ANMTOKEN" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -195,7 +191,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ANMTOKENS" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -203,7 +199,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ANOTATION" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -239,7 +235,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AName" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -247,7 +243,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ANames" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -367,7 +363,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ANmToken" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -375,22 +371,22 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ANmTokens" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" >NonDefault</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ANonDefault"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3ANonDefault"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" >NonEmpty</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ANonEmpty"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3ANonEmpty"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -399,7 +395,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ANone" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -407,7 +403,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ANotation" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -415,7 +411,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ANotationDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -427,7 +423,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ANotationType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -435,17 +431,37 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ANotationType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >name</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3Aname" >Text.XML.HaXml.DtdToHaskell.TypeDef</A ></TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Aname"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>3 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Aname"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR ><TD CLASS="indexentry" >name_</TD ><TD CLASS="indexlinks"@@ -479,18 +495,38 @@ ></TR ><TR ><TD CLASS="indexentry"+>newline</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3Anewline"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>noPos</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3AnoPos"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >none</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Anone" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->nottok</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Anottok"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Anone"+>Text.XML.HaXml.Xtract.Combinators</A ></TD ></TR ><TR
docs/HaXml/doc-index-O.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -554,90 +550,22 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >o</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Ao" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->ocato</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aocato"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->ochildreno</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aochildreno"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->odeepo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aodeepo"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->oelmo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aoelmo"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->oglobo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aoglobo"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->oifTxto</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3AoifTxto"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->oiffindo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aoiffindo"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->okeepo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aokeepo"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->oloco</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aoloco"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->ononeo</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aononeo"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Ao" >Text.XML.HaXml.Xtract.Combinators</A ></TD ></TR@@ -648,46 +576,6 @@ ><A HREF="Text-XML-HaXml-Combinators.html#v%3Aoo" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD-></TR-><TR-><TD CLASS="indexentry"->ooo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aooo"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->ops</TD-><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Aops"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD-></TR-><TR-><TD CLASS="indexentry"->otxto</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aotxto"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->owitho</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aowitho"->Text.XML.HaXml.Xtract.Combinators</A-></TD-></TR-><TR-><TD CLASS="indexentry"->owithouto</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aowithouto"->Text.XML.HaXml.Xtract.Combinators</A-></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-P.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -167,19 +163,11 @@ ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR ><TD CLASS="indexentry"->P</TD-><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3AP"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD-></TR-><TR-><TD CLASS="indexentry" >PCDATA</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APCDATA" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -187,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APCDATAplus" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -199,7 +187,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3APEDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -207,7 +195,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APEDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -215,7 +203,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3APEDef" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -223,7 +211,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APEDefEntityValue" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -231,7 +219,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APEDefExternalID" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -239,7 +227,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3APEReference" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -247,7 +235,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3API" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -255,7 +243,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3APITarget" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -263,7 +251,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APUBLIC" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -271,15 +259,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APUBLICID" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD-></TR-><TR-><TD CLASS="indexentry"->Parser</TD-><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -287,24 +267,12 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APlus" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"+><TD CLASS="indexentry" >Pn</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Lex.html#v%3APn"->Text.XML.HaXml.Lex</A-></TD-></TR-><TR-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Xtract-Lex.html#v%3APn" >Text.XML.HaXml.Xtract.Lex</A ></TD@@ -317,8 +285,8 @@ ><TD CLASS="indexannot" >1 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Lex.html#t%3APosn"->Text.XML.HaXml.Lex</A+><A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Text.XML.HaXml.Posn</A ></TD ></TR ><TR@@ -333,9 +301,9 @@ ><TD CLASS="indexentry" >Prim</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3APrim"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3APrim"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"@@ -343,7 +311,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AProcessingInstruction" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -355,7 +323,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AProlog" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -363,7 +333,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AProlog" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AProlog"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -375,7 +347,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3APubidLiteral" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -383,7 +355,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3APubidLiteral" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -391,34 +363,26 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3APublicID" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"->papply</TD+>parens</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Apapply"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Aparens"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"->papply'</TD+>parseContents</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Apapply%27"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AparseContents"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->parens</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Aparens"->Text.XML.HaXml.Html.Generate</A->, Text.XML.HaXml</TD-></TR-><TR-><TD CLASS="indexentry" >parseXtract</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Xtract-Parse.html#v%3AparseXtract"@@ -445,8 +409,8 @@ ><TD CLASS="indexentry" >posInNewCxt</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Lex.html#v%3AposInNewCxt"->Text.XML.HaXml.Lex</A+><A HREF="Text-XML-HaXml-Posn.html#v%3AposInNewCxt"+>Text.XML.HaXml.Posn</A ></TD ></TR ><TR@@ -459,10 +423,50 @@ ></TR ><TR ><TD CLASS="indexentry"+>posnColumn</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3AposnColumn"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>posnElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AposnElement"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>posnElementWith</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AposnElementWith"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>posnFilename</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3AposnFilename"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>posnLine</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3AposnLine"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry" >possibleA</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ApossibleA"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3ApossibleA"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -506,8 +510,40 @@ >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2"+>processinginstruction</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3Aprocessinginstruction"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Aprocessinginstruction"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >prolog</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ByteStringPP.html#v%3Aprolog"+>Text.XML.HaXml.ByteStringPP</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Pretty.html#v%3Aprolog" >Text.XML.HaXml.Pretty</A
docs/HaXml/doc-index-Q.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AQuery" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-R.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AREQUIRED" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -179,7 +175,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ARefChar" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ARefChar"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -187,7 +185,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ARefEntity" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ARefEntity"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -195,26 +195,44 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AReference" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"+>Text.XML.HaXml.XmlContent</A+>, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"+><TD CLASS="indexentry"+>reLexEntityValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AreLexEntityValue"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" >readXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AreadXml"+>Text.XML.HaXml.XmlContent</A+></TD ></TR ><TR+><TD CLASS="indexentry" COLSPAN="2"+>reference</TD+></TR+><TR ><TD CLASS="indexannot" >1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AreadXml"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-Parse.html#v%3Areference"+>Text.XML.HaXml.Parse</A ></TD ></TR ><TR ><TD CLASS="indexannot" >2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AreadXml"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Areference"+>Text.XML.HaXml.ParseLazy</A ></TD ></TR ><TR@@ -223,14 +241,6 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml.html#v%3Arender" >Text.XML.HaXml</A-></TD-></TR-><TR-><TD CLASS="indexentry"->reparse</TD-><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Areparse"->Text.ParserCombinators.HuttonMeijerWallace</A ></TD ></TR ><TR
docs/HaXml/doc-index-S.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ASDDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -179,10 +175,82 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ASYSTEM" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"+>SaxCharData</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxCharData"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxComment</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxComment"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxDocTypeDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxDocTypeDecl"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#t%3ASaxElement"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxElementClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxElementClose"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxElementOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxElementOpen"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxElementTag</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxElementTag"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxProcessingInstruction</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxProcessingInstruction"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SaxReference</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-SAX.html#v%3ASaxReference"+>Text.XML.HaXml.SAX</A+></TD+></TR+><TR+><TD CLASS="indexentry" >Section</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Lex.html#t%3ASection"@@ -195,7 +263,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ASeq" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -515,7 +583,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AStar" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -533,9 +601,9 @@ ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AString"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AString"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"@@ -543,7 +611,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AStringType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -559,7 +627,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ASymTab" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -570,6 +638,14 @@ ></TD ></TR ><TR+><TD CLASS="indexentry"+>Synonym</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3ASynonym"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD+></TR+><TR ><TD CLASS="indexentry" COLSPAN="2" >SystemLiteral</TD ></TR@@ -579,7 +655,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ASystemLiteral" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -587,50 +663,46 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ASystemLiteral" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"->sepby</TD+>saxParse</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Asepby"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-SAX.html#v%3AsaxParse"+>Text.XML.HaXml.SAX</A ></TD ></TR ><TR ><TD CLASS="indexentry"->sepby1</TD+>showConstr</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Asepby1"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AshowConstr"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"->showConstr</TD+>showHType</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AshowConstr"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AshowHType"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR-><TD CLASS="indexentry" COLSPAN="2"+><TD CLASS="indexentry" >showXml</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AshowXml"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AshowXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR-><TD CLASS="indexannot"->2 (Function)</TD+><TD CLASS="indexentry"+>showXmlLazy</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AshowXml"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-ShowXmlLazy.html#v%3AshowXmlLazy"+>Text.XML.HaXml.ShowXmlLazy</A ></TD ></TR ><TR@@ -642,43 +714,39 @@ >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->stdXmlEscaper</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Escape.html#v%3AstdXmlEscaper"->Text.XML.HaXml.Escape</A->, Text.XML.HaXml</TD+><TD CLASS="indexentry" COLSPAN="2"+>snd3</TD ></TR ><TR-><TD CLASS="indexentry"->stget</TD+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Astget"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Parse.html#v%3Asnd3"+>Text.XML.HaXml.Parse</A ></TD ></TR ><TR-><TD CLASS="indexentry"->stquery</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Astquery"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Asnd3"+>Text.XML.HaXml.ParseLazy</A ></TD ></TR ><TR ><TD CLASS="indexentry"->str2attr</TD+>stdXmlEscaper</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Astr2attr"->Text.XML.HaXml.Xml2Haskell</A-></TD+><A HREF="Text-XML-HaXml-Escape.html#v%3AstdXmlEscaper"+>Text.XML.HaXml.Escape</A+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"->stupd</TD+>str2attr</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Astupd"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Astr2attr"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ></TABLE
docs/HaXml/doc-index-T.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -171,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ATagName" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -271,7 +267,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ATextDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -279,7 +275,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ATextDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -587,6 +583,14 @@ ></TR ><TR ><TD CLASS="indexentry"+>TokError</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokError"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" >TokFreeText</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Lex.html#v%3ATokFreeText"@@ -811,7 +815,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ATokenizedType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -819,7 +823,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ATokenizedType" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -837,9 +841,9 @@ ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3ATuple"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3ATuple"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry"@@ -1083,6 +1087,14 @@ ></TR ><TR ><TD CLASS="indexentry"+>tab</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3Atab"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry" >tag</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Atag"@@ -1107,6 +1119,14 @@ ></TR ><TR ><TD CLASS="indexentry"+>text</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3Atext"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" >textlabelled</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Atextlabelled"@@ -1114,100 +1134,136 @@ >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"->toAttrFrStr</TD+><TD CLASS="indexentry" COLSPAN="2"+>thd3</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoAttrFrStr"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-Parse.html#v%3Athd3"+>Text.XML.HaXml.Parse</A ></TD ></TR ><TR-><TD CLASS="indexentry"->toAttrFrTyp</TD+><TD CLASS="indexannot"+>2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoAttrFrTyp"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Athd3"+>Text.XML.HaXml.ParseLazy</A ></TD ></TR ><TR ><TD CLASS="indexentry"->toAttrs</TD+>toAttrFrStr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoAttrs"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrFrStr"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->toContents</TD+>toAttrFrTyp</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoContents"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrFrTyp"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->toDTD</TD+>toAttrs</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoDTD"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrs"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->toEOF</TD+>toCData</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3AtoEOF"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoCData"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"->toElem</TD+>toContents</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoElem"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoContents"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry"+>toDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoDTD"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD+></TR+><TR+><TD CLASS="indexentry" >toHType</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoHType"->Text.XML.HaXml.Haskell2Xml</A-></TD+><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoHType"+>Text.XML.HaXml.TypeMapping</A+>, Text.XML.HaXml.XmlContent</TD ></TR ><TR ><TD CLASS="indexentry" >toText</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoText"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoText"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" >toXml</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoXml"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoXml"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >tok</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Atok"->Text.ParserCombinators.HuttonMeijerWallace</A+><A HREF="Text-XML-HaXml-Parse.html#v%3Atok"+>Text.XML.HaXml.Parse</A ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3Atok"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >txt</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Atxt" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Atxt"+>Text.XML.HaXml.Xtract.Combinators</A+></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-U.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -167,11 +163,31 @@ ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR ><TD CLASS="indexentry"+>UnConverted</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >union</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Aunion" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aunion"+>Text.XML.HaXml.Xtract.Combinators</A+></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-V.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -179,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AVersionInfo" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-W.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -175,19 +171,51 @@ ></TR ><TR ><TD CLASS="indexentry"+>white</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Posn.html#v%3Awhite"+>Text.XML.HaXml.Posn</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >with</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Awith" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Awith"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >without</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Combinators.html#v%3Awithout" >Text.XML.HaXml.Combinators</A >, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Awithout"+>Text.XML.HaXml.Xtract.Combinators</A+></TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-X.html view
@@ -135,10 +135,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD@@ -175,7 +171,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -183,30 +179,58 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AXMLDecl" >Text.XML.HaXml.Types</A->, Text.XML.HaXml.Haskell2Xml, Text.XML.HaXml</TD+>, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"+>XMLParser</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"+>Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>XParser</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#t%3AXParser"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#t%3AXParser"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR+><TD CLASS="indexentry" >XmlAttrType</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlAttrType"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttrType"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" >XmlAttributes</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlAttributes"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR ><TD CLASS="indexentry" >XmlContent</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlContent"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -229,8 +253,8 @@ ><TD CLASS="indexentry" >xFromChar</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AxFromChar"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AxFromChar"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -245,8 +269,8 @@ ><TD CLASS="indexentry" >xToChar</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AxToChar"->Text.XML.HaXml.Haskell2Xml</A+><A HREF="Text-XML-HaXml-XmlContent.html#v%3AxToChar"+>Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR@@ -259,6 +283,14 @@ ></TR ><TR ><TD CLASS="indexentry"+>xmlEscapeContent</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Escape.html#v%3AxmlEscapeContent"+>Text.XML.HaXml.Escape</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry" >xmlLex</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Lex.html#v%3AxmlLex"@@ -266,14 +298,26 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >xmlParse</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Parse.html#v%3AxmlParse" >Text.XML.HaXml.Parse</A >, Text.XML.HaXml</TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3AxmlParse"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR ><TD CLASS="indexentry" >xmlParse'</TD ><TD CLASS="indexlinks"@@ -282,6 +326,26 @@ ></TD ></TR ><TR+><TD CLASS="indexentry" COLSPAN="2"+>xmlParseWith</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3AxmlParseWith"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-ParseLazy.html#v%3AxmlParseWith"+>Text.XML.HaXml.ParseLazy</A+></TD+></TR+><TR ><TD CLASS="indexentry" >xmlReLex</TD ><TD CLASS="indexlinks"@@ -294,6 +358,14 @@ >xmlUnEscape</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Escape.html#v%3AxmlUnEscape"+>Text.XML.HaXml.Escape</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>xmlUnEscapeContent</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Escape.html#v%3AxmlUnEscapeContent" >Text.XML.HaXml.Escape</A >, Text.XML.HaXml</TD ></TR
− docs/HaXml/doc-index-tA.html
@@ -1,135 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (A)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >ANYContent</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#ANYContent"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttDef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttDef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttDef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttDef"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttListDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttListDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttListDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttListDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttValue</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttValue"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttValue"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttValue"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttrFields</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#AttrFields"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Attribute</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Attribute"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Attribute"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Attribute"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tB.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (B)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tC.html
@@ -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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (C)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >CDSect</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CDSect"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CDSect"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CDSect"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CFilter</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CFilter"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#CFilter"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CP</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CP"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CP"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CP"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CharData</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CharData"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CharData"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CharData"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CharRef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CharRef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CharRef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CharRef"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Comment</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Comment"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Comment"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Comment"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ConditionalSect</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ConditionalSect"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ConditionalSect"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ConditionalSect"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Constr</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#Constr"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Constructors</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Constructors"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Content</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Content"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Content"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Content"-		  >Text.XML.HaXml.Types</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#Content"-		>Text.XML.HaXml.Xml2Haskell</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ContentSpec</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ContentSpec"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ContentSpec"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ContentSpec"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tD.html
@@ -1,117 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (D)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >DFilter</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#DFilter"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >DefaultDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#DefaultDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#DefaultDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#DefaultDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Defaultable</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#Defaultable"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Doc</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >DocTypeDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#DocTypeDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#DocTypeDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#DocTypeDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Document</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Document"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Document"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Document"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tE.html
@@ -1,271 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (E)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >EV</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EV"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EV"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EV"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElemTag</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ElemTag"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ElemTag"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ElemTag"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Element</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Element"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Element"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Element"-		  >Text.XML.HaXml.Types</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#Element"-		>Text.XML.HaXml.Xml2Haskell</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElementDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ElementDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ElementDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ElementDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EncodingDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EncodingDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EncodingDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EncodingDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EntityDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EntityDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EntityDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EntityDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EntityDef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EntityDef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EntityDef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EntityDef"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EntityRef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EntityRef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EntityRef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EntityRef"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EntityValue</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EntityValue"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EntityValue"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EntityValue"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EnumeratedType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EnumeratedType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EnumeratedType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EnumeratedType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Enumeration</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Enumeration"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Enumeration"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Enumeration"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtPE</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtPE"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtPE"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtPE"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtParsedEnt</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtParsedEnt"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtParsedEnt"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtParsedEnt"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtSubset</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtSubset"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtSubset"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtSubset"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtSubsetDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtSubsetDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtSubsetDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtSubsetDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExternalID</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExternalID"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExternalID"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExternalID"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tF.html
@@ -1,59 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (F)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >FIXED</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#FIXED"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#FIXED"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#FIXED"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tG.html
@@ -1,59 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (G)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >GEDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#GEDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#GEDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#GEDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tH.html
@@ -1,65 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (H)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >HType</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#HType"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Haskell2Xml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#Haskell2Xml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tI.html
@@ -1,101 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (I)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >Ignore</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Ignore"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Ignore"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Ignore"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IgnoreSect</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IgnoreSect"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IgnoreSect"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IgnoreSect"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IgnoreSectContents</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IgnoreSectContents"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IgnoreSectContents"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IgnoreSectContents"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IncludeSect</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IncludeSect"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IncludeSect"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IncludeSect"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tJ.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (J)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tK.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (K)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tL.html
@@ -1,67 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (L)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >LabelFilter</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#LabelFilter"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#LabelFilter"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >List1</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#List1"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tM.html
@@ -1,111 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (M)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >MarkupDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#MarkupDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#MarkupDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#MarkupDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Misc</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Misc"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Misc"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Misc"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Mixed</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Mixed"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Mixed"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Mixed"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Mode</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#Mode"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Modifier</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Modifier"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Modifier"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Modifier"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tN.html
@@ -1,147 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (N)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >NDataDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NDataDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NDataDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NDataDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Name</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Name"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Name"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Name"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Name"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Names</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Names"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Names"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Names"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NmToken</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NmToken"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NmToken"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NmToken"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NmTokens</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NmTokens"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NmTokens"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NmTokens"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NotationDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NotationDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NotationDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NotationDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NotationType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NotationType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NotationType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NotationType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tO.html
@@ -1,235 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (O)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >OneOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf2</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf2"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf3</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf3"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf4</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf4"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf5</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf5"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf6</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf6"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tP.html
@@ -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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (P)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >PEDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PEDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PEDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PEDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PEDef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PEDef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PEDef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PEDef"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PEReference</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PEReference"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PEReference"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PEReference"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PITarget</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PITarget"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PITarget"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PITarget"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Parser</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#Parser"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Posn</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#Posn"-		  >Text.XML.HaXml.Lex</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#Posn"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ProcessingInstruction</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ProcessingInstruction"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ProcessingInstruction"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ProcessingInstruction"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Prolog</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Prolog"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Prolog"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Prolog"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PubidLiteral</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PubidLiteral"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PubidLiteral"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PubidLiteral"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PublicID</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PublicID"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PublicID"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PublicID"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tQ.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (Q)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tR.html
@@ -1,59 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (R)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >Reference</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Reference"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Reference"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Reference"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tS.html
@@ -1,117 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (S)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >SDDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#SDDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#SDDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#SDDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Section</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#Section"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Special</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#Special"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >StructType</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#StructType"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SymTab</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#SymTab"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#SymTab"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#SymTab"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SystemLiteral</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#SystemLiteral"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#SystemLiteral"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#SystemLiteral"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tT.html
@@ -1,133 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (T)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >TextDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#TextDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#TextDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#TextDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TextDetails</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#TextDetails"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThenElse</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ThenElse"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#ThenElse"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Token</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#Token"-		  >Text.XML.HaXml.Lex</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#Token"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokenT</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokenT"-		  >Text.XML.HaXml.Lex</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#TokenT"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokenizedType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#TokenizedType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#TokenizedType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#TokenizedType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TypeDef</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#TypeDef"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tU.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (U)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tV.html
@@ -1,71 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (V)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >Verbatim</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Verbatim"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Verbatim.html#Verbatim"-		  >Text.XML.HaXml.Verbatim</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >VersionInfo</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#VersionInfo"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#VersionInfo"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#VersionInfo"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tW.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (W)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tX.html
@@ -1,101 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (X)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >XMLDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#XMLDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#XMLDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#XMLDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >XmlAttrType</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#XmlAttrType"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >XmlAttributes</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#XmlAttributes"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >XmlContent</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#XmlContent"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >XmlEscaper</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#XmlEscaper"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Escape.html#XmlEscaper"-		  >Text.XML.HaXml.Escape</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tY.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (Y)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-tZ.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Type/ClassIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Type/Class Index (Z)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vA.html
@@ -1,261 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (A)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >ANY</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ANY"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ANY"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ANY"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ANYContent</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#ANYContent"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ATTLISTx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#ATTLISTx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Any</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Any"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttDef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttDef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttDef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttDef"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttList</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttList"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttList"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttList"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttListDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttListDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttListDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttListDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >AttValue</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#AttValue"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#AttValue"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#AttValue"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >addST</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#addST"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#addST"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#addST"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >anchor</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#anchor"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#anchor"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >anchorname</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#anchorname"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#anchorname"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >andThen</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#andThen"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#andThen"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >applypred</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#applypred"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >attr</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#attr"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#attr"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >attr2str</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#attr2str"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >attribute</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Html.Pretty.html#attribute"-		  >Text.XML.HaXml.Html.Pretty</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >attributed</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#attributed"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#attributed"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >attrval</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#attrval"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#attrval"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vB.html
@@ -1,87 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (B)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >braces</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#braces"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >bracket</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#bracket"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >brackets</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#brackets"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >bullet</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#bullet"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#bullet"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vC.html
@@ -1,337 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (C)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >CDATAx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#CDATAx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CElem</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CElem"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CElem"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CElem"-		  >Text.XML.HaXml.Types</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#CElem"-		>Text.XML.HaXml.Xml2Haskell</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CMisc</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CMisc"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CMisc"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CMisc"-		  >Text.XML.HaXml.Types</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#CMisc"-		>Text.XML.HaXml.Xml2Haskell</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CRef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CRef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CRef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CRef"-		  >Text.XML.HaXml.Types</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#CRef"-		>Text.XML.HaXml.Xml2Haskell</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >CString</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#CString"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#CString"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#CString"-		  >Text.XML.HaXml.Types</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#CString"-		>Text.XML.HaXml.Xml2Haskell</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Choice</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Choice"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Choice"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Choice"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Chr</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#Chr"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Comment</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Comment"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Comment"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Comment"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Constr</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#Constr"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ContentSpec</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ContentSpec"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ContentSpec"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ContentSpec"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >cat</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#cat"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		> <A HREF = "Text.XML.HaXml.html#cat"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#cat"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >cdata</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#cdata"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#cdata"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >chainl</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#chainl"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >chainl1</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#chainl1"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >chainr</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#chainr"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >chainr1</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#chainr1"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >char</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#char"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >children</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#children"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#children"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >chip</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#chip"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#chip"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >choice</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#choice"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >colon</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#colon"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >comma</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#comma"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >content</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Html.Pretty.html#content"-		  >Text.XML.HaXml.Html.Pretty</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Pretty.html#content"-		  >Text.XML.HaXml.Pretty</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >cp</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Pretty.html#cp"-		  >Text.XML.HaXml.Pretty</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vD.html
@@ -1,319 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (D)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >DOCTYPEx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#DOCTYPEx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >DTD</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#DTD"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#DTD"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#DTD"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >DataDef</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#DataDef"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >DefEntityValue</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#DefEntityValue"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#DefEntityValue"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#DefEntityValue"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >DefExternalID</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#DefExternalID"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#DefExternalID"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#DefExternalID"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Default</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#Default"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >DefaultTo</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#DefaultTo"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#DefaultTo"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#DefaultTo"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Defaultable</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Defaultable"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Defined</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Defined"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#Defined"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Document</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Document"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Document"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Document"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >deep</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#deep"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#deep"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >deepest</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#deepest"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#deepest"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >defaultA</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#defaultA"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >defaultToAttr</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#defaultToAttr"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >definite</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#definite"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >definiteA</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#definiteA"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >dfilter</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#dfilter"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >doctypedecl</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Pretty.html#doctypedecl"-		  >Text.XML.HaXml.Pretty</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >document</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Html.Pretty.html#document"-		  >Text.XML.HaXml.Html.Pretty</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Pretty.html#document"-		  >Text.XML.HaXml.Pretty</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >double</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#double"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >doubleQuotes</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#doubleQuotes"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >dtd2TypeDef</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.Convert.html#dtd2TypeDef"-		  >Text.XML.HaXml.DtdToHaskell.Convert</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >dtdParse</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#dtdParse"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Parse.html#dtdParse"-		  >Text.XML.HaXml.Parse</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >dtdParse'</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Parse.html#dtdParse'"-		  >Text.XML.HaXml.Parse</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vE.html
@@ -1,737 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (E)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >ELEMENTx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#ELEMENTx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EMPTY</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EMPTY"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EMPTY"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EMPTY"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ENTITIES</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ENTITIES"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ENTITIES"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ENTITIES"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ENTITY</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ENTITY"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ENTITY"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ENTITY"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ENTITYx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#ENTITYx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EVRef</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EVRef"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EVRef"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EVRef"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EVString</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EVString"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EVString"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EVString"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EightOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EightOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EighteenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EighteenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EighteenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EighteenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EighteenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#EighteenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Elem</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Elem"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Elem"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Elem"-		  >Text.XML.HaXml.Types</A-		  ></B-		> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#Elem"-		>Text.XML.HaXml.Xml2Haskell</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElemTag</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ElemTag"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ElemTag"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ElemTag"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Element</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Element"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Element"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Element"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElementDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ElementDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ElementDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ElementDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ElevenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ElevenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EncodingDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EncodingDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EncodingDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EncodingDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Entity</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Entity"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Entity"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Entity"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EntityGEDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EntityGEDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EntityGEDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EntityGEDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EntityPEDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EntityPEDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EntityPEDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EntityPEDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EntityValue</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EntityValue"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EntityValue"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EntityValue"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EnumDef</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#EnumDef"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >EnumeratedType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#EnumeratedType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#EnumeratedType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#EnumeratedType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Enumeration</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Enumeration"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Enumeration"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Enumeration"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtConditionalSect</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtConditionalSect"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtConditionalSect"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtConditionalSect"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtMarkupDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtMarkupDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtMarkupDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtMarkupDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtPE</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtPE"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtPE"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtPE"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtParsedEnt</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtParsedEnt"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtParsedEnt"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtParsedEnt"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ExtSubset</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ExtSubset"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ExtSubset"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ExtSubset"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >element</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#element"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Pretty.html#element"-		  >Text.XML.HaXml.Html.Pretty</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Pretty.html#element"-		  >Text.XML.HaXml.Pretty</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >elm</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#elm"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#elm"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >elserror</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#elserror"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >empty</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#empty"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >emptyST</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#emptyST"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#emptyST"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#emptyST"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >eof</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#eof"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >equals</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#equals"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >et</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#et"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#et"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >extracted</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#extracted"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#extracted"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vF.html
@@ -1,693 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (F)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >FIXED</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#FIXED"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#FIXED"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#FIXED"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FifteenOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FifteenOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FifteenOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FifteenOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FifteenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FifteenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FifteenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FifteenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FifteenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FifteenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FifteenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FifteenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf5</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf5"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf6</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf6"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FiveOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FiveOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf4</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf4"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf5</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf5"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf6</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf6"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourteenOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourteenOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourteenOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourteenOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourteenOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourteenOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourteenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourteenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourteenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourteenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourteenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourteenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >FourteenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#FourteenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fReadXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#fReadXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#fReadXml"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fWriteXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#fWriteXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#fWriteXml"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fcat</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#fcat"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >find</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#find"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#find"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fix2Args</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#fix2Args"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Wrappers.html#fix2Args"-		  >Text.XML.HaXml.Wrappers</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >float</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#float"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >foldXml</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#foldXml"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#foldXml"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fromAttrToStr</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#fromAttrToStr"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fromAttrToTyp</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#fromAttrToTyp"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fromAttrs</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#fromAttrs"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fromContents</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#fromContents"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fromElem</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#fromElem"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fromText</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#fromText"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fromXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#fromXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fsep</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#fsep"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >fullRender</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#fullRender"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vG.html
@@ -1,81 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (G)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >GEDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#GEDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#GEDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#GEDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >global</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#global"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >guards</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#guards"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#guards"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vH.html
@@ -1,389 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (H)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >h1</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#h1"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#h1"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >h2</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#h2"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#h2"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >h3</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#h3"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#h3"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >h4</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#h4"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#h4"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hGetXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#hGetXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#hGetXml"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hName</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#hName"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hPutXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#hPutXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#hPutXml"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hang</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#hang"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hbody</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hbody"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hbody"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hbold</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hbold"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hbold"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hbr</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hbr"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hbr"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hcat</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#hcat"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hcentre</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hcentre"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hcentre"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hcol</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hcol"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hcol"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hdiv</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hdiv"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hdiv"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hem</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hem"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hem"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hhead</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hhead"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hhead"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hhr</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hhr"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hhr"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hpara</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hpara"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hpara"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hpre</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hpre"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hpre"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hrow</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hrow"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hrow"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hsep</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#hsep"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >hspan</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#hspan"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#hspan"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >htable</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#htable"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#htable"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >htitle</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#htitle"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#htitle"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >html</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#html"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#html"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >htmlParse</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#htmlParse"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Parse.html#htmlParse"-		  >Text.XML.HaXml.Html.Parse</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >htmlprint</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#htmlprint"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#htmlprint"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >htt</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#htt"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#htt"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vI.html
@@ -1,243 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (I)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >ID</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ID"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#ID"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#ID"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IDREF</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IDREF"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IDREF"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IDREF"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IDREFS</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IDREFS"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IDREFS"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IDREFS"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IGNOREx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#IGNOREx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IMPLIED</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IMPLIED"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IMPLIED"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IMPLIED"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >INCLUDEx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#INCLUDEx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Ignore</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Ignore"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Ignore"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Ignore"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IgnoreSect</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IgnoreSect"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IgnoreSect"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IgnoreSect"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IgnoreSectContents</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IgnoreSectContents"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IgnoreSectContents"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IgnoreSectContents"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >IncludeSect</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#IncludeSect"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#IncludeSect"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#IncludeSect"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ifTxt</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#ifTxt"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#ifTxt"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >iffind</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#iffind"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#iffind"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >int</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#int"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >integer</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#integer"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >interspersed</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#interspersed"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#interspersed"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >item</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#item"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vJ.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (J)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vK.html
@@ -1,57 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (K)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >keep</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#keep"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#keep"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vL.html
@@ -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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (L)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >LeftMode</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#LeftMode"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >List</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#List"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#List"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >List1</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#List1"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >lbrace</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#lbrace"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >lbrack</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#lbrack"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >lexXtract</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#lexXtract"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >literal</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#literal"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#literal"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >local</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#local"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >lookupST</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#lookupST"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#lookupST"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#lookupST"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >lparen</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#lparen"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vM.html
@@ -1,223 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (M)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >MarkupMisc</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#MarkupMisc"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#MarkupMisc"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#MarkupMisc"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Maybe</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Maybe"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#Maybe"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Mixed</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Mixed"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Mixed"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Mixed"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >makehref</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#makehref"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#makehref"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >mangle</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#mangle"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >manglef</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#manglef"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >many</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#many"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#many"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >many1</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#many1"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >margin</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#margin"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#margin"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >maybeToAttr</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#maybeToAttr"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >mkElem</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#mkElem"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#mkElem"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >mkElemAttr</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#mkElemAttr"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#mkElemAttr"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >mkInstance</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.Instance.html#mkInstance"-		  >Text.XML.HaXml.DtdToHaskell.Instance</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >mkXmlEscaper</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#mkXmlEscaper"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Escape.html#mkXmlEscaper"-		  >Text.XML.HaXml.Escape</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >multi</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#multi"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#multi"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vN.html
@@ -1,417 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (N)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >NDATA</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NDATA"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NDATA"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NDATA"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NMTOKEN</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NMTOKEN"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NMTOKEN"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NMTOKEN"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NMTOKENS</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NMTOKENS"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NMTOKENS"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NMTOKENS"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NOTATION</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NOTATION"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NOTATION"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NOTATION"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NOTATIONx</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#NOTATIONx"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Name</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Name"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineteenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineteenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NineteenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#NineteenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NonDefault</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#NonDefault"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NonEmpty</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#NonEmpty"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >None</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#None"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#None"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#None"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Notation</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Notation"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Notation"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Notation"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >NotationType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#NotationType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#NotationType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#NotationType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >name</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#name"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >name_</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#name_"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >name_a</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#name_a"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >name_ac</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#name_ac"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >name_f</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#name_f"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >nest</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#nest"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >none</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#none"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#none"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >nottok</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#nottok"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >numbered</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#numbered"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#numbered"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vO.html
@@ -1,429 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (O)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >OneLineMode</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#OneLineMode"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#OneOf"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf2</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf2"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf3</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf3"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf4</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf4"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf5</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf5"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf6</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf6"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >OneOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#OneOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >o</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#o"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#o"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ocato</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#ocato"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ochildreno</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#ochildreno"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >odeepo</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#odeepo"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >oelmo</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#oelmo"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >oglobo</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#oglobo"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >oifTxto</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#oifTxto"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >oiffindo</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#oiffindo"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >okeepo</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#okeepo"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >oloco</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#oloco"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ononeo</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#ononeo"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >oo</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#oo"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#oo"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ooo</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#ooo"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ops</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#ops"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >otxto</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#otxto"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >owitho</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#owitho"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >owithouto</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Combinators.html#owithouto"-		  >Text.XML.HaXml.Xtract.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vP.html
@@ -1,425 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (P)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >P</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#P"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PCDATA</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PCDATA"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PCDATA"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PCDATA"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PCDATAplus</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PCDATAplus"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PCDATAplus"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PCDATAplus"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PEDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PEDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PEDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PEDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PEDefEntityValue</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PEDefEntityValue"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PEDefEntityValue"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PEDefEntityValue"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PEDefExternalID</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PEDefExternalID"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PEDefExternalID"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PEDefExternalID"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PI</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PI"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PI"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PI"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PStr</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#PStr"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PUBLIC</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PUBLIC"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PUBLIC"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PUBLIC"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PUBLICID</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PUBLICID"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PUBLICID"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PUBLICID"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PageMode</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#PageMode"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Plus</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Plus"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Plus"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Plus"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Pn</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#Pn"-		  >Text.XML.HaXml.Lex</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#Pn"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Prim</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#Prim"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Prolog</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Prolog"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Prolog"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Prolog"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >PubidLiteral</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#PubidLiteral"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#PubidLiteral"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#PubidLiteral"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >papply</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#papply"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >papply'</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#papply'"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >parens</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#parens"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		> <A HREF = "Text.XML.HaXml.html#parens"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#parens"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >parseXtract</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Parse.html#parseXtract"-		  >Text.XML.HaXml.Xtract.Parse</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >partialValidate</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Validate.html#partialValidate"-		  >Text.XML.HaXml.Validate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >path</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#path"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#path"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >posInNewCxt</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#posInNewCxt"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >position</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#position"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#position"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >possibleA</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#possibleA"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ppAName</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#ppAName"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ppHName</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#ppHName"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ppTypeDef</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#ppTypeDef"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ppXName</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#ppXName"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >processXmlWith</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#processXmlWith"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Wrappers.html#processXmlWith"-		  >Text.XML.HaXml.Wrappers</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >prolog</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Pretty.html#prolog"-		  >Text.XML.HaXml.Pretty</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >punctuate</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#punctuate"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vQ.html
@@ -1,69 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (Q)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >Query</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Query"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Query"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Query"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >quotes</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#quotes"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vR.html
@@ -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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (R)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >REQUIRED</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#REQUIRED"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#REQUIRED"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#REQUIRED"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >RefChar</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#RefChar"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#RefChar"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#RefChar"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >RefEntity</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#RefEntity"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#RefEntity"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#RefEntity"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >rational</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#rational"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >rbrace</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#rbrace"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >rbrack</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#rbrack"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >readXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#readXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#readXml"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >render</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#render"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		> <A HREF = "Text.XML.HaXml.html#render"-		>Text.XML.HaXml</A-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >reparse</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#reparse"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >replaceAttrs</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#replaceAttrs"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#replaceAttrs"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >replaceTag</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#replaceTag"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#replaceTag"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >rparen</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#rparen"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vS.html
@@ -1,657 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (S)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >SYSTEM</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#SYSTEM"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#SYSTEM"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#SYSTEM"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Seq</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Seq"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Seq"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Seq"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SevenOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SevenOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SeventeenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SeventeenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SeventeenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SeventeenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SeventeenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SeventeenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SeventeenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SeventeenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf6</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf6"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixteenOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixteenOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixteenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixteenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixteenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixteenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixteenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixteenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SixteenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#SixteenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Star</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#Star"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#Star"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#Star"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Str</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#Str"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >String</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#String"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#String"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >StringType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#StringType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#StringType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#StringType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Symbol</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#Symbol"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >SystemLiteral</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#SystemLiteral"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#SystemLiteral"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#SystemLiteral"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >semi</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#semi"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >sep</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#sep"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >sepby</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#sepby"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >sepby1</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#sepby1"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >showXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#showXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#showXml"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >showattr</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#showattr"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Html.Generate.html#showattr"-		  >Text.XML.HaXml.Html.Generate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >space</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#space"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >stdXmlEscaper</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#stdXmlEscaper"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Escape.html#stdXmlEscaper"-		  >Text.XML.HaXml.Escape</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >stget</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#stget"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >stquery</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#stquery"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >str2attr</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#str2attr"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >stupd</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#stupd"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vT.html
@@ -1,1271 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (T)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >TagName</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#TagName"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#TagName"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#TagName"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TextDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#TextDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#TextDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#TextDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThirteenOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThirteenOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf3</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf3"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf4</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf4"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf5</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf5"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf6</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf6"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >ThreeOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#ThreeOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokAmp</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokAmp"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokAnyClose</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokAnyClose"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokAnyOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokAnyOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokBraClose</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokBraClose"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokBraOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokBraOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokComma</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokComma"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokCommentClose</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokCommentClose"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokCommentOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokCommentOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokEndClose</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokEndClose"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokEndOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokEndOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokEqual</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokEqual"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokFreeText</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokFreeText"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokHash</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokHash"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokName</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokName"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokNull</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokNull"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokNum</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#TokNum"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokPIClose</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokPIClose"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokPIOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokPIOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokPercent</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokPercent"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokPipe</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokPipe"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokPlus</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokPlus"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokQuery</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokQuery"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokQuote</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokQuote"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSection</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSection"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSectionClose</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSectionClose"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSectionOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSectionOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSemi</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSemi"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSpecial</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSpecial"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSpecialOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSpecialOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSqClose</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSqClose"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokSqOpen</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokSqOpen"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokStar</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#TokStar"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokString</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Lex.html#TokString"-		  >Text.XML.HaXml.Xtract.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TokenizedType</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#TokenizedType"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#TokenizedType"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#TokenizedType"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >Tuple</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#Tuple"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		> <B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#Tuple"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwelveOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwelveOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwentyOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwentyOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf10</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf10"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf11</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf11"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf12</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf12"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf13</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf13"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf14</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf14"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf15</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf15"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf16</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf16"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf17</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf17"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf18</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf18"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf19</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf19"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf2</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf2"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf20</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf20"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf3</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf3"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf4</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf4"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf5</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf5"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf6</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf6"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf7</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf7"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf8</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf8"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >TwoOf9</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.OneOfN.html#TwoOf9"-		  >Text.XML.HaXml.OneOfN</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >tag</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#tag"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#tag"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >tagWith</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#tagWith"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#tagWith"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >tagged</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#tagged"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#tagged"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >text</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#text"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >textlabelled</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#textlabelled"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#textlabelled"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toAttrFrStr</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#toAttrFrStr"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toAttrFrTyp</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#toAttrFrTyp"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toAttrs</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#toAttrs"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toContents</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#toContents"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toDTD</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#toDTD"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toEOF</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#toEOF"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toElem</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#toElem"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toHType</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#toHType"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toText</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xml2Haskell.html#toText"-		  >Text.XML.HaXml.Xml2Haskell</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >toXml</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#toXml"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >tok</TD-	      ><TD-	      ><B-		><A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#tok"-		  >Text.ParserCombinators.HuttonMeijerWallace</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >txt</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#txt"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#txt"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vU.html
@@ -1,57 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (U)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >union</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#union"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#union"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vV.html
@@ -1,101 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (V)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >validate</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#validate"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Validate.html#validate"-		  >Text.XML.HaXml.Validate</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >vcat</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#vcat"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >verbAttr</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#verbAttr"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Verbatim.html#verbAttr"-		  >Text.XML.HaXml.Verbatim</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >verbatim</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#verbatim"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Verbatim.html#verbatim"-		  >Text.XML.HaXml.Verbatim</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >version</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.html#version"-		  >Text.XML.HaXml</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vW.html
@@ -1,81 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (W)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >when</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#when"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#when"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >with</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#with"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#with"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >without</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#without"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#without"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vX.html
@@ -1,177 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (X)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >XMLDecl</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#XMLDecl"-		>Text.XML.HaXml</A-		> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#XMLDecl"-		>Text.XML.HaXml.Haskell2Xml</A-		> <B-		><A HREF = "Text.XML.HaXml.Types.html#XMLDecl"-		  >Text.XML.HaXml.Types</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >x</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#x"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Combinators.html#x"-		  >Text.XML.HaXml.Combinators</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xFromChar</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#xFromChar"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xName</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.DtdToHaskell.TypeDef.html#xName"-		  >Text.XML.HaXml.DtdToHaskell.TypeDef</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xToChar</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Haskell2Xml.html#xToChar"-		  >Text.XML.HaXml.Haskell2Xml</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xmlEscape</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#xmlEscape"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Escape.html#xmlEscape"-		  >Text.XML.HaXml.Escape</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xmlLex</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#xmlLex"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xmlParse</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#xmlParse"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Parse.html#xmlParse"-		  >Text.XML.HaXml.Parse</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xmlParse'</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Parse.html#xmlParse'"-		  >Text.XML.HaXml.Parse</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xmlReLex</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Lex.html#xmlReLex"-		  >Text.XML.HaXml.Lex</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xmlUnEscape</TD-	      ><TD-	      ><A HREF = "Text.XML.HaXml.html#xmlUnEscape"-		>Text.XML.HaXml</A-		> <B-		><A HREF = "Text.XML.HaXml.Escape.html#xmlUnEscape"-		  >Text.XML.HaXml.Escape</A-		  ></B-		></TD-	      ></TR-	    ><TR-	    ><TD-	      >xtract</TD-	      ><TD-	      ><B-		><A HREF = "Text.XML.HaXml.Xtract.Parse.html#xtract"-		  >Text.XML.HaXml.Xtract.Parse</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vY.html
@@ -1,45 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (Y)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
− docs/HaXml/doc-index-vZ.html
@@ -1,55 +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-  ><TITLE-    >HaXml (Function/ConstructorIndex)</TITLE-    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"-    ></HEAD-  ><BODY-  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-    ><TR-      ><TD CLASS = "topbar"-	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"-	  ><TR-	    ><TD-	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "-		></TD-	      ><TD CLASS = "title"-	      >HaXml</TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "index.html"-		>Contents</A-		></TD-	      ><TD CLASS = "topbut"-	      ><A HREF = "doc-index.html"-		>Index</A-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ><TR-      ><TD CLASS = "section1"-	>Function/Constructor Index (Z)</TD-	></TR-      ><TR-      ><TD-	><TABLE CELLPADDING = "0" CELLSPACING = "5"-	  ><TR-	    ><TD-	      >ZigZagMode</TD-	      ><TD-	      ><B-		><A HREF = "Text.PrettyPrint.HughesPJ.html#ZigZagMode"-		  >Text.PrettyPrint.HughesPJ</A-		  ></B-		></TD-	      ></TR-	    ></TABLE-	  ></TD-	></TR-      ></TABLE-    ></BODY-  ></HTML->
docs/HaXml/doc-index.html view
@@ -139,10 +139,6 @@ >!</A ></TD ><TD-><A HREF="doc-index-43.html"->+</A-></TD-><TD ><A HREF="doc-index-47.html" >/</A ></TD
docs/HaXml/index.html view
@@ -54,7 +54,7 @@ ><TR ><TD STYLE="width: 48em" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:1')" ALT="show/hide"->ParserCombinators</TD+>XML</TD ><TD ></TD ><TD@@ -64,22 +64,11 @@ ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3" ><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:1" STYLE="display:block;" ><TR-><TD STYLE="padding-left: 1.25em;width: 46em"-><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html"->Text.ParserCombinators.HuttonMeijerWallace</A-></TD-><TD-></TD-><TD-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD STYLE="width: 48em"+><TD STYLE="width: 46em" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:2')" ALT="show/hide"->XML</TD+><A HREF="Text-XML-HaXml.html"+>Text.XML.HaXml</A+></TD ><TD ></TD ><TD@@ -89,10 +78,9 @@ ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3" ><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:2" STYLE="display:block;" ><TR-><TD STYLE="width: 46em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:3')" ALT="show/hide"-><A HREF="Text-XML-HaXml.html"->Text.XML.HaXml</A+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-ByteStringPP.html"+>Text.XML.HaXml.ByteStringPP</A ></TD ><TD ></TD@@ -100,9 +88,6 @@ ></TD ></TR ><TR-><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:3" STYLE="display:block;"-><TR ><TD STYLE="padding-left: 1.25em;width: 44em" ><A HREF="Text-XML-HaXml-Combinators.html" >Text.XML.HaXml.Combinators</A@@ -114,7 +99,7 @@ ></TR ><TR ><TD STYLE="width: 44em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:4')" ALT="show/hide"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:3')" ALT="show/hide" >DtdToHaskell</TD ><TD ></TD@@ -123,7 +108,7 @@ ></TR ><TR ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:4" STYLE="display:block;"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:3" STYLE="display:block;" ><TR ><TD STYLE="padding-left: 1.25em;width: 42em" ><A HREF="Text-XML-HaXml-DtdToHaskell-Convert.html"@@ -168,18 +153,8 @@ ></TD ></TR ><TR-><TD STYLE="padding-left: 1.25em;width: 44em"-><A HREF="Text-XML-HaXml-Haskell2Xml.html"->Text.XML.HaXml.Haskell2Xml</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR ><TD STYLE="width: 44em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:5')" ALT="show/hide"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:4')" ALT="show/hide" >Html</TD ><TD ></TD@@ -188,7 +163,7 @@ ></TR ><TR ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:4" STYLE="display:block;" ><TR ><TD STYLE="padding-left: 1.25em;width: 42em" ><A HREF="Text-XML-HaXml-Html-Generate.html"@@ -211,6 +186,16 @@ ></TR ><TR ><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-Html-ParseLazy.html"+>Text.XML.HaXml.Html.ParseLazy</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 42em" ><A HREF="Text-XML-HaXml-Html-Pretty.html" >Text.XML.HaXml.Html.Pretty</A ></TD@@ -254,6 +239,26 @@ ></TR ><TR ><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-ParseLazy.html"+>Text.XML.HaXml.ParseLazy</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Posn.html"+>Text.XML.HaXml.Posn</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em" ><A HREF="Text-XML-HaXml-Pretty.html" >Text.XML.HaXml.Pretty</A ></TD@@ -264,6 +269,36 @@ ></TR ><TR ><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-SAX.html"+>Text.XML.HaXml.SAX</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-ShowXmlLazy.html"+>Text.XML.HaXml.ShowXmlLazy</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-TypeMapping.html"+>Text.XML.HaXml.TypeMapping</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em" ><A HREF="Text-XML-HaXml-Types.html" >Text.XML.HaXml.Types</A ></TD@@ -304,8 +339,8 @@ ></TR ><TR ><TD STYLE="padding-left: 1.25em;width: 44em"-><A HREF="Text-XML-HaXml-Xml2Haskell.html"->Text.XML.HaXml.Xml2Haskell</A+><A HREF="Text-XML-HaXml-XmlContent.html"+>Text.XML.HaXml.XmlContent</A ></TD ><TD ></TD@@ -314,7 +349,7 @@ ></TR ><TR ><TD STYLE="width: 44em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:6')" ALT="show/hide"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:5')" ALT="show/hide" >Xtract</TD ><TD ></TD@@ -323,7 +358,7 @@ ></TR ><TR ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:6" STYLE="display:block;"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;" ><TR ><TD STYLE="padding-left: 1.25em;width: 42em" ><A HREF="Text-XML-HaXml-Xtract-Combinators.html"
+ docs/HaXml/src/Text/ParserCombinators/HuttonMeijer.html view
@@ -0,0 +1,219 @@+<pre><font color=Blue>-----------------------------------------------------------------------------</font>+<font color=Blue>-- |</font>+<font color=Blue>-- Module      :  Text.ParserCombinators.HuttonMeijer</font>+<font color=Blue>-- Copyright   :  Graham Hutton (University of Nottingham), Erik Meijer (University of Utrecht)</font>+<font color=Blue>-- Licence     :  BSD</font>+<font color=Blue>-- </font>+<font color=Blue>-- Maintainer  :  Malcolm Wallace &lt;Malcolm.Wallace@cs.york.ac.uk&gt;</font>+<font color=Blue>-- Stability   :  Stable</font>+<font color=Blue>-- Portability :  All</font>+<font color=Blue>--</font>+<font color=Blue>--                  A LIBRARY OF MONADIC PARSER COMBINATORS</font>+<font color=Blue>-- </font>+<font color=Blue>--                               29th July 1996</font>+<font color=Blue>-- </font>+<font color=Blue>--                  Graham Hutton               Erik Meijer</font>+<font color=Blue>--             University of Nottingham    University of Utrecht</font>+<font color=Blue>-- </font>+<font color=Blue>-- This Haskell script defines a library of parser combinators, and is</font>+<font color=Blue>-- taken from sections 1-6 of our article "Monadic Parser Combinators".</font>+<font color=Blue>-- Some changes to the library have been made in the move from Gofer</font>+<font color=Blue>-- to Haskell:</font>+<font color=Blue>-- </font>+<font color=Blue>--    * Do notation is used in place of monad comprehension notation;</font>+<font color=Blue>-- </font>+<font color=Blue>--    * The parser datatype is defined using "newtype", to avoid the overhead</font>+<font color=Blue>--      of tagging and untagging parsers with the P constructor.</font>+<font color=Blue>-----------------------------------------------------------------------------</font>+++<font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>HuttonMeijer+   <font color=Cyan>(</font>Parser<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font> item<font color=Cyan>,</font> first<font color=Cyan>,</font> papply<font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>+++</font><font color=Cyan>)</font><font color=Cyan>,</font> sat<font color=Cyan>,</font> <font color=Blue>{-tok,-}</font> many<font color=Cyan>,</font> many1<font color=Cyan>,</font>+    sepby<font color=Cyan>,</font> sepby1<font color=Cyan>,</font> chainl<font color=Cyan>,</font>+    chainl1<font color=Cyan>,</font> chainr<font color=Cyan>,</font> chainr1<font color=Cyan>,</font> ops<font color=Cyan>,</font> bracket<font color=Cyan>,</font> char<font color=Cyan>,</font> digit<font color=Cyan>,</font> lower<font color=Cyan>,</font> upper<font color=Cyan>,</font>+    letter<font color=Cyan>,</font> alphanum<font color=Cyan>,</font> string<font color=Cyan>,</font> ident<font color=Cyan>,</font> nat<font color=Cyan>,</font> int<font color=Cyan>,</font> spaces<font color=Cyan>,</font> comment<font color=Cyan>,</font> junk<font color=Cyan>,</font>+    skip<font color=Cyan>,</font> token<font color=Cyan>,</font> natural<font color=Cyan>,</font> integer<font color=Cyan>,</font> symbol<font color=Cyan>,</font> identifier<font color=Cyan>)</font> <font color=Green><u>where</u></font>++<font color=Green><u>import</u></font> Char+<font color=Green><u>import</u></font> Monad++<font color=Green><u>infixr</u></font> <font color=Magenta>5</font> <font color=Cyan>+++</font>++<a name="Token"></a><font color=Green><u>type</u></font> Token <font color=Red>=</font> Char++<font color=Blue>---------------------------------------------------------</font>+<font color=Blue>-- | The parser monad</font>++<font color=Green><u>newtype</u></font> Parser a   <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>[</font>Token<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font><font color=Red>[</font>Token<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>++<font color=Green><u>instance</u></font> Functor Parser <font color=Green><u>where</u></font>+   <font color=Blue>-- map         :: (a -&gt; b) -&gt; (Parser a -&gt; Parser b)</font>+   fmap f <font color=Cyan>(</font>P p<font color=Cyan>)</font>    <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>f v<font color=Cyan>,</font> out<font color=Cyan>)</font> <font color=Red>|</font> <font color=Cyan>(</font>v<font color=Cyan>,</font>out<font color=Cyan>)</font> <font color=Red>&lt;-</font> p inp<font color=Red>]</font><font color=Cyan>)</font>++<font color=Green><u>instance</u></font> Monad Parser <font color=Green><u>where</u></font>+   <font color=Blue>-- return      :: a -&gt; Parser a</font>+   return v        <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>v<font color=Cyan>,</font>inp<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>++   <font color=Blue>-- &gt;&gt;=         :: Parser a -&gt; (a -&gt; Parser b) -&gt; Parser b</font>+   <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> f     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> concat <font color=Red>[</font>papply <font color=Cyan>(</font>f v<font color=Cyan>)</font> out <font color=Red>|</font> <font color=Cyan>(</font>v<font color=Cyan>,</font>out<font color=Cyan>)</font> <font color=Red>&lt;-</font> p inp<font color=Red>]</font><font color=Cyan>)</font>++   <font color=Blue>-- fail        :: String -&gt; Parser a</font>+   fail <font color=Green><u>_</u></font>          <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font><font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>++<font color=Green><u>instance</u></font> MonadPlus Parser <font color=Green><u>where</u></font>+   <font color=Blue>-- mzero       :: Parser a</font>+   mzero           <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font><font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>++   <font color=Blue>-- mplus       :: Parser a -&gt; Parser a -&gt; Parser a</font>+   <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`mplus`</font> <font color=Cyan>(</font>P q<font color=Cyan>)</font>  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Cyan>(</font>p inp <font color=Cyan>++</font> q inp<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- ------------------------------------------------------------</font>+<font color=Blue>-- * Other primitive parser combinators</font>+<font color=Blue>-- ------------------------------------------------------------</font>++item               <font color=Red>::</font> Parser Token+<a name="item"></a>item                <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> inp <font color=Green><u>of</u></font>+                                   <font color=Red>[</font><font color=Red>]</font>     <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Red>]</font>+                                   <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>x<font color=Cyan>,</font>xs<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>++first             <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser a+<a name="first"></a>first <font color=Cyan>(</font>P p<font color=Cyan>)</font>        <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p inp <font color=Green><u>of</u></font>+                                   <font color=Red>[</font><font color=Red>]</font>    <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Red>]</font>+                                   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>x<font color=Red>]</font><font color=Cyan>)</font>++papply            <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font><font color=Red>[</font>Token<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="papply"></a>papply <font color=Cyan>(</font>P p<font color=Cyan>)</font> inp   <font color=Red>=</font> p inp++<font color=Blue>-- ------------------------------------------------------------</font>+<font color=Blue>-- * Derived combinators</font>+<font color=Blue>-- ------------------------------------------------------------</font>++<a name="+++"></a><font color=Cyan>(</font><font color=Cyan>+++</font><font color=Cyan>)</font>             <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser a <font color=Red>-&gt;</font> Parser a+<a name="p"></a>p <font color=Cyan>+++</font> q            <font color=Red>=</font> first <font color=Cyan>(</font>p <font color=Cyan>`mplus`</font> q<font color=Cyan>)</font>++sat               <font color=Red>::</font> <font color=Cyan>(</font>Token <font color=Red>-&gt;</font> Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser Token+<a name="sat"></a>sat p              <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> item<font color=Cyan>;</font> <font color=Green><u>if</u></font> p x <font color=Green><u>then</u></font> return x <font color=Green><u>else</u></font> mzero<font color=Cyan>}</font>++<font color=Blue>--tok               :: Token -&gt; Parser Token</font>+<font color=Blue>--tok t              = do {x &lt;- item; if t==snd x then return t else mzero}</font>++many              <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser <font color=Red>[</font>a<font color=Red>]</font>+<a name="many"></a>many p             <font color=Red>=</font> many1 p <font color=Cyan>+++</font> return <font color=Red>[</font><font color=Red>]</font>+<font color=Blue>--many p           = force (many1 p +++ return [])</font>++many1             <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser <font color=Red>[</font>a<font color=Red>]</font>+<a name="many1"></a>many1 p            <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many p<font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>}</font>++sepby             <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser b <font color=Red>-&gt;</font> Parser <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepby"></a>p <font color=Cyan>`sepby`</font> sep      <font color=Red>=</font> <font color=Cyan>(</font>p <font color=Cyan>`sepby1`</font> sep<font color=Cyan>)</font> <font color=Cyan>+++</font> return <font color=Red>[</font><font color=Red>]</font>++sepby1            <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser b <font color=Red>-&gt;</font> Parser <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepby1"></a>p <font color=Cyan>`sepby1`</font> sep     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font><font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>}</font>++chainl            <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser <font color=Cyan>(</font>a <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Parser a+<a name="chainl"></a>chainl p op v      <font color=Red>=</font> <font color=Cyan>(</font>p <font color=Cyan>`chainl1`</font> op<font color=Cyan>)</font> <font color=Cyan>+++</font> return v++chainl1           <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser <font color=Cyan>(</font>a <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> a<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser a+<a name="chainl1"></a>p <font color=Cyan>`chainl1`</font> op     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> rest x<font color=Cyan>}</font>+                     <font color=Green><u>where</u></font>+                        rest x <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>f <font color=Red>&lt;-</font> op<font color=Cyan>;</font> y <font color=Red>&lt;-</font> p<font color=Cyan>;</font> rest <font color=Cyan>(</font>f x y<font color=Cyan>)</font><font color=Cyan>}</font>+                                 <font color=Cyan>+++</font> return x++chainr            <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser <font color=Cyan>(</font>a <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Parser a+<a name="chainr"></a>chainr p op v      <font color=Red>=</font> <font color=Cyan>(</font>p <font color=Cyan>`chainr1`</font> op<font color=Cyan>)</font> <font color=Cyan>+++</font> return v++chainr1           <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser <font color=Cyan>(</font>a <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> a<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser a+<a name="chainr1"></a>p <font color=Cyan>`chainr1`</font> op     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> rest x<font color=Cyan>}</font>+                     <font color=Green><u>where</u></font>+                        rest x <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>f <font color=Red>&lt;-</font> op<font color=Cyan>;</font> y <font color=Red>&lt;-</font> p <font color=Cyan>`chainr1`</font> op<font color=Cyan>;</font> return <font color=Cyan>(</font>f x y<font color=Cyan>)</font><font color=Cyan>}</font>+                                 <font color=Cyan>+++</font> return x++ops               <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>Parser a<font color=Cyan>,</font> b<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Parser b+<a name="ops"></a>ops xs             <font color=Red>=</font> foldr1 <font color=Cyan>(</font><font color=Cyan>+++</font><font color=Cyan>)</font> <font color=Red>[</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>p<font color=Cyan>;</font> return op<font color=Cyan>}</font> <font color=Red>|</font> <font color=Cyan>(</font>p<font color=Cyan>,</font>op<font color=Cyan>)</font> <font color=Red>&lt;-</font> xs<font color=Red>]</font>++bracket           <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser b <font color=Red>-&gt;</font> Parser c <font color=Red>-&gt;</font> Parser b+<a name="bracket"></a>bracket open p close <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>open<font color=Cyan>;</font> x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> close<font color=Cyan>;</font> return x<font color=Cyan>}</font>++<font color=Blue>-- ------------------------------------------------------------</font>+<font color=Blue>-- * Useful parsers</font>+<font color=Blue>-- ------------------------------------------------------------</font>++char              <font color=Red>::</font> Char <font color=Red>-&gt;</font> Parser Char+<a name="char"></a>char x             <font color=Red>=</font> sat <font color=Cyan>(</font><font color=Red>\</font>y <font color=Red>-&gt;</font> x <font color=Cyan>==</font> y<font color=Cyan>)</font>++digit             <font color=Red>::</font> Parser Char+<a name="digit"></a>digit              <font color=Red>=</font> sat isDigit++lower             <font color=Red>::</font> Parser Char+<a name="lower"></a>lower              <font color=Red>=</font> sat isLower++upper             <font color=Red>::</font> Parser Char+<a name="upper"></a>upper              <font color=Red>=</font> sat isUpper++letter            <font color=Red>::</font> Parser Char+<a name="letter"></a>letter             <font color=Red>=</font> sat isAlpha++alphanum          <font color=Red>::</font> Parser Char+<a name="alphanum"></a>alphanum           <font color=Red>=</font> sat isAlphaNum <font color=Cyan>+++</font> char <font color=Magenta>'_'</font>++string            <font color=Red>::</font> String <font color=Red>-&gt;</font> Parser String+<a name="string"></a>string <font color=Magenta>""</font>          <font color=Red>=</font> return <font color=Magenta>""</font>+string <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>      <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>char x<font color=Cyan>;</font> string xs<font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>}</font>++ident             <font color=Red>::</font> Parser String+<a name="ident"></a>ident              <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> lower<font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many alphanum<font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>}</font>++nat               <font color=Red>::</font> Parser Int+<a name="nat"></a>nat                <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> digit<font color=Cyan>;</font> return <font color=Cyan>(</font>fromEnum x <font color=Blue>-</font> fromEnum <font color=Magenta>'0'</font><font color=Cyan>)</font><font color=Cyan>}</font> <font color=Cyan>`chainl1`</font> return op+                     <font color=Green><u>where</u></font>+                        m <font color=Cyan>`op`</font> n <font color=Red>=</font> <font color=Magenta>10</font><font color=Cyan>*</font>m <font color=Cyan>+</font> n++int               <font color=Red>::</font> Parser Int+<a name="int"></a>int                <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>char <font color=Magenta>'-'</font><font color=Cyan>;</font> n <font color=Red>&lt;-</font> nat<font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Blue>-</font>n<font color=Cyan>)</font><font color=Cyan>}</font> <font color=Cyan>+++</font> nat++<font color=Blue>-- ------------------------------------------------------------</font>+<font color=Blue>-- * Lexical combinators</font>+<font color=Blue>-- ------------------------------------------------------------</font>++spaces            <font color=Red>::</font> Parser <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="spaces"></a>spaces             <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>many1 <font color=Cyan>(</font>sat isSpace<font color=Cyan>)</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>}</font>++comment           <font color=Red>::</font> Parser <font color=Cyan>(</font><font color=Cyan>)</font>+<font color=Blue>--comment            = do {string "--"; many (sat (\x -&gt; x /= '\n')); return ()}</font>+<font color=Blue>--comment            = do </font>+<font color=Blue>--                       _ &lt;- string "--"</font>+<font color=Blue>--                       _ &lt;- many (sat (\x -&gt; x /= '\n'))</font>+<font color=Blue>--                       return ()</font>+<a name="comment"></a>comment            <font color=Red>=</font> <font color=Green><u>do</u></font>+                       bracket <font color=Cyan>(</font>string <font color=Magenta>"/*"</font><font color=Cyan>)</font> <font color=Cyan>(</font>many item<font color=Cyan>)</font> <font color=Cyan>(</font>string <font color=Magenta>"*/"</font><font color=Cyan>)</font>+                       return <font color=Cyan>(</font><font color=Cyan>)</font>++junk              <font color=Red>::</font> Parser <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="junk"></a>junk               <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>many <font color=Cyan>(</font>spaces <font color=Cyan>+++</font> comment<font color=Cyan>)</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>}</font>++skip              <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser a+<a name="skip"></a>skip p             <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>junk<font color=Cyan>;</font> p<font color=Cyan>}</font>++token             <font color=Red>::</font> Parser a <font color=Red>-&gt;</font> Parser a+<a name="token"></a>token p            <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>v <font color=Red>&lt;-</font> p<font color=Cyan>;</font> junk<font color=Cyan>;</font> return v<font color=Cyan>}</font>++<font color=Blue>-- ------------------------------------------------------------</font>+<font color=Blue>-- * Token parsers</font>+<font color=Blue>-- ------------------------------------------------------------</font>++natural           <font color=Red>::</font> Parser Int+<a name="natural"></a>natural            <font color=Red>=</font> token nat++integer           <font color=Red>::</font> Parser Int+<a name="integer"></a>integer            <font color=Red>=</font> token int++symbol            <font color=Red>::</font> String <font color=Red>-&gt;</font> Parser String+<a name="symbol"></a>symbol xs          <font color=Red>=</font> token <font color=Cyan>(</font>string xs<font color=Cyan>)</font>++identifier        <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> Parser String+<a name="identifier"></a>identifier ks      <font color=Red>=</font> token <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> ident<font color=Cyan>;</font>+                                <font color=Green><u>if</u></font> not <font color=Cyan>(</font>elem x ks<font color=Cyan>)</font> <font color=Green><u>then</u></font> return x+                                <font color=Green><u>else</u></font> return mzero<font color=Cyan>}</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------------</font>+</pre>
+ docs/HaXml/src/Text/ParserCombinators/HuttonMeijerWallace.html view
@@ -0,0 +1,298 @@+<pre><font color=Cyan>{</font><font color=Blue>-----------------------------------------------------------------------------</font>++                 A LIBRARY OF MONADIC PARSER COMBINATORS++                              <font color=Magenta>29</font>th July <font color=Magenta>1996</font>++                 Graham Hutton               Erik Meijer+            University <font color=Green><u>of</u></font> Nottingham    University <font color=Green><u>of</u></font> Utrecht++This Haskell <font color=Magenta>1.3</font> script defines a library <font color=Green><u>of</u></font> parser combinators<font color=Cyan>,</font> and is taken+<a name="from"></a>from sections <font color=Magenta>1</font><font color=Blue>-</font><font color=Magenta>6</font> <font color=Green><u>of</u></font> our article <font color=Magenta>"Monadic Parser Combinators"</font><font color=Cyan>.</font>  Some changes+<a name="to"></a>to the library have been made <font color=Green><u>in</u></font> the move from Gofer to Haskell<font color=Red><b>:</b></font>++   <font color=Cyan>*</font> Do notation is used <font color=Green><u>in</u></font> place <font color=Green><u>of</u></font> monad comprehension notation<font color=Cyan>;</font>++   <font color=Cyan>*</font> The parser datatype is defined using <font color=Magenta>"newtype"</font><font color=Cyan>,</font> to avoid the overhead+     <font color=Green><u>of</u></font> tagging and untagging parsers with the P constructor<font color=Cyan>.</font>++<font color=Blue>------------------------------------------------------------------------------</font>+<font color=Cyan>**</font> Extended to allow a symbol table<font color=Cyan>/</font>state to be threaded through the monad<font color=Cyan>.</font>+<font color=Cyan>**</font> Extended to allow a parameterised token <font color=Green><u>type</u></font><font color=Cyan>,</font> rather than just strings<font color=Cyan>.</font>+<font color=Cyan>**</font> Extended to allow error<font color=Blue>-</font>reporting<font color=Cyan>.</font>++<font color=Cyan>(</font>Extensions<font color=Red><b>:</b></font> <font color=Magenta>1998</font><font color=Blue>-</font><font color=Magenta>2000</font> Malcolm<font color=Cyan>.</font>Wallace<font color=Red>@</font>cs<font color=Cyan>.</font>york<font color=Cyan>.</font>ac<font color=Cyan>.</font>uk<font color=Cyan>)</font>+<a name="------------------------------------------------------------------------------}"></a><font color=Cyan>(</font>More extensions<font color=Red><b>:</b></font> <font color=Magenta>2004</font> gk<font color=Blue>-</font>haskell<font color=Red>@</font>ninebynine<font color=Cyan>.</font>org<font color=Cyan>)</font>++<font color=Cyan>------------------------------------------------------------------------------}</font>++<font color=Blue>-- | This library of monadic parser combinators is based on the ones</font>+<font color=Blue>--   defined by Graham Hutton and Erik Meijer.  It has been extended by</font>+<font color=Blue>--   Malcolm Wallace to use an abstract token type (no longer just a</font>+<font color=Blue>--   string) as input, and to incorporate a State Transformer monad, useful</font>+<font color=Blue>--   for symbol tables, macros, and so on.  Basic facilities for error</font>+<font color=Blue>--   reporting have also been added, and later extended by Graham Klyne</font>+<font color=Blue>--   to return the errors through an @Either@ type, rather than just</font>+<font color=Blue>--   calling @error@.</font>++<font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>HuttonMeijerWallace+  <font color=Cyan>(</font>+  <font color=Blue>-- * The parser monad</font>+    Parser<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+  <font color=Blue>-- * Primitive parser combinators</font>+  <font color=Cyan>,</font> item<font color=Cyan>,</font> eof<font color=Cyan>,</font> papply<font color=Cyan>,</font> papply'+  <font color=Blue>-- * Derived combinators</font>+  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>+++</font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Blue>{-sat,-}</font> tok<font color=Cyan>,</font> nottok<font color=Cyan>,</font> many<font color=Cyan>,</font> many1+  <font color=Cyan>,</font> sepby<font color=Cyan>,</font> sepby1<font color=Cyan>,</font> chainl<font color=Cyan>,</font> chainl1<font color=Cyan>,</font> chainr<font color=Cyan>,</font> chainr1<font color=Cyan>,</font> ops<font color=Cyan>,</font> bracket+  <font color=Cyan>,</font> toEOF+  <font color=Blue>-- * Error handling</font>+  <font color=Cyan>,</font> elserror+  <font color=Blue>-- * State handling</font>+  <font color=Cyan>,</font> stupd<font color=Cyan>,</font> stquery<font color=Cyan>,</font> stget+  <font color=Blue>-- * Re-parsing</font>+  <font color=Cyan>,</font> reparse+  <font color=Cyan>)</font> <font color=Green><u>where</u></font>++<font color=Green><u>import</u></font> Char+<font color=Green><u>import</u></font> Monad++<font color=Green><u>infixr</u></font> <font color=Magenta>5</font> <font color=Cyan>+++</font>++<font color=Blue>--- The parser monad ---------------------------------------------------------</font>++<a name="ParseResult"></a><font color=Green><u>type</u></font> ParseResult s t e a <font color=Red>=</font> Either e <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>s<font color=Cyan>,</font><font color=Red>[</font>Either e t<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>++<font color=Green><u>newtype</u></font> Parser s t e a   <font color=Red>=</font> P <font color=Cyan>(</font> s <font color=Red>-&gt;</font> <font color=Red>[</font>Either e t<font color=Red>]</font> <font color=Red>-&gt;</font> ParseResult s t e a <font color=Cyan>)</font>+    <font color=Blue>-- ^ The parser type is parametrised on the types of the state @s@,</font>+    <font color=Blue>--   the input tokens @t@, error-type @e@, and the result value @a@.</font>+    <font color=Blue>--   The state and remaining input are threaded through the monad.</font>++<font color=Green><u>instance</u></font> Functor <font color=Cyan>(</font>Parser s t e<font color=Cyan>)</font> <font color=Green><u>where</u></font>+   <font color=Blue>-- fmap        :: (a -&gt; b) -&gt; (Parser s t e a -&gt; Parser s t e b)</font>+   fmap f <font color=Cyan>(</font>P p<font color=Cyan>)</font>    <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p st inp <font color=Green><u>of</u></font>+                        Right res <font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Cyan>(</font>f v<font color=Cyan>,</font> s<font color=Cyan>,</font> out<font color=Cyan>)</font> <font color=Red>|</font> <font color=Cyan>(</font>v<font color=Cyan>,</font>s<font color=Cyan>,</font>out<font color=Cyan>)</font> <font color=Red>&lt;-</font> res<font color=Red>]</font>+                        Left err  <font color=Red>-&gt;</font> Left err+                       <font color=Cyan>)</font>++<font color=Green><u>instance</u></font> Monad <font color=Cyan>(</font>Parser s t e<font color=Cyan>)</font> <font color=Green><u>where</u></font>+   <font color=Blue>-- return      :: a -&gt; Parser s t e a</font>+   return v        <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Cyan>(</font>v<font color=Cyan>,</font>st<font color=Cyan>,</font>inp<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+   <font color=Blue>-- &gt;&gt;=         :: Parser s t e a -&gt; (a -&gt; Parser s t e b) -&gt; Parser s t e b</font>+   <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> f     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p st inp <font color=Green><u>of</u></font>+                        Right res <font color=Red>-&gt;</font> foldr joinresults <font color=Cyan>(</font>Right <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+                            <font color=Red>[</font> papply' <font color=Cyan>(</font>f v<font color=Cyan>)</font> s out <font color=Red>|</font> <font color=Cyan>(</font>v<font color=Cyan>,</font>s<font color=Cyan>,</font>out<font color=Cyan>)</font> <font color=Red>&lt;-</font> res <font color=Red>]</font>+                        Left err  <font color=Red>-&gt;</font> Left err+                       <font color=Cyan>)</font>+   <font color=Blue>-- fail        :: String -&gt; Parser s t e a</font>+   fail err        <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+  <font color=Blue>-- I know it's counterintuitive, but we want no-parse, not an error.</font>++<font color=Green><u>instance</u></font> MonadPlus <font color=Cyan>(</font>Parser s t e<font color=Cyan>)</font> <font color=Green><u>where</u></font>+   <font color=Blue>-- mzero       :: Parser s t e a</font>+   mzero           <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+   <font color=Blue>-- mplus       :: Parser s t e a -&gt; Parser s t e a -&gt; Parser s t e a</font>+   <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`mplus`</font> <font color=Cyan>(</font>P q<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> joinresults <font color=Cyan>(</font>p st inp<font color=Cyan>)</font> <font color=Cyan>(</font>q st inp<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- joinresults ensures that explicitly raised errors are dominant,</font>+<font color=Blue>-- provided no parse has yet been found.  The commented out code is</font>+<font color=Blue>-- a slightly stricter specification of the real code.</font>+joinresults <font color=Red>::</font> ParseResult s t e a <font color=Red>-&gt;</font> ParseResult s t e a <font color=Red>-&gt;</font> ParseResult s t e a+<font color=Blue>{-+joinresults (Left  p)  (Left  q)  = Left  p+joinresults (Left  p)  (Right _)  = Left  p+joinresults (Right []) (Left  q)  = Left  q+joinresults (Right p)  (Left  q)  = Right p+joinresults (Right p)  (Right q)  = Right (p++q)+-}</font>+<a name="joinresults"></a>joinresults <font color=Cyan>(</font>Left  p<font color=Cyan>)</font>  q  <font color=Red>=</font> Left p+joinresults <font color=Cyan>(</font>Right <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font> q  <font color=Red>=</font> q+joinresults <font color=Cyan>(</font>Right p<font color=Cyan>)</font>  q  <font color=Red>=</font> Right <font color=Cyan>(</font>p<font color=Cyan>++</font> <font color=Green><u>case</u></font> q <font color=Green><u>of</u></font> Left <font color=Green><u>_</u></font>  <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Red>]</font>+                                                 Right r <font color=Red>-&gt;</font> r<font color=Cyan>)</font>+++<font color=Blue>--- Primitive parser combinators ---------------------------------------------</font>++<font color=Blue>-- | Deliver the first remaining token.</font>+item              <font color=Red>::</font> Parser s t e t+<a name="item"></a>item               <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> inp <font color=Green><u>of</u></font>+                        <font color=Red>[</font><font color=Red>]</font>            <font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Red>]</font>+                        <font color=Cyan>(</font>Left e<font color=Red><b>:</b></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>   <font color=Red>-&gt;</font> Left e+                        <font color=Cyan>(</font>Right x<font color=Red><b>:</b></font> xs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Cyan>(</font>x<font color=Cyan>,</font>st<font color=Cyan>,</font>xs<font color=Cyan>)</font><font color=Red>]</font>+                       <font color=Cyan>)</font>++<font color=Blue>-- | Fail if end of input is not reached</font>+eof               <font color=Red>::</font> Show p <font color=Red>=&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> String <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="eof"></a>eof                <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> inp <font color=Green><u>of</u></font>+                        <font color=Red>[</font><font color=Red>]</font>         <font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font>st<font color=Cyan>,</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+                        <font color=Cyan>(</font>Left e<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Left e+                        <font color=Cyan>(</font>Right <font color=Cyan>(</font>p<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Left <font color=Cyan>(</font><font color=Magenta>"End of input expected at "</font>+                                                 <font color=Cyan>++</font>show p<font color=Cyan>++</font><font color=Magenta>"\n  but found text"</font><font color=Cyan>)</font>+                       <font color=Cyan>)</font>++<font color=Blue>{-+-- | Ensure the value delivered by the parser is evaluated to WHNF.+force             :: Parser s t e a -&gt; Parser s t e a+force (P p)        = P (\st inp -&gt; let Right xs = p st inp+                                       h = head xs in+                                   h `seq` Right (h: tail xs)+                       )+--  [[[GK]]]  ^^^^^^+--  WHNF = Weak Head Normal Form, meaning that it has no top-level redex.+--  In this case, I think that means that the first element of the list+--  is fully evaluated.+--+--  NOTE:  the original form of this function fails if there is no parse+--  result for p st inp (head xs fails if xs is null), so the modified+--  form can assume a Right value only.+--+--  Why is this needed?+--  It's not exported, and the only use of this I see is commented out.+---------------------------------------+-}</font>+++<font color=Blue>-- | Deliver the first parse result only, eliminating any backtracking.</font>+first             <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e a+<a name="first"></a>first <font color=Cyan>(</font>P p<font color=Cyan>)</font>        <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p st inp <font color=Green><u>of</u></font>+                                   Right <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Right <font color=Red>[</font>x<font color=Red>]</font>+                                   otherwise    <font color=Red>-&gt;</font> otherwise+                       <font color=Cyan>)</font>++<font color=Blue>-- | Apply the parser to some real input, given an initial state value.</font>+<font color=Blue>--   If the parser fails, raise 'error' to halt the program.</font>+<font color=Blue>--   (This is the original exported behaviour - to allow the caller to</font>+<font color=Blue>--   deal with the error differently, see @papply'@.)</font>+papply            <font color=Red>::</font> Parser s t String a <font color=Red>-&gt;</font> s <font color=Red>-&gt;</font> <font color=Red>[</font>Either String t<font color=Red>]</font>+                                              <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>s<font color=Cyan>,</font><font color=Red>[</font>Either String t<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="papply"></a>papply <font color=Cyan>(</font>P p<font color=Cyan>)</font> st inp <font color=Red>=</font> either error id <font color=Cyan>(</font>p st inp<font color=Cyan>)</font>++<font color=Blue>-- | Apply the parser to some real input, given an initial state value.</font>+<font color=Blue>--   If the parser fails, return a diagnostic message to the caller.</font>+papply'           <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> s <font color=Red>-&gt;</font> <font color=Red>[</font>Either e t<font color=Red>]</font>+                                         <font color=Red>-&gt;</font> Either e <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>s<font color=Cyan>,</font><font color=Red>[</font>Either e t<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="papply'"></a>papply' <font color=Cyan>(</font>P p<font color=Cyan>)</font> st inp <font color=Red>=</font> p st inp++<font color=Blue>--- Derived combinators ------------------------------------------------------</font>++<font color=Blue>-- | A choice between parsers.  Keep only the first success.</font>+<a name="+++"></a><font color=Cyan>(</font><font color=Cyan>+++</font><font color=Cyan>)</font>             <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e a+<a name="p"></a>p <font color=Cyan>+++</font> q            <font color=Red>=</font> first <font color=Cyan>(</font>p <font color=Cyan>`mplus`</font> q<font color=Cyan>)</font>++<font color=Blue>-- | Deliver the first token if it satisfies a predicate.</font>+sat               <font color=Red>::</font> <font color=Cyan>(</font>t <font color=Red>-&gt;</font> Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> e t+<a name="sat"></a>sat p              <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>x<font color=Cyan>)</font> <font color=Red>&lt;-</font> item<font color=Cyan>;</font> <font color=Green><u>if</u></font> p x <font color=Green><u>then</u></font> return x <font color=Green><u>else</u></font> mzero<font color=Cyan>}</font>++<font color=Blue>-- | Deliver the first token if it equals the argument.</font>+tok               <font color=Red>::</font> Eq t <font color=Red>=&gt;</font> t <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> e t+<a name="tok"></a>tok t              <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>x<font color=Cyan>)</font> <font color=Red>&lt;-</font> item<font color=Cyan>;</font> <font color=Green><u>if</u></font> x<font color=Cyan>==</font>t <font color=Green><u>then</u></font> return t <font color=Green><u>else</u></font> mzero<font color=Cyan>}</font>++<font color=Blue>-- | Deliver the first token if it does not equal the argument.</font>+nottok            <font color=Red>::</font> Eq t <font color=Red>=&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> e t+<a name="nottok"></a>nottok ts          <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>x<font color=Cyan>)</font> <font color=Red>&lt;-</font> item<font color=Cyan>;</font> <font color=Green><u>if</u></font> x <font color=Cyan>`notElem`</font> ts <font color=Green><u>then</u></font> return x+                                        <font color=Green><u>else</u></font> mzero<font color=Cyan>}</font>++<font color=Blue>-- | Deliver zero or more values of @a@.</font>+many              <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e <font color=Red>[</font>a<font color=Red>]</font>+<a name="many"></a>many p             <font color=Red>=</font> many1 p <font color=Cyan>+++</font> return <font color=Red>[</font><font color=Red>]</font>+<font color=Blue>--many p           = force (many1 p +++ return [])</font>++<font color=Blue>-- | Deliver one or more values of @a@.</font>+many1             <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e <font color=Red>[</font>a<font color=Red>]</font>+<a name="many1"></a>many1 p            <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many p<font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>}</font>++<font color=Blue>-- | Deliver zero or more values of @a@ separated by @b@'s.</font>+sepby             <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e b <font color=Red>-&gt;</font> Parser s t e <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepby"></a>p <font color=Cyan>`sepby`</font> sep      <font color=Red>=</font> <font color=Cyan>(</font>p <font color=Cyan>`sepby1`</font> sep<font color=Cyan>)</font> <font color=Cyan>+++</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Deliver one or more values of @a@ separated by @b@'s.</font>+sepby1            <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e b <font color=Red>-&gt;</font> Parser s t e <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepby1"></a>p <font color=Cyan>`sepby1`</font> sep     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font><font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>}</font>++chainl            <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e <font color=Cyan>(</font>a<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a+                                                              <font color=Red>-&gt;</font> Parser s t e a+<a name="chainl"></a>chainl p op v      <font color=Red>=</font> <font color=Cyan>(</font>p <font color=Cyan>`chainl1`</font> op<font color=Cyan>)</font> <font color=Cyan>+++</font> return v++chainl1           <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e <font color=Cyan>(</font>a<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t e a+<a name="chainl1"></a>p <font color=Cyan>`chainl1`</font> op     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> rest x<font color=Cyan>}</font>+                     <font color=Green><u>where</u></font>+                        rest x <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>f <font color=Red>&lt;-</font> op<font color=Cyan>;</font> y <font color=Red>&lt;-</font> p<font color=Cyan>;</font> rest <font color=Cyan>(</font>f x y<font color=Cyan>)</font><font color=Cyan>}</font>+                                 <font color=Cyan>+++</font> return x++chainr            <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e <font color=Cyan>(</font>a<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a+                                                              <font color=Red>-&gt;</font> Parser s t e a+<a name="chainr"></a>chainr p op v      <font color=Red>=</font> <font color=Cyan>(</font>p <font color=Cyan>`chainr1`</font> op<font color=Cyan>)</font> <font color=Cyan>+++</font> return v++chainr1           <font color=Red>::</font> Parser s t e a <font color=Red>-&gt;</font> Parser s t e <font color=Cyan>(</font>a<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t e a+<a name="chainr1"></a>p <font color=Cyan>`chainr1`</font> op     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font>x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> rest x<font color=Cyan>}</font>+                     <font color=Green><u>where</u></font>+                        rest x <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> f <font color=Red>&lt;-</font> op+                                    <font color=Cyan>;</font> y <font color=Red>&lt;-</font> p <font color=Cyan>`chainr1`</font> op+                                    <font color=Cyan>;</font> return <font color=Cyan>(</font>f x y<font color=Cyan>)</font>+                                    <font color=Cyan>}</font>+                                 <font color=Cyan>+++</font> return x++ops               <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>Parser s t e a<font color=Cyan>,</font> b<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t e b+<a name="ops"></a>ops xs             <font color=Red>=</font> foldr1 <font color=Cyan>(</font><font color=Cyan>+++</font><font color=Cyan>)</font> <font color=Red>[</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>p<font color=Cyan>;</font> return op<font color=Cyan>}</font> <font color=Red>|</font> <font color=Cyan>(</font>p<font color=Cyan>,</font>op<font color=Cyan>)</font> <font color=Red>&lt;-</font> xs<font color=Red>]</font>++bracket           <font color=Red>::</font> <font color=Cyan>(</font>Show p<font color=Cyan>,</font>Show t<font color=Cyan>)</font> <font color=Red>=&gt;</font>+                     Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> e a <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> e b <font color=Red>-&gt;</font>+                               Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> e c <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> e b+<a name="bracket"></a>bracket open p close <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> open+                          <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p+                          <font color=Cyan>;</font> close <font color=Blue>-- `elserror` "improperly matched construct";</font>+                          <font color=Cyan>;</font> return x+                          <font color=Cyan>}</font>++<font color=Blue>-- | Accept a complete parse of the input only, no partial parses.</font>+toEOF             <font color=Red>::</font> Show p <font color=Red>=&gt;</font>+                     Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> String a <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> String a+<a name="toEOF"></a>toEOF p            <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p<font color=Cyan>;</font> eof<font color=Cyan>;</font> return x <font color=Cyan>}</font>+++<font color=Blue>--- Error handling -----------------------------------------------------------</font>++<font color=Blue>-- | Return an error using the supplied diagnostic string, and a token type</font>+<font color=Blue>--   which includes position information.</font>+parseerror <font color=Red>::</font> <font color=Cyan>(</font>Show p<font color=Cyan>,</font>Show t<font color=Cyan>)</font> <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> String a+<a name="parseerror"></a>parseerror err <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp <font color=Red>-&gt;</font>+                         <font color=Green><u>case</u></font> inp <font color=Green><u>of</u></font>+                           <font color=Red>[</font><font color=Red>]</font> <font color=Red>-&gt;</font> Left <font color=Magenta>"Parse error: unexpected EOF\n"</font>+                           <font color=Cyan>(</font>Left e<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Left <font color=Cyan>(</font><font color=Magenta>"Lexical error:  "</font><font color=Cyan>++</font>e<font color=Cyan>)</font>+                           <font color=Cyan>(</font>Right <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font><font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font>+                                 Left <font color=Cyan>(</font><font color=Magenta>"Parse error: in  "</font><font color=Cyan>++</font>show p<font color=Cyan>++</font><font color=Magenta>"\n    "</font>+                                       <font color=Cyan>++</font>err<font color=Cyan>++</font><font color=Magenta>"\n  "</font><font color=Cyan>++</font><font color=Magenta>"Found "</font><font color=Cyan>++</font>show t<font color=Cyan>)</font>+                   <font color=Cyan>)</font>+++<font color=Blue>-- | If the parser fails, generate an error message.</font>+elserror          <font color=Red>::</font> <font color=Cyan>(</font>Show p<font color=Cyan>,</font>Show t<font color=Cyan>)</font> <font color=Red>=&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> String a <font color=Red>-&gt;</font> String+                                        <font color=Red>-&gt;</font> Parser s <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> String a+<a name="elserror"></a>p <font color=Cyan>`elserror`</font> s     <font color=Red>=</font> p <font color=Cyan>+++</font> parseerror s++<font color=Blue>--- State handling -----------------------------------------------------------</font>++<font color=Blue>-- | Update the internal state.</font>+stupd      <font color=Red>::</font> <font color=Cyan>(</font>s<font color=Red>-&gt;</font>s<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t e <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="stupd"></a>stupd f     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp<font color=Red>-&gt;</font> <font color=Blue>{-let newst = f st in newst `seq`-}</font>+                           Right <font color=Red>[</font><font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> f st<font color=Cyan>,</font> inp<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>++<font color=Blue>-- | Query the internal state.</font>+stquery    <font color=Red>::</font> <font color=Cyan>(</font>s<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t e a+<a name="stquery"></a>stquery f   <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp<font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Cyan>(</font>f st<font color=Cyan>,</font> st<font color=Cyan>,</font> inp<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>++<font color=Blue>-- | Deliver the entire internal state.</font>+stget      <font color=Red>::</font> Parser s t e s+<a name="stget"></a>stget       <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp<font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Cyan>(</font>st<font color=Cyan>,</font> st<font color=Cyan>,</font> inp<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+++<font color=Blue>--- Push some tokens back onto the input stream and reparse ------------------</font>++<font color=Blue>-- | This is useful for recursively expanding macros.  When the</font>+<font color=Blue>--   user-parser recognises a macro use, it can lookup the macro</font>+<font color=Blue>--   expansion from the parse state, lex it, and then stuff the</font>+<font color=Blue>--   lexed expansion back down into the parser.</font>+reparse    <font color=Red>::</font> <font color=Red>[</font>Either e t<font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t e <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="reparse"></a>reparse ts  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>st inp<font color=Red>-&gt;</font> Right <font color=Red>[</font><font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> st<font color=Cyan>,</font> ts<font color=Cyan>++</font>inp<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------------</font>+</pre>
+ docs/HaXml/src/Text/ParserCombinators/Poly.html view
@@ -0,0 +1,238 @@+<pre><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+  <font color=Cyan>(</font> <font color=Blue>-- * A Parser datatype parameterised on arbitrary token type</font>+    Parser<font color=Cyan>(</font>P<font color=Cyan>)</font>	<font color=Blue>-- datatype, instance of: Functor, Monad</font>+  <font color=Cyan>,</font> runParser	<font color=Blue>-- :: Parser t a -&gt; [t] -&gt; (Either String a, [t])</font>+  <font color=Cyan>,</font> failBad     <font color=Blue>-- :: String -&gt; Parser t a</font>+  <font color=Cyan>,</font> commit      <font color=Blue>-- :: Parser t a -&gt; Parser t a</font>+    <font color=Blue>-- * Combinators</font>+    <font color=Blue>-- ** primitives</font>+  <font color=Cyan>,</font> next	<font color=Blue>-- :: Parser t t</font>+  <font color=Cyan>,</font> satisfy	<font color=Blue>-- :: (t-&gt;Bool) -&gt; Parser t t</font>+  <font color=Cyan>,</font> apply	<font color=Blue>-- :: Parser t (a-&gt;b) -&gt; Parser t a -&gt; Parser t b</font>+  <font color=Cyan>,</font> discard	<font color=Blue>-- :: Parser t a -&gt; Parser t b -&gt; Parser t a</font>+    <font color=Blue>-- ** error-handling</font>+  <font color=Cyan>,</font> adjustErr	<font color=Blue>-- :: Parser t a -&gt; (String-&gt;String) -&gt; Parser t a</font>+  <font color=Cyan>,</font> adjustErrBad<font color=Blue>-- :: Parser t a -&gt; (String-&gt;String) -&gt; Parser t a</font>+  <font color=Cyan>,</font> indent	<font color=Blue>-- :: Int -&gt; String -&gt; String</font>+    <font color=Blue>-- ** choices</font>+  <font color=Cyan>,</font> onFail	<font color=Blue>-- :: Parser t a -&gt; Parser t a -&gt; Parser t a</font>+  <font color=Cyan>,</font> oneOf	<font color=Blue>-- :: Show t =&gt; [Parser t a] -&gt; Parser t a</font>+  <font color=Cyan>,</font> oneOf'	<font color=Blue>-- :: [(String,Parser t a)] -&gt; Parser t a</font>+  <font color=Cyan>,</font> optional	<font color=Blue>-- :: Parser t a -&gt; Parser t (Maybe a)</font>+    <font color=Blue>-- ** sequences</font>+  <font color=Cyan>,</font> many	<font color=Blue>-- :: Parser t a -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> many1	<font color=Blue>-- :: Parser t a -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> sepBy	<font color=Blue>-- :: Parser t a -&gt; Parser t sep -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> sepBy1	<font color=Blue>-- :: Parser t a -&gt; Parser t sep -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> bracketSep	<font color=Blue>-- :: Parser t bra -&gt; Parser t sep -&gt; Parser t ket</font>+                <font color=Blue>--    -&gt; Parser t a -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> bracket	<font color=Blue>-- :: Parser t bra -&gt; Parser t ket -&gt; Parser t a</font>+                <font color=Blue>--    -&gt; Parser t a</font>+  <font color=Cyan>,</font> manyFinally <font color=Blue>-- :: Parser t a -&gt; Parser t z -&gt; Parser t [a]</font>+    <font color=Blue>-- ** re-parsing</font>+  <font color=Cyan>,</font> reparse	<font color=Blue>-- :: [t] -&gt; Parser t ()</font>+  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+++<font color=Blue>-- | The @Parser@ datatype is a fairly generic parsing monad with error</font>+<font color=Blue>--   reporting.  It can be used for arbitrary token types, not just</font>+<font color=Blue>--   String input.  (If you require a running state, use module PolyState</font>+<font color=Blue>--   instead)</font>+<font color=Green><u>newtype</u></font> Parser t a <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>EitherE String a<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>--   A return type like Either, that distinguishes not only between</font>+<font color=Blue>--   right and wrong answers, but also had gradations of wrongness.</font>+<a name="EitherE"></a><font color=Green><u>type</u></font> EitherE a b <font color=Red>=</font> Either <font color=Cyan>(</font>Bool<font color=Cyan>,</font>a<font color=Cyan>)</font> b++<font color=Blue>-- | Apply a parser to an input token sequence.</font>+runParser <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Either String a<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font>+<a name="runParser"></a>runParser <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font>+    <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>e<font color=Cyan>,</font>ts<font color=Cyan>)</font><font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>{</font>Left <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>m<font color=Cyan>)</font><font color=Red>-&gt;</font>Left m<font color=Cyan>;</font> Right m<font color=Red>-&gt;</font>Right m<font color=Cyan>}</font><font color=Cyan>,</font> ts<font color=Cyan>)</font> <font color=Cyan>)</font>+    <font color=Cyan>.</font> p++<font color=Green><u>instance</u></font> Functor <font color=Cyan>(</font>Parser t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    fmap f <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font>    ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f x<font color=Cyan>)</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font><font color=Cyan>)</font>+<font color=Green><u>instance</u></font> Monad <font color=Cyan>(</font>Parser t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    return x     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>+    <font color=Cyan>(</font>P f<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> g  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> f ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P g'<font color=Cyan>)</font> <font color=Red>=</font> g x <font color=Green><u>in</u></font> g' ts'<font color=Cyan>)</font>+    fail e       <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | When a simple fail is not strong enough, use failBad for emphasis.</font>+<font color=Blue>--   An emphasised (severe) error can propagate out through choice operators.</font>+failBad <font color=Red>::</font> String <font color=Red>-&gt;</font> Parser t a+<a name="failBad"></a>failBad msg      <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>True<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Commit is a way of raising the severity of any errors found within</font>+<font color=Blue>--   its argument.  Used in the middle of a parser definition, it means that</font>+<font color=Blue>--   any operations prior to commitment fail softly, but after commitment,</font>+<font color=Blue>--   they fail hard.</font>+commit <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t a+<a name="commit"></a>commit <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                            <font color=Cyan>(</font>Left <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>True<font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                            right             <font color=Red>-&gt;</font> right <font color=Cyan>)</font>+++<font color=Blue>-- Combinators</font>++<font color=Blue>-- | One token</font>+next <font color=Red>::</font> Parser t t+<a name="next"></a>next <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> ts <font color=Green><u>of</u></font>+                    <font color=Red>[</font><font color=Red>]</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"Ran out of input (EOF)"</font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+                    <font color=Cyan>(</font>t<font color=Red><b>:</b></font>ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right t<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Blue>-- | One token satifying a predicate</font>+satisfy <font color=Red>::</font> <font color=Cyan>(</font>t<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t t+<a name="satisfy"></a>satisfy p <font color=Red>=</font> <font color=Green><u>do</u></font><font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+              <font color=Cyan>;</font> <font color=Green><u>if</u></font> p x <font color=Green><u>then</u></font> return x <font color=Green><u>else</u></font> fail <font color=Magenta>"Parse.satisfy: failed"</font>+              <font color=Cyan>}</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`apply`</font>+<font color=Blue>-- | Apply a parsed function to a parsed value</font>+apply <font color=Red>::</font> Parser t <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t b+<a name="apply"></a>pf <font color=Cyan>`apply`</font> px <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> f <font color=Red>&lt;-</font> pf<font color=Cyan>;</font> x <font color=Red>&lt;-</font> px<font color=Cyan>;</font> return <font color=Cyan>(</font>f x<font color=Cyan>)</font> <font color=Cyan>}</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`discard`</font>+<font color=Blue>-- | @x `discard` y@ parses both x and y, but discards the result of y</font>+discard <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t b <font color=Red>-&gt;</font> Parser t a+<a name="discard"></a>px <font color=Cyan>`discard`</font> py <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> px<font color=Cyan>;</font> <font color=Green><u>_</u></font> <font color=Red>&lt;-</font> py<font color=Cyan>;</font> return x <font color=Cyan>}</font>++<font color=Blue>-- | @p `adjustErr` f@ applies the transformation @f@ to any error message</font>+<font color=Blue>--   generated in @p@, having no effect if @p@ succeeds.</font>+adjustErr <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t a+<a name="adjustErr"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> f <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                                 <font color=Cyan>(</font>Left <font color=Cyan>(</font>b<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>b<font color=Cyan>,</font><font color=Cyan>(</font>f msg<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                 right               <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | @adjustErrBad@ is just like @adjustErr@ except it also raises the</font>+<font color=Blue>--   severity of the error.</font>+adjustErrBad <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t a+<a name="adjustErrBad"></a>p <font color=Cyan>`adjustErrBad`</font> f <font color=Red>=</font> commit <font color=Cyan>(</font>p <font color=Cyan>`adjustErr`</font> f<font color=Cyan>)</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan>`onFail`</font>	<font color=Blue>-- not sure about precedence 6?</font>+<font color=Blue>-- | @p `onFail` q@ means parse p unless p fails in which case parse q instead.</font>+<font color=Blue>--   Can be chained together to give multiple attempts to parse something.</font>+<font color=Blue>--   (Note that q could itself be a failing parser, e.g. to change the error</font>+<font color=Blue>--   message from that defined in p to something different.)</font>+<font color=Blue>--   However, a *severe* failure in p cannot be ignored.</font>+onFail <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t a+<a name="onFail"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> <font color=Cyan>(</font>P q<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                                    r<font color=Red>@</font><font color=Cyan>(</font>Left <font color=Cyan>(</font>True<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> r+                                    <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> q ts+                                    right       <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | Parse the first alternative in the list that succeeds.</font>+oneOf <font color=Red>::</font> <font color=Red>[</font>Parser t a<font color=Red>]</font> <font color=Red>-&gt;</font> Parser t a+<a name="oneOf"></a>oneOf <font color=Red>[</font><font color=Red>]</font>     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> n <font color=Red>&lt;-</font> next+                  <font color=Cyan>;</font> fail <font color=Cyan>(</font><font color=Magenta>"failed to parse any of the possible choices"</font><font color=Cyan>)</font>+                  <font color=Cyan>}</font>+<font color=Blue>--oneOf :: Show t =&gt; [Parser t a] -&gt; Parser t a</font>+<font color=Blue>--oneOf []     = do { n &lt;- next</font>+<font color=Blue>--                  ; fail ("failed to parse any of the possible choices"</font>+<font color=Blue>--                         ++"\n  next token is "++show n)</font>+<font color=Blue>--                  }</font>+oneOf <font color=Cyan>(</font>p<font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font> p <font color=Cyan>`onFail`</font> oneOf ps++<font color=Blue>-- | Parse the first alternative that succeeds, but if none succeed,</font>+<font color=Blue>--   report only the severe errors, and if none of those, then report</font>+<font color=Blue>--   all the soft errors.</font>+oneOf' <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font> Parser t a<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Parser t a+<a name="oneOf'"></a>oneOf' <font color=Red>=</font> accum <font color=Red>[</font><font color=Red>]</font>+    <font color=Green><u>where</u></font> accum errs <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font>+              <font color=Green><u>case</u></font> filter isBad errs <font color=Green><u>of</u></font>+                <font color=Red>[</font><font color=Red>]</font> <font color=Red>-&gt;</font>  fail <font color=Cyan>(</font><font color=Magenta>"failed to parse any of the possible choices:\n"</font>+                            <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>concatMap showErr <font color=Cyan>(</font>reverse errs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+                <font color=Red>[</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> failBad e+                es <font color=Red>-&gt;</font> failBad <font color=Cyan>(</font><font color=Magenta>"one of the following failures occurred:\n"</font>+                              <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>concatMap showErr <font color=Cyan>(</font>reverse es<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+          accum errs <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>P p<font color=Cyan>)</font><font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font>+              P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                         <font color=Cyan>(</font>Left err<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> accum <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Red><b>:</b></font>errs<font color=Cyan>)</font> ps+                                         <font color=Green><u>in</u></font> p ts+                         right        <font color=Red>-&gt;</font> right <font color=Cyan>)</font>+          showErr <font color=Cyan>(</font>name<font color=Cyan>,</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> name<font color=Cyan>++</font><font color=Magenta>":\n"</font><font color=Cyan>++</font>indent <font color=Magenta>2</font> err+          isBad <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Cyan>(</font>b<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> b++<font color=Blue>-- | Helper for formatting error messages: indents all lines by a fixed amount.</font>+indent <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="indent"></a>indent n <font color=Red>=</font> unlines <font color=Cyan>.</font> map <font color=Cyan>(</font>replicate n <font color=Magenta>' '</font> <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> lines++<font color=Blue>-- | 'optional' indicates whether the parser succeeded through the Maybe type.</font>+optional <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font>+<a name="optional"></a>optional p <font color=Red>=</font> fmap Just p <font color=Cyan>`onFail`</font> return Nothing++<font color=Blue>-- | 'many p' parses a list of elements with individual parser p.</font>+<font color=Blue>--   Cannot fail, since an empty list is a valid return value.</font>+many <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many"></a>many p <font color=Red>=</font> many1 p <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items.</font>+many1 <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many1"></a>many1 p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"In a sequence:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font><font color=Cyan>.</font> indent <font color=Magenta>2</font><font color=Cyan>)</font>+             <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many p+             <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+             <font color=Cyan>}</font>+<font color=Blue>--       `adjustErr` ("When looking for a non-empty sequence:\n\t"++)</font>++<font color=Blue>-- | Parse a list of items separated by discarded junk.</font>+sepBy <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t sep <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy"></a>sepBy p sep <font color=Red>=</font> <font color=Green><u>do</u></font> sepBy1 p sep <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items separated by discarded junk.</font>+sepBy1 <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t sep <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy1"></a>sepBy1 p sep <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p+                  <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+                  <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+                  <font color=Cyan>}</font>+         <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for a non-empty sequence with separators:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+ +<font color=Blue>-- | Parse a list of items, discarding the start, end, and separator</font>+<font color=Blue>--   items.</font>+bracketSep <font color=Red>::</font> Parser t bra <font color=Red>-&gt;</font> Parser t sep <font color=Red>-&gt;</font> Parser t ket+              <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="bracketSep"></a>bracketSep open sep close p <font color=Red>=</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open<font color=Cyan>;</font> close<font color=Cyan>;</font> return <font color=Red>[</font><font color=Red>]</font> <font color=Cyan>}</font>+       <font color=Cyan>`onFail`</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p  <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"After first bracket in a group:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for closing bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+       <font color=Cyan>}</font>++<font color=Blue>-- | Parse a bracketed item, discarding the brackets.</font>+bracket <font color=Red>::</font> Parser t bra <font color=Red>-&gt;</font> Parser t ket <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t a+<a name="bracket"></a>bracket open close p <font color=Red>=</font> <font color=Green><u>do</u></font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"Missing closing bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return x+       <font color=Cyan>}</font>++<font color=Blue>-- | 'manyFinally e t' parses a possibly-empty sequence of e's,</font>+<font color=Blue>--   terminated by a t.  Any parse failures could be due either to</font>+<font color=Blue>--   a badly-formed terminator or a badly-formed element, so raise</font>+<font color=Blue>--   both possible errors.</font>+manyFinally <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t z <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="manyFinally"></a>manyFinally p t <font color=Red>=</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> xs <font color=Red>&lt;-</font> many p+       <font color=Cyan>;</font> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"sequence terminator"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> t<font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>)</font> <font color=Cyan>}</font> <font color=Cyan>)</font>+                <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"item in a sequence"</font><font color=Cyan>,</font>  <font color=Green><u>do</u></font> <font color=Cyan>{</font> p<font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>)</font> <font color=Cyan>}</font> <font color=Cyan>)</font>+                <font color=Red>]</font>+       <font color=Cyan>;</font> return xs+       <font color=Cyan>}</font>++<font color=Blue>------------------------------------------------------------------------</font>+<font color=Blue>-- | Push some tokens back onto the front of the input stream and reparse.</font>+<font color=Blue>--   This is useful e.g. for recursively expanding macros.  When the</font>+<font color=Blue>--   user-parser recognises a macro use, it can lookup the macro</font>+<font color=Blue>--   expansion from the parse state, lex it, and then stuff the</font>+<font color=Blue>--   lexed expansion back down into the parser.</font>+reparse    <font color=Red>::</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> Parser t <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="reparse"></a>reparse ts  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> ts<font color=Cyan>++</font>inp<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+</pre>
+ docs/HaXml/src/Text/ParserCombinators/PolyLazy.html view
@@ -0,0 +1,261 @@+<pre><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>PolyLazy+  <font color=Cyan>(</font> <font color=Blue>-- * A Parser datatype parameterised on arbitrary token type.</font>+    <font color=Blue>--   Parsers do not return explicit failure.  An exception is</font>+    <font color=Blue>--   raised instead.  This allows partial results to be returned</font>+    <font color=Blue>--   before a full parse is complete.</font>+    Parser<font color=Cyan>(</font>P<font color=Cyan>)</font>	<font color=Blue>-- datatype, instance of: Functor, Monad</font>+  <font color=Cyan>,</font> runParser	<font color=Blue>-- :: Parser t a -&gt; [t] -&gt; (a, [t])</font>+  <font color=Cyan>,</font> failBad     <font color=Blue>-- :: String -&gt; Parser t a</font>+  <font color=Cyan>,</font> commit      <font color=Blue>-- :: Parser t a -&gt; Parser t a</font>+    <font color=Blue>-- * Combinators</font>+    <font color=Blue>-- ** primitives</font>+  <font color=Cyan>,</font> next	<font color=Blue>-- :: Parser t t</font>+  <font color=Cyan>,</font> satisfy	<font color=Blue>-- :: (t-&gt;Bool) -&gt; Parser t t</font>+  <font color=Cyan>,</font> apply	<font color=Blue>-- :: Parser t (a-&gt;b) -&gt; Parser t a -&gt; Parser t b</font>+  <font color=Cyan>,</font> discard	<font color=Blue>-- :: Parser t a -&gt; Parser t b -&gt; Parser t a</font>+    <font color=Blue>-- ** error-handling</font>+  <font color=Cyan>,</font> adjustErr	<font color=Blue>-- :: Parser t a -&gt; (String-&gt;String) -&gt; Parser t a</font>+  <font color=Cyan>,</font> adjustErrBad<font color=Blue>-- :: Parser t a -&gt; (String-&gt;String) -&gt; Parser t a</font>+  <font color=Cyan>,</font> indent	<font color=Blue>-- :: Int -&gt; String -&gt; String</font>+    <font color=Blue>-- ** choices</font>+  <font color=Cyan>,</font> onFail	<font color=Blue>-- :: Parser t a -&gt; Parser t a -&gt; Parser t a</font>+  <font color=Cyan>,</font> oneOf	<font color=Blue>-- :: Show t =&gt; [Parser t a] -&gt; Parser t a</font>+  <font color=Cyan>,</font> oneOf'	<font color=Blue>-- :: [(String,Parser t a)] -&gt; Parser t a</font>+  <font color=Cyan>,</font> optional	<font color=Blue>-- :: Parser t a -&gt; Parser t (Maybe a)</font>+    <font color=Blue>-- ** sequences</font>+  <font color=Cyan>,</font> many	<font color=Blue>-- :: Parser t a -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> many1	<font color=Blue>-- :: Parser t a -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> sepBy	<font color=Blue>-- :: Parser t a -&gt; Parser t sep -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> sepBy1	<font color=Blue>-- :: Parser t a -&gt; Parser t sep -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> bracketSep	<font color=Blue>-- :: Parser t bra -&gt; Parser t sep -&gt; Parser t ket</font>+                <font color=Blue>--    -&gt; Parser t a -&gt; Parser t [a]</font>+  <font color=Cyan>,</font> bracket	<font color=Blue>-- :: Parser t bra -&gt; Parser t ket -&gt; Parser t a</font>+                <font color=Blue>--    -&gt; Parser t a</font>+  <font color=Cyan>,</font> manyFinally <font color=Blue>-- :: Parser t a -&gt; Parser t z -&gt; Parser t [a]</font>+    <font color=Blue>-- ** re-parsing</font>+  <font color=Cyan>,</font> reparse	<font color=Blue>-- :: [t] -&gt; Parser t ()</font>+  <font color=Cyan>)</font> <font color=Green><u>where</u></font>++<font color=Cyan>#</font><font color=Green><u>if</u></font> <b><font color=Magenta>__GLASGOW_HASKELL__</font></b>+<font color=Green><u>import</u></font> Control<font color=Cyan>.</font>Exception hiding <font color=Cyan>(</font>bracket<font color=Cyan>)</font>+throwE <font color=Red>::</font> String <font color=Red>-&gt;</font> a+<a name="throwE"></a>throwE msg <font color=Red>=</font> throw <font color=Cyan>(</font>ErrorCall msg<font color=Cyan>)</font>+<font color=Cyan>#</font><font color=Green><u>else</u></font>+throwE <font color=Red>::</font> String <font color=Red>-&gt;</font> a+throwE msg <font color=Red>=</font> error msg+<font color=Cyan>#</font>endif++<font color=Blue>-- | The @Parser@ datatype is a fairly generic parsing monad with error</font>+<font color=Blue>--   reporting.  It can be used for arbitrary token types, not just</font>+<font color=Blue>--   String input.  (If you require a running state, use module PolyState</font>+<font color=Blue>--   instead.)</font>+<font color=Green><u>newtype</u></font> Parser t a <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Either String a<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>--   A return type like Either, that distinguishes not only between</font>+<font color=Blue>--   right and wrong answers, but also had gradations of wrongness.</font>+<font color=Blue>--   Not used in this library. !!!!!!!!!!!!!!!!!!!!!!!!!!!</font>+<a name="EitherE"></a><font color=Green><u>type</u></font> EitherE a b <font color=Red>=</font> Either <font color=Cyan>(</font>Bool<font color=Cyan>,</font>a<font color=Cyan>)</font> b++<font color=Blue>-- | Apply a parser to an input token sequence.  The parser cannot return</font>+<font color=Blue>--   an error value explicitly, so errors raise an exception.  Thus, results</font>+<font color=Blue>--   can be partial (lazily constructed, but containing undefined).</font>+runParser <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font>+<a name="runParser"></a>runParser <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font>+    <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>e<font color=Cyan>,</font>ts<font color=Cyan>)</font><font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>{</font>Left m<font color=Red>-&gt;</font>throwE m<font color=Cyan>;</font> Right x<font color=Red>-&gt;</font>x<font color=Cyan>}</font><font color=Cyan>,</font> ts<font color=Cyan>)</font> <font color=Cyan>)</font>+    <font color=Cyan>.</font> p++<font color=Green><u>instance</u></font> Functor <font color=Cyan>(</font>Parser t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    fmap f <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font>    ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f x<font color=Cyan>)</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font><font color=Cyan>)</font>+<font color=Green><u>instance</u></font> Monad <font color=Cyan>(</font>Parser t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    return x     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>+    <font color=Cyan>(</font>P f<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> g  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> f ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P g'<font color=Cyan>)</font> <font color=Red>=</font> g x <font color=Green><u>in</u></font> g' ts'<font color=Cyan>)</font>+    fail e       <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Left e<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Simple failure can be corrected, but when a simple fail is not strong</font>+<font color=Blue>--   enough, use failBad for emphasis.  It guarantees parsing will</font>+<font color=Blue>--   terminate with an exception.</font>++failBad <font color=Red>::</font> String <font color=Red>-&gt;</font> Parser t a+<a name="failBad"></a>failBad msg      <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>throwE msg<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Commit is a way of raising the severity of any errors found within</font>+<font color=Blue>--   its argument.  Used in the middle of a parser definition, it means that</font>+<font color=Blue>--   any operations prior to commitment fail softly, but after commitment,</font>+<font color=Blue>--   they fail hard.</font>+commit <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t a+<a name="commit"></a>commit <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                            <font color=Cyan>(</font>Left e<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>throwE e<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                            right         <font color=Red>-&gt;</font> right <font color=Cyan>)</font>+++<font color=Blue>-- Combinators</font>++<font color=Blue>-- | One token</font>+next <font color=Red>::</font> Parser t t+<a name="next"></a>next <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> ts <font color=Green><u>of</u></font>+                    <font color=Red>[</font><font color=Red>]</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Magenta>"Ran out of input (EOF)"</font><font color=Cyan>,</font> <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+                    <font color=Cyan>(</font>t<font color=Red><b>:</b></font>ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right t<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Blue>-- | One token satifying a predicate</font>+satisfy <font color=Red>::</font> <font color=Cyan>(</font>t<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t t+<a name="satisfy"></a>satisfy p <font color=Red>=</font> <font color=Green><u>do</u></font><font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+              <font color=Cyan>;</font> <font color=Green><u>if</u></font> p x <font color=Green><u>then</u></font> return x <font color=Green><u>else</u></font> fail <font color=Magenta>"Parse.satisfy: failed"</font>+              <font color=Cyan>}</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`apply`</font>+<font color=Blue>-- | Apply a parsed function to a parsed value</font>+apply <font color=Red>::</font> Parser t <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t b+<font color=Blue>--pf `apply` px = do { f &lt;- pf; x &lt;- px; return (f x) }</font>+<font color=Blue>-- Needs to be lazier!  Must not force the argument value too early. </font>+<a name="apply"></a><font color=Cyan>(</font>P pf<font color=Cyan>)</font> <font color=Cyan>`apply`</font> <font color=Cyan>(</font>P px<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font>+    <font color=Green><u>case</u></font> pf ts <font color=Green><u>of</u></font>+      <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+      <font color=Cyan>(</font>Right f<font color=Cyan>,</font>  ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>x'<font color=Cyan>,</font>ts''<font color=Cyan>)</font> <font color=Red>=</font> px ts'+                             x <font color=Red>=</font> <font color=Green><u>case</u></font> x' <font color=Green><u>of</u></font> <font color=Cyan>{</font> Right x <font color=Red>-&gt;</font> x<font color=Cyan>;</font> Left e <font color=Red>-&gt;</font> throwE e <font color=Cyan>}</font>+                         <font color=Green><u>in</u></font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f x<font color=Cyan>)</font><font color=Cyan>,</font> ts''<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`discard`</font>+<font color=Blue>-- | @x `discard` y@ parses both x and y, but discards the result of y</font>+discard <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t b <font color=Red>-&gt;</font> Parser t a+<a name="discard"></a>px <font color=Cyan>`discard`</font> py <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> px<font color=Cyan>;</font> <font color=Green><u>_</u></font> <font color=Red>&lt;-</font> py<font color=Cyan>;</font> return x <font color=Cyan>}</font>++<font color=Blue>-- | @p `adjustErr` f@ applies the transformation @f@ to any error message</font>+<font color=Blue>--   generated in @p@, having no effect if @p@ succeeds.</font>+adjustErr <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t a+<a name="adjustErr"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> f <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                                 <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>f msg<font color=Cyan>)</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                 right           <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | @adjustErrBad@ is just like @adjustErr@ except it also raises the</font>+<font color=Blue>--   severity of the error.</font>+adjustErrBad <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser t a+<a name="adjustErrBad"></a>p <font color=Cyan>`adjustErrBad`</font> f <font color=Red>=</font> commit <font color=Cyan>(</font>p <font color=Cyan>`adjustErr`</font> f<font color=Cyan>)</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan>`onFail`</font>	<font color=Blue>-- not sure about precedence 6?</font>+<font color=Blue>-- | @p `onFail` q@ means parse p unless p fails in which case parse q instead.</font>+<font color=Blue>--   Can be chained together to give multiple attempts to parse something.</font>+<font color=Blue>--   (Note that q could itself be a failing parser, e.g. to change the error</font>+<font color=Blue>--   message from that defined in p to something different.)</font>+<font color=Blue>--   However, a *severe* failure in p cannot be ignored.</font>+onFail <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t a+<a name="onFail"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> <font color=Cyan>(</font>P q<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                                    <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> q ts+                                    right       <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | Parse the first alternative in the list that succeeds.</font>+oneOf <font color=Red>::</font> <font color=Red>[</font>Parser t a<font color=Red>]</font> <font color=Red>-&gt;</font> Parser t a+<a name="oneOf"></a>oneOf <font color=Red>[</font><font color=Red>]</font>     <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> n <font color=Red>&lt;-</font> next+                  <font color=Cyan>;</font> fail <font color=Cyan>(</font><font color=Magenta>"failed to parse any of the possible choices"</font><font color=Cyan>)</font>+                  <font color=Cyan>}</font>+<font color=Blue>--oneOf :: Show t =&gt; [Parser t a] -&gt; Parser t a</font>+<font color=Blue>--oneOf []     = do { n &lt;- next</font>+<font color=Blue>--                  ; fail ("failed to parse any of the possible choices"</font>+<font color=Blue>--                         ++"\n  next token is "++show n)</font>+<font color=Blue>--                  }</font>+oneOf <font color=Cyan>(</font>p<font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font> p <font color=Cyan>`onFail`</font> oneOf ps++<font color=Blue>-- | Parse the first alternative that succeeds, but if none succeed,</font>+<font color=Blue>--   report only the severe errors, and if none of those, then report</font>+<font color=Blue>--   all the soft errors.</font>+oneOf' <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font> Parser t a<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Parser t a+<a name="oneOf'"></a>oneOf' ps <font color=Red>=</font> accum <font color=Red>[</font><font color=Red>]</font> ps+    <font color=Green><u>where</u></font> accum errs <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font>+              <font color=Green><u>case</u></font> errs <font color=Green><u>of</u></font>+                <font color=Red>[</font><font color=Red>]</font> <font color=Red>-&gt;</font>  failBad <font color=Cyan>(</font><font color=Magenta>"internal failure in parser (oneOf'):\n"</font>+                               <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>show <font color=Cyan>(</font>map fst ps<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+                <font color=Red>[</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> fail e+                es <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"one of the following failures occurred:\n"</font>+                           <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>concatMap showErr <font color=Cyan>(</font>reverse es<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+          accum errs <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>P p<font color=Cyan>)</font><font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font>+              P <font color=Cyan>(</font><font color=Red>\</font>ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+                         <font color=Cyan>(</font>Left err<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> accum <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Red><b>:</b></font>errs<font color=Cyan>)</font> ps+                                         <font color=Green><u>in</u></font> p ts+                         right        <font color=Red>-&gt;</font> right <font color=Cyan>)</font>+          showErr <font color=Cyan>(</font>name<font color=Cyan>,</font>err<font color=Cyan>)</font> <font color=Red>=</font> name<font color=Cyan>++</font><font color=Magenta>":\n"</font><font color=Cyan>++</font>indent <font color=Magenta>2</font> err++<font color=Blue>-- | Helper for formatting error messages: indents all lines by a fixed amount.</font>+indent <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="indent"></a>indent n <font color=Red>=</font> unlines <font color=Cyan>.</font> map <font color=Cyan>(</font>replicate n <font color=Magenta>' '</font> <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> lines++<font color=Blue>-- | 'optional' indicates whether the parser succeeded through the Maybe type.</font>+optional <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font>+<a name="optional"></a>optional p <font color=Red>=</font> fmap Just p <font color=Cyan>`onFail`</font> return Nothing++<font color=Blue>-- | 'many p' parses a list of elements with individual parser p.</font>+<font color=Blue>--   Cannot fail, since an empty list is a valid return value.</font>+many <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many"></a>many p <font color=Red>=</font> many1 p <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items.</font>+many1 <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many1"></a>many1 p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"In a sequence:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font><font color=Cyan>.</font> indent <font color=Magenta>2</font><font color=Cyan>)</font>+             <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many p+             <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+             <font color=Cyan>}</font>+<font color=Blue>--       `adjustErr` ("When looking for a non-empty sequence:\n\t"++)</font>++<font color=Blue>-- | Parse a list of items separated by discarded junk.</font>+sepBy <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t sep <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy"></a>sepBy p sep <font color=Red>=</font> <font color=Green><u>do</u></font> sepBy1 p sep <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items separated by discarded junk.</font>+sepBy1 <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t sep <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy1"></a>sepBy1 p sep <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p+                  <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+                  <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+                  <font color=Cyan>}</font>+         <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for a non-empty sequence with separators:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+ +<font color=Blue>-- | Parse a list of items, discarding the start, end, and separator</font>+<font color=Blue>--   items.</font>+bracketSep <font color=Red>::</font> Parser t bra <font color=Red>-&gt;</font> Parser t sep <font color=Red>-&gt;</font> Parser t ket+              <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="bracketSep"></a>bracketSep open sep close p <font color=Red>=</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open<font color=Cyan>;</font> close<font color=Cyan>;</font> return <font color=Red>[</font><font color=Red>]</font> <font color=Cyan>}</font>+       <font color=Cyan>`onFail`</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p  <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"After first bracket in a group:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for closing bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+       <font color=Cyan>}</font>++<font color=Blue>-- | Parse a bracketed item, discarding the brackets.</font>+bracket <font color=Red>::</font> Parser t bra <font color=Red>-&gt;</font> Parser t ket <font color=Red>-&gt;</font> Parser t a <font color=Red>-&gt;</font> Parser t a+<a name="bracket"></a>bracket open close p <font color=Red>=</font> <font color=Green><u>do</u></font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"Missing closing bracket:\n\t"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return x+       <font color=Cyan>}</font>++<font color=Blue>-- | 'manyFinally e t' parses a possibly-empty sequence of e's,</font>+<font color=Blue>--   terminated by a t.  Any parse failures could be due either to</font>+<font color=Blue>--   a badly-formed terminator or a badly-formed element, so raise</font>+<font color=Blue>--   both possible errors.</font>+manyFinally <font color=Red>::</font> Parser t a <font color=Red>-&gt;</font> Parser t z <font color=Red>-&gt;</font> Parser t <font color=Red>[</font>a<font color=Red>]</font>+<a name="manyFinally"></a>manyFinally pp<font color=Red>@</font><font color=Cyan>(</font>P p<font color=Cyan>)</font> pt<font color=Red>@</font><font color=Cyan>(</font>P t<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>ts <font color=Red>-&gt;</font>+    <font color=Green><u>case</u></font> p ts <font color=Green><u>of</u></font>+        <font color=Cyan>(</font>Left e<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+            <font color=Green><u>case</u></font> t ts <font color=Green><u>of</u></font>+                <font color=Cyan>(</font>Right <font color=Green><u>_</u></font><font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                <font color=Cyan>(</font>Left e<font color=Cyan>,</font>  ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left e<font color=Cyan>,</font>   ts'<font color=Cyan>)</font>+        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font>+            <font color=Green><u>let</u></font> <font color=Cyan>(</font>tail<font color=Cyan>,</font>ts''<font color=Cyan>)</font> <font color=Red>=</font> runParser <font color=Cyan>(</font>manyFinally pp pt<font color=Cyan>)</font> ts'+            <font color=Green><u>in</u></font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>x<font color=Red><b>:</b></font>tail<font color=Cyan>)</font><font color=Cyan>,</font> ts''<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+<font color=Blue>-- | Push some tokens back onto the front of the input stream and reparse.</font>+<font color=Blue>--   This is useful e.g. for recursively expanding macros.  When the</font>+<font color=Blue>--   user-parser recognises a macro use, it can lookup the macro</font>+<font color=Blue>--   expansion from the parse state, lex it, and then stuff the</font>+<font color=Blue>--   lexed expansion back down into the parser.</font>+reparse    <font color=Red>::</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> Parser t <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="reparse"></a>reparse ts  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> ts<font color=Cyan>++</font>inp<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+</pre>
+ docs/HaXml/src/Text/ParserCombinators/PolyState.html view
@@ -0,0 +1,249 @@+<pre><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>PolyState+  <font color=Cyan>(</font> <font color=Blue>-- * A Parser datatype parameterised on arbitrary token type and state type</font>+    Parser<font color=Cyan>(</font>P<font color=Cyan>)</font>	<font color=Blue>-- datatype, instance of: Functor, Monad</font>+  <font color=Cyan>,</font> runParser	<font color=Blue>-- :: Parser s t a -&gt; s -&gt; [t] -&gt; (Either String a, s, [t])</font>+  <font color=Cyan>,</font> failBad	<font color=Blue>-- :: String -&gt; Parser s t a</font>+  <font color=Cyan>,</font> commit	<font color=Blue>-- :: Parser s t a -&gt; Parser s t a</font>+    <font color=Blue>-- * Combinators</font>+    <font color=Blue>-- ** primitives</font>+  <font color=Cyan>,</font> next	<font color=Blue>-- :: Parser s t t</font>+  <font color=Cyan>,</font> satisfy	<font color=Blue>-- :: (t-&gt;Bool) -&gt; Parser s t t</font>+  <font color=Cyan>,</font> apply	<font color=Blue>-- :: Parser t (a-&gt;b) -&gt; Parser s t a -&gt; Parser s t b</font>+  <font color=Cyan>,</font> discard	<font color=Blue>-- :: Parser s t a -&gt; Parser s t b -&gt; Parser s t a</font>+    <font color=Blue>-- ** error-handling</font>+  <font color=Cyan>,</font> adjustErr	<font color=Blue>-- :: Parser s t a -&gt; (String-&gt;String) -&gt; Parser s t a</font>+  <font color=Cyan>,</font> adjustErrBad<font color=Blue>-- :: Parser s t a -&gt; (String-&gt;String) -&gt; Parser s t a</font>+  <font color=Cyan>,</font> indent	<font color=Blue>-- :: Int -&gt; String -&gt; String</font>+    <font color=Blue>-- ** choices</font>+  <font color=Cyan>,</font> onFail	<font color=Blue>-- :: Parser s t a -&gt; Parser s t a -&gt; Parser s t a</font>+  <font color=Cyan>,</font> oneOf	<font color=Blue>-- :: [Parser s t a] -&gt; Parser s t a</font>+  <font color=Cyan>,</font> oneOf'	<font color=Blue>-- :: [(String, Parser s t a)] -&gt; Parser s t a</font>+    <font color=Blue>-- ** sequences</font>+  <font color=Cyan>,</font> many	<font color=Blue>-- :: Parser s t a -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> many1	<font color=Blue>-- :: Parser s t a -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> sepBy	<font color=Blue>-- :: Parser s t a -&gt; Parser s t sep -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> sepBy1	<font color=Blue>-- :: Parser s t a -&gt; Parser s t sep -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> bracketSep	<font color=Blue>-- :: Parser s t bra -&gt; Parser s t sep -&gt; Parser s t ket</font>+                <font color=Blue>--    -&gt; Parser s t a -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> bracket	<font color=Blue>-- :: Parser s t bra -&gt; Parser s t ket -&gt; Parser s t a</font>+                <font color=Blue>--    -&gt; Parser s t a</font>+  <font color=Cyan>,</font> manyFinally	<font color=Blue>-- :: Parser s t a -&gt; Parser s t z -&gt; Parser s t [a]</font>+    <font color=Blue>-- ** state-handling</font>+  <font color=Cyan>,</font> stUpdate	<font color=Blue>-- :: (s-&gt;s) -&gt; Parser s t ()</font>+  <font color=Cyan>,</font> stQuery	<font color=Blue>-- :: (s-&gt;a) -&gt; Parser s t a</font>+  <font color=Cyan>,</font> stGet	<font color=Blue>-- :: Parser s t s</font>+    <font color=Blue>-- ** re-parsing</font>+  <font color=Cyan>,</font> reparse	<font color=Blue>-- :: [t] -&gt; Parser s t ()</font>+  <font color=Cyan>)</font> <font color=Green><u>where</u></font>++<font color=Blue>-- | The @Parser@ datatype is a fairly generic parsing monad with error</font>+<font color=Blue>--   reporting and a running state.  It can be used for arbitrary token</font>+<font color=Blue>--   types, not just String input.</font>+<font color=Green><u>newtype</u></font> Parser s t a <font color=Red>=</font> P <font color=Cyan>(</font>s <font color=Red>-&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>EitherE String a<font color=Cyan>,</font> s<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | A return type like Either, that distinguishes not only between</font>+<font color=Blue>--   right and wrong answers, but also had gradations of wrongness.</font>+<a name="EitherE"></a><font color=Green><u>type</u></font> EitherE a b <font color=Red>=</font> Either <font color=Cyan>(</font>Bool<font color=Cyan>,</font>a<font color=Cyan>)</font> b++<font color=Blue>-- | Apply a parser to an initial state and input token sequence.</font>+runParser <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> s <font color=Red>-&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Either String a<font color=Cyan>,</font> s<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font>+<a name="runParser"></a>runParser <font color=Cyan>(</font>P p<font color=Cyan>)</font> s <font color=Red>=</font>+    <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>e<font color=Cyan>,</font>s<font color=Cyan>,</font>ts<font color=Cyan>)</font><font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> Left <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>m<font color=Cyan>)</font><font color=Red>-&gt;</font>Left m<font color=Cyan>;</font> Right m<font color=Red>-&gt;</font>Right m+                  <font color=Cyan>,</font>s<font color=Cyan>,</font>ts<font color=Cyan>)</font><font color=Cyan>)</font>+    <font color=Cyan>.</font> p s++<font color=Green><u>instance</u></font> Functor <font color=Cyan>(</font>Parser s t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    fmap f <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font>    s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f x<font color=Cyan>)</font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font><font color=Cyan>)</font>+<font color=Green><u>instance</u></font> Monad <font color=Cyan>(</font>Parser s t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    return x     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>+    <font color=Cyan>(</font>P f<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> g  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> f s ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P g'<font color=Cyan>)</font> <font color=Red>=</font> g x+                                                       <font color=Green><u>in</u></font> g' s' ts'<font color=Cyan>)</font>+    fail msg     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | When a simple fail is not strong enough, use failBad for emphasis.</font>+<font color=Blue>--   An emphasised (severe) error can propagate out through choice operators.</font>+failBad <font color=Red>::</font> String <font color=Red>-&gt;</font> Parser s t a+<a name="failBad"></a>failBad msg      <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>True<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Commit is a way of raising the severity of any errors found within</font>+<font color=Blue>--   its argument.  Used in the middle of a parser definition, it means that</font>+<font color=Blue>--   any operations prior to commitment fail softly, but after commitment,</font>+<font color=Blue>--   they fail hard.</font>+commit <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a+<a name="commit"></a>commit <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                            <font color=Cyan>(</font>Left <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>True<font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                            right                 <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- Combinators</font>++<font color=Blue>-- | One token</font>+next <font color=Red>::</font> Parser s t t+<a name="next"></a>next <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> ts <font color=Green><u>of</u></font>+                    <font color=Red>[</font><font color=Red>]</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"Ran out of input (EOF)"</font><font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+                    <font color=Cyan>(</font>t<font color=Red><b>:</b></font>ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right t<font color=Cyan>,</font> s<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Blue>-- | One token satifying a predicate</font>+satisfy <font color=Red>::</font> <font color=Cyan>(</font>t<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t t+<a name="satisfy"></a>satisfy p <font color=Red>=</font> <font color=Green><u>do</u></font><font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+              <font color=Cyan>;</font> <font color=Green><u>if</u></font> p x <font color=Green><u>then</u></font> return x <font color=Green><u>else</u></font> fail <font color=Magenta>"Parse.satisfy: failed"</font>+              <font color=Cyan>}</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`apply`</font>+<font color=Blue>-- | Apply a parsed function to a parsed value</font>+apply <font color=Red>::</font> Parser s t <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t b+<a name="apply"></a>pf <font color=Cyan>`apply`</font> px <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> f <font color=Red>&lt;-</font> pf<font color=Cyan>;</font> x <font color=Red>&lt;-</font> px<font color=Cyan>;</font> return <font color=Cyan>(</font>f x<font color=Cyan>)</font> <font color=Cyan>}</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`discard`</font>+<font color=Blue>-- | @x `discard` y@ parses both x and y, but discards the result of y</font>+discard <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t b <font color=Red>-&gt;</font> Parser s t a+<a name="discard"></a>px <font color=Cyan>`discard`</font> py <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> px<font color=Cyan>;</font> <font color=Green><u>_</u></font> <font color=Red>&lt;-</font> py<font color=Cyan>;</font> return x <font color=Cyan>}</font>++<font color=Blue>-- | @p `adjustErr` f@ applies the transformation @f@ to any error message</font>+<font color=Blue>--   generated in @p@, having no effect if @p@ succeeds.</font>+adjustErr <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a+<a name="adjustErr"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> f <font color=Red>=</font>+        P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                     <font color=Cyan>(</font>Left <font color=Cyan>(</font>b<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>b<font color=Cyan>,</font><font color=Cyan>(</font>f msg<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                     right                   <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | @adjustErrBad@ is just like @adjustErr@ except it also raises the</font>+<font color=Blue>--   severity of the error.</font>+adjustErrBad <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a+<font color=Blue>-- p `adjustErrBad` f = commit (p `adjustErr` f)</font>+<a name="adjustErrBad"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`adjustErrBad`</font> f <font color=Red>=</font>+        P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                     <font color=Cyan>(</font>Left <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>True<font color=Cyan>,</font><font color=Cyan>(</font>f msg<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                     right                   <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan>`onFail`</font>	<font color=Blue>-- not sure about precedence 6?</font>+<font color=Blue>-- | @p `onFail` q@ means parse p unless p fails in which case parse q instead.</font>+<font color=Blue>--   Can be chained together to give multiple attempts to parse something.</font>+<font color=Blue>--   (Note that q could itself be a failing parser, e.g. to change the error</font>+<font color=Blue>--   message from that defined in p to something different.)</font>+<font color=Blue>--   However, a severe failure in p cannot be ignored.</font>+onFail <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a+<a name="onFail"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> <font color=Cyan>(</font>P q<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                                    r<font color=Red>@</font><font color=Cyan>(</font>Left <font color=Cyan>(</font>True<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> r+                                    <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> q s ts+                                    right          <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | Parse the first alternative in the list that succeeds.</font>+oneOf <font color=Red>::</font> <font color=Red>[</font>Parser s t a<font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t a+<a name="oneOf"></a>oneOf <font color=Red>[</font><font color=Red>]</font>     <font color=Red>=</font> fail <font color=Cyan>(</font><font color=Magenta>"Failed to parse any of the possible choices"</font><font color=Cyan>)</font>+oneOf <font color=Cyan>(</font>p<font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font> p <font color=Cyan>`onFail`</font> oneOf ps++<font color=Blue>-- | Parse the first alternative that succeeds, but if none succeed,</font>+<font color=Blue>--   report only the severe errors, and if none of those, then report</font>+<font color=Blue>--   all the soft errors.</font>+oneOf' <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font> Parser s t a<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t a+<a name="oneOf'"></a>oneOf' <font color=Red>=</font> accum <font color=Red>[</font><font color=Red>]</font>+    <font color=Green><u>where</u></font> accum errs <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font>+              <font color=Green><u>case</u></font> filter isBad errs <font color=Green><u>of</u></font>+                <font color=Red>[</font><font color=Red>]</font> <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"failed to parse any of the possible choices:\n"</font>+                           <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>concatMap showErr <font color=Cyan>(</font>reverse errs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+                <font color=Red>[</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> failBad e+                es <font color=Red>-&gt;</font> failBad <font color=Cyan>(</font><font color=Magenta>"one of the following failures occurred:\n"</font>+                              <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>concatMap showErr <font color=Cyan>(</font>reverse es<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+          accum errs <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>P p<font color=Cyan>)</font><font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font>+              P <font color=Cyan>(</font><font color=Red>\</font>u ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p u ts <font color=Green><u>of</u></font>+                           <font color=Cyan>(</font>Left err<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> accum <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Red><b>:</b></font>errs<font color=Cyan>)</font> ps+                                             <font color=Green><u>in</u></font> p u ts+                           right          <font color=Red>-&gt;</font> right <font color=Cyan>)</font>+          showErr <font color=Cyan>(</font>name<font color=Cyan>,</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> name<font color=Cyan>++</font><font color=Magenta>":\n"</font><font color=Cyan>++</font>indent <font color=Magenta>2</font> err+          isBad <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Cyan>(</font>b<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> b++<font color=Blue>-- | Helper for formatting error messages: indents all lines by a fixed amount.</font>+indent <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="indent"></a>indent n <font color=Red>=</font> unlines <font color=Cyan>.</font> map <font color=Cyan>(</font>replicate n <font color=Magenta>' '</font> <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> lines++<font color=Blue>-- | 'many p' parses a list of elements with individual parser p.</font>+<font color=Blue>--   Cannot fail, since an empty list is a valid return value.</font>+many <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many"></a>many p <font color=Red>=</font> many1 p <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items.</font>+many1 <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many1"></a>many1 p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"In a sequence:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font><font color=Cyan>.</font> indent <font color=Magenta>2</font><font color=Cyan>)</font>+             <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many p+             <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+             <font color=Cyan>}</font>+<font color=Blue>--       `adjustErr` ("When looking for a non-empty sequence:\n"++)</font>++<font color=Blue>-- | Parse a list of items separated by discarded junk.</font>+sepBy <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t sep <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy"></a>sepBy p sep <font color=Red>=</font> <font color=Green><u>do</u></font> sepBy1 p sep <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items separated by discarded junk.</font>+sepBy1 <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t sep <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy1"></a>sepBy1 p sep <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p+                  <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+                  <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+                  <font color=Cyan>}</font>+         <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for a non-empty sequence with separators:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+ +<font color=Blue>-- | Parse a list of items, discarding the start, end, and separator</font>+<font color=Blue>--   items.</font>+bracketSep <font color=Red>::</font> Parser s t bra <font color=Red>-&gt;</font> Parser s t sep <font color=Red>-&gt;</font> Parser s t ket+              <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="bracketSep"></a>bracketSep open sep close p <font color=Red>=</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open<font color=Cyan>;</font> close<font color=Cyan>;</font> return <font color=Red>[</font><font color=Red>]</font> <font color=Cyan>}</font>+       <font color=Cyan>`onFail`</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p  <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"After first bracket in a group:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for closing bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+       <font color=Cyan>}</font>++<font color=Blue>-- | Parse a bracketed item, discarding the brackets.</font>+bracket <font color=Red>::</font> Parser s t bra <font color=Red>-&gt;</font> Parser s t ket <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a+<a name="bracket"></a>bracket open close p <font color=Red>=</font> <font color=Green><u>do</u></font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"Missing closing bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return x+       <font color=Cyan>}</font>++<font color=Blue>-- | 'manyFinally e t' parses a possibly-empty sequence of e's,</font>+<font color=Blue>--   terminated by a t.  Any parse failures could be due either to</font>+<font color=Blue>--   a badly-formed terminator or a badly-formed element, so raise</font>+<font color=Blue>--   both possible errors.</font>+manyFinally <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t z <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="manyFinally"></a>manyFinally p t <font color=Red>=</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> xs <font color=Red>&lt;-</font> many p+       <font color=Cyan>;</font> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"sequence terminator"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> t<font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>)</font> <font color=Cyan>}</font> <font color=Cyan>)</font>+                <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"item in a sequence"</font><font color=Cyan>,</font>  <font color=Green><u>do</u></font> <font color=Cyan>{</font> p<font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>)</font> <font color=Cyan>}</font> <font color=Cyan>)</font>+                <font color=Red>]</font>+       <font color=Cyan>;</font> return xs+       <font color=Cyan>}</font>++<font color=Blue>------------------------------------------------------------------------</font>+<font color=Blue>-- State handling</font>++<font color=Blue>-- | Update the internal state.</font>+stUpdate   <font color=Red>::</font> <font color=Cyan>(</font>s<font color=Red>-&gt;</font>s<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="stUpdate"></a>stUpdate f  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> f s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Query the internal state.</font>+stQuery    <font color=Red>::</font> <font color=Cyan>(</font>s<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a+<a name="stQuery"></a>stQuery f   <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f s<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Deliver the entire internal state.</font>+stGet      <font color=Red>::</font> Parser s t s+<a name="stGet"></a>stGet       <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right s<font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+<font color=Blue>-- | Push some tokens back onto the front of the input stream and reparse.</font>+<font color=Blue>--   This is useful e.g. for recursively expanding macros.  When the</font>+<font color=Blue>--   user-parser recognises a macro use, it can lookup the macro</font>+<font color=Blue>--   expansion from the parse state, lex it, and then stuff the</font>+<font color=Blue>--   lexed expansion back down into the parser.</font>+reparse    <font color=Red>::</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="reparse"></a>reparse ts  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s inp<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>++</font>inp<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+</pre>
+ docs/HaXml/src/Text/ParserCombinators/PolyStateLazy.html view
@@ -0,0 +1,279 @@+<pre><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>PolyStateLazy+  <font color=Cyan>(</font> <font color=Blue>-- * A Parser datatype parameterised on arbitrary token type and state type.</font>+    <font color=Blue>--   Parsers do not return explicit failure.  An exception is raised</font>+    <font color=Blue>--   instead.  This allows partial results to be returned before a</font>+    <font color=Blue>--   full parse is complete.</font>+    Parser<font color=Cyan>(</font>P<font color=Cyan>)</font>	<font color=Blue>-- datatype, instance of: Functor, Monad</font>+  <font color=Cyan>,</font> runParser	<font color=Blue>-- :: Parser s t a -&gt; s -&gt; [t] -&gt; (a, s, [t])</font>+  <font color=Cyan>,</font> failBad	<font color=Blue>-- :: String -&gt; Parser s t a</font>+  <font color=Cyan>,</font> commit	<font color=Blue>-- :: Parser s t a -&gt; Parser s t a</font>+    <font color=Blue>-- * Combinators</font>+    <font color=Blue>-- ** primitives</font>+  <font color=Cyan>,</font> next	<font color=Blue>-- :: Parser s t t</font>+  <font color=Cyan>,</font> satisfy	<font color=Blue>-- :: (t-&gt;Bool) -&gt; Parser s t t</font>+  <font color=Cyan>,</font> apply	<font color=Blue>-- :: Parser t (a-&gt;b) -&gt; Parser s t a -&gt; Parser s t b</font>+  <font color=Cyan>,</font> discard	<font color=Blue>-- :: Parser s t a -&gt; Parser s t b -&gt; Parser s t a</font>+    <font color=Blue>-- ** error-handling</font>+  <font color=Cyan>,</font> adjustErr	<font color=Blue>-- :: Parser s t a -&gt; (String-&gt;String) -&gt; Parser s t a</font>+  <font color=Cyan>,</font> adjustErrBad<font color=Blue>-- :: Parser s t a -&gt; (String-&gt;String) -&gt; Parser s t a</font>+  <font color=Cyan>,</font> indent	<font color=Blue>-- :: Int -&gt; String -&gt; String</font>+    <font color=Blue>-- ** choices</font>+  <font color=Cyan>,</font> onFail	<font color=Blue>-- :: Parser s t a -&gt; Parser s t a -&gt; Parser s t a</font>+  <font color=Cyan>,</font> oneOf	<font color=Blue>-- :: [Parser s t a] -&gt; Parser s t a</font>+  <font color=Cyan>,</font> oneOf'	<font color=Blue>-- :: [(String, Parser s t a)] -&gt; Parser s t a</font>+  <font color=Cyan>,</font> optional	<font color=Blue>-- :: Parser s t a -&gt; Parser s t (Maybe a)</font>+    <font color=Blue>-- ** sequences</font>+  <font color=Cyan>,</font> many	<font color=Blue>-- :: Parser s t a -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> many1	<font color=Blue>-- :: Parser s t a -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> sepBy	<font color=Blue>-- :: Parser s t a -&gt; Parser s t sep -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> sepBy1	<font color=Blue>-- :: Parser s t a -&gt; Parser s t sep -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> bracketSep	<font color=Blue>-- :: Parser s t bra -&gt; Parser s t sep -&gt; Parser s t ket</font>+                <font color=Blue>--    -&gt; Parser s t a -&gt; Parser s t [a]</font>+  <font color=Cyan>,</font> bracket	<font color=Blue>-- :: Parser s t bra -&gt; Parser s t ket -&gt; Parser s t a</font>+                <font color=Blue>--    -&gt; Parser s t a</font>+  <font color=Cyan>,</font> manyFinally	<font color=Blue>-- :: Parser s t a -&gt; Parser s t z -&gt; Parser s t [a]</font>+    <font color=Blue>-- ** state-handling</font>+  <font color=Cyan>,</font> stUpdate	<font color=Blue>-- :: (s-&gt;s) -&gt; Parser s t ()</font>+  <font color=Cyan>,</font> stQuery	<font color=Blue>-- :: (s-&gt;a) -&gt; Parser s t a</font>+  <font color=Cyan>,</font> stGet	<font color=Blue>-- :: Parser s t s</font>+    <font color=Blue>-- ** re-parsing</font>+  <font color=Cyan>,</font> reparse	<font color=Blue>-- :: [t] -&gt; Parser s t ()</font>+  <font color=Cyan>)</font> <font color=Green><u>where</u></font>++<font color=Cyan>#</font><font color=Green><u>if</u></font> <b><font color=Magenta>__GLASGOW_HASKELL__</font></b>+<font color=Green><u>import</u></font> Control<font color=Cyan>.</font>Exception hiding <font color=Cyan>(</font>bracket<font color=Cyan>)</font>+throwE <font color=Red>::</font> String <font color=Red>-&gt;</font> a+<a name="throwE"></a>throwE msg <font color=Red>=</font> throw <font color=Cyan>(</font>ErrorCall msg<font color=Cyan>)</font>+<font color=Cyan>#</font><font color=Green><u>else</u></font>+throwE <font color=Red>::</font> String <font color=Red>-&gt;</font> a+throwE msg <font color=Red>=</font> error msg+<font color=Cyan>#</font>endif++<font color=Blue>-- | The @Parser@ datatype is a fairly generic parsing monad with error</font>+<font color=Blue>--   reporting and a running state.  It can be used for arbitrary token</font>+<font color=Blue>--   types, not just String input.</font>+<font color=Green><u>newtype</u></font> Parser s t a <font color=Red>=</font> P <font color=Cyan>(</font>s <font color=Red>-&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Either String a<font color=Cyan>,</font> s<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | A return type like Either, that distinguishes not only between</font>+<font color=Blue>--   right and wrong answers, but also had gradations of wrongness.</font>+<font color=Blue>--   Not used in this library.  !!!!!!!!!!!!!!!!!!!!!!!!!!</font>+<a name="EitherE"></a><font color=Green><u>type</u></font> EitherE a b <font color=Red>=</font> Either <font color=Cyan>(</font>Bool<font color=Cyan>,</font>a<font color=Cyan>)</font> b++<font color=Blue>-- | Apply a parser to an initial state and input token sequence.</font>+<font color=Blue>--   The parser cannot return an error value explicitly, so errors</font>+<font color=Blue>--   raise an exception.  Thus, results can be partial (lazily constructed,</font>+<font color=Blue>--   but containing undefined).</font>+runParser <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> s <font color=Red>-&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Cyan>,</font> s<font color=Cyan>,</font> <font color=Red>[</font>t<font color=Red>]</font><font color=Cyan>)</font>+<a name="runParser"></a>runParser <font color=Cyan>(</font>P p<font color=Cyan>)</font> s <font color=Red>=</font>+    <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>e<font color=Cyan>,</font>s<font color=Cyan>,</font>ts<font color=Cyan>)</font><font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>{</font>Left m<font color=Red>-&gt;</font>throwE m<font color=Cyan>;</font> Right x<font color=Red>-&gt;</font>x<font color=Cyan>}</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>+    <font color=Cyan>.</font> p s++<font color=Green><u>instance</u></font> Functor <font color=Cyan>(</font>Parser s t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    fmap f <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font>    s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f x<font color=Cyan>)</font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font><font color=Cyan>)</font>+<font color=Green><u>instance</u></font> Monad <font color=Cyan>(</font>Parser s t<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    return x     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>+    <font color=Cyan>(</font>P f<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> g  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> f s ts <font color=Green><u>of</u></font>+                                <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                                <font color=Cyan>(</font>Right x<font color=Cyan>,</font>  s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P g'<font color=Cyan>)</font> <font color=Red>=</font> g x+                                                       <font color=Green><u>in</u></font> g' s' ts'<font color=Cyan>)</font>+    fail msg     <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Simple failure can be corrected, but when a simple fail is not strong</font>+<font color=Blue>--   enough, use failBad for emphasis.  It guarantees parsing will terminate</font>+<font color=Blue>--   with an exception.</font>+failBad <font color=Red>::</font> String <font color=Red>-&gt;</font> Parser s t a+<a name="failBad"></a>failBad msg      <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>throwE msg<font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Commit is a way of raising the severity of any errors found within</font>+<font color=Blue>--   its argument.  Used in the middle of a parser definition, it means that</font>+<font color=Blue>--   any operations prior to commitment fail softly, but after commitment,</font>+<font color=Blue>--   they fail hard.</font>+commit <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a+<a name="commit"></a>commit <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                            <font color=Cyan>(</font>Left e<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>throwE e<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                            right             <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- Combinators</font>++<font color=Blue>-- | One token</font>+next <font color=Red>::</font> Parser s t t+<a name="next"></a>next <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> ts <font color=Green><u>of</u></font>+                    <font color=Red>[</font><font color=Red>]</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Magenta>"Ran out of input (EOF)"</font><font color=Cyan>,</font> s<font color=Cyan>,</font> <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+                    <font color=Cyan>(</font>t<font color=Red><b>:</b></font>ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right t<font color=Cyan>,</font> s<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Blue>-- | One token satifying a predicate</font>+satisfy <font color=Red>::</font> <font color=Cyan>(</font>t<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t t+<a name="satisfy"></a>satisfy p <font color=Red>=</font> <font color=Green><u>do</u></font><font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+              <font color=Cyan>;</font> <font color=Green><u>if</u></font> p x <font color=Green><u>then</u></font> return x <font color=Green><u>else</u></font> fail <font color=Magenta>"Parse.satisfy: failed"</font>+              <font color=Cyan>}</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`apply`</font>+<font color=Blue>-- | Apply a parsed function to a parsed value</font>+apply <font color=Red>::</font> Parser s t <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t b+<font color=Blue>--pf `apply` px = do { f &lt;- pf; x &lt;- px; return (f x) }</font>+<font color=Blue>-- Needs to be lazier!  Must not force the argument value too early.</font>+<a name="apply"></a><font color=Cyan>(</font>P pf<font color=Cyan>)</font> <font color=Cyan>`apply`</font> <font color=Cyan>(</font>P px<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font>+    <font color=Green><u>case</u></font> pf s ts <font color=Green><u>of</u></font>+      <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+      <font color=Cyan>(</font>Right f<font color=Cyan>,</font>  s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>x'<font color=Cyan>,</font>s''<font color=Cyan>,</font>ts''<font color=Cyan>)</font> <font color=Red>=</font> px s' ts'+                                 x <font color=Red>=</font> <font color=Green><u>case</u></font> x' <font color=Green><u>of</u></font>+                                         Right x <font color=Red>-&gt;</font> x+                                         Left e  <font color=Red>-&gt;</font> throwE e+                             <font color=Green><u>in</u></font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f x<font color=Cyan>)</font><font color=Cyan>,</font> s''<font color=Cyan>,</font> ts''<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>3</font> <font color=Cyan>`discard`</font>+<font color=Blue>-- | @x `discard` y@ parses both x and y, but discards the result of y</font>+discard <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t b <font color=Red>-&gt;</font> Parser s t a+<a name="discard"></a>px <font color=Cyan>`discard`</font> py <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> px<font color=Cyan>;</font> <font color=Green><u>_</u></font> <font color=Red>&lt;-</font> py<font color=Cyan>;</font> return x <font color=Cyan>}</font>++<font color=Blue>-- | @p `adjustErr` f@ applies the transformation @f@ to any error message</font>+<font color=Blue>--   generated in @p@, having no effect if @p@ succeeds.</font>+adjustErr <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a+<a name="adjustErr"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> f <font color=Red>=</font>+        P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                     <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>f msg<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                     right               <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | @adjustErrBad@ is just like @adjustErr@ except it also raises the</font>+<font color=Blue>--   severity of the error.</font>+adjustErrBad <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a+<font color=Blue>-- p `adjustErrBad` f = commit (p `adjustErr` f)</font>+<a name="adjustErrBad"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`adjustErrBad`</font> f <font color=Red>=</font>+        P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                     <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>throwE <font color=Cyan>(</font>f msg<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                     right               <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan>`onFail`</font>	<font color=Blue>-- not sure about precedence 6?</font>+<font color=Blue>-- | @p `onFail` q@ means parse p unless p fails in which case parse q instead.</font>+<font color=Blue>--   Can be chained together to give multiple attempts to parse something.</font>+<font color=Blue>--   (Note that q could itself be a failing parser, e.g. to change the error</font>+<font color=Blue>--   message from that defined in p to something different.)</font>+<font color=Blue>--   However, a *severe* failure in p cannot be ignored.</font>+onFail <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a+<a name="onFail"></a><font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> <font color=Cyan>(</font>P q<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+                                    <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> q s ts+                                    right          <font color=Red>-&gt;</font> right <font color=Cyan>)</font>++<font color=Blue>-- | Parse the first alternative in the list that succeeds.</font>+oneOf <font color=Red>::</font> <font color=Red>[</font>Parser s t a<font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t a+<a name="oneOf"></a>oneOf <font color=Red>[</font><font color=Red>]</font>     <font color=Red>=</font> fail <font color=Cyan>(</font><font color=Magenta>"Failed to parse any of the possible choices"</font><font color=Cyan>)</font>+oneOf <font color=Cyan>(</font>p<font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font> p <font color=Cyan>`onFail`</font> oneOf ps++<font color=Blue>-- | Parse the first alternative that succeeds, but if none succeed,</font>+<font color=Blue>--   report only the severe errors, and if none of those, then report</font>+<font color=Blue>--   all the soft errors.</font>+oneOf' <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font> Parser s t a<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t a+<a name="oneOf'"></a>oneOf' ps <font color=Red>=</font> accum <font color=Red>[</font><font color=Red>]</font> ps+    <font color=Green><u>where</u></font> accum errs <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font>+              <font color=Green><u>case</u></font> errs <font color=Green><u>of</u></font>+                <font color=Red>[</font><font color=Red>]</font> <font color=Red>-&gt;</font> failBad <font color=Cyan>(</font><font color=Magenta>"internal failure in parser (oneOf'):\n"</font>+                              <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>show <font color=Cyan>(</font>map fst ps<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+                <font color=Red>[</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> fail e+                es <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"one of the following failures occurred:\n"</font>+                           <font color=Cyan>++</font>indent <font color=Magenta>2</font> <font color=Cyan>(</font>concatMap showErr <font color=Cyan>(</font>reverse es<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+          accum errs <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>P p<font color=Cyan>)</font><font color=Red><b>:</b></font>ps<font color=Cyan>)</font> <font color=Red>=</font>+              P <font color=Cyan>(</font><font color=Red>\</font>u ts<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> p u ts <font color=Green><u>of</u></font>+                           <font color=Cyan>(</font>Left err<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>P p<font color=Cyan>)</font> <font color=Red>=</font> accum <font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Red><b>:</b></font>errs<font color=Cyan>)</font> ps+                                             <font color=Green><u>in</u></font> p u ts+                           right          <font color=Red>-&gt;</font> right <font color=Cyan>)</font>+          showErr <font color=Cyan>(</font>name<font color=Cyan>,</font>err<font color=Cyan>)</font> <font color=Red>=</font> name<font color=Cyan>++</font><font color=Magenta>":\n"</font><font color=Cyan>++</font>indent <font color=Magenta>2</font> err++<font color=Blue>-- | Helper for formatting error messages: indents all lines by a fixed amount.</font>+indent <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="indent"></a>indent n <font color=Red>=</font> unlines <font color=Cyan>.</font> map <font color=Cyan>(</font>replicate n <font color=Magenta>' '</font> <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> lines++<font color=Blue>-- | 'optional' indicates whether the parser succeeded through the Maybe type.</font>+optional <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font>+<a name="optional"></a>optional p <font color=Red>=</font> fmap Just p <font color=Cyan>`onFail`</font> return Nothing++<font color=Blue>-- | 'many p' parses a list of elements with individual parser p.</font>+<font color=Blue>--   Cannot fail, since an empty list is a valid return value.</font>+many <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many"></a>many p <font color=Red>=</font> many1 p <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items.</font>+many1 <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="many1"></a>many1 p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"In a sequence:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font><font color=Cyan>.</font> indent <font color=Magenta>2</font><font color=Cyan>)</font>+             <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many p+             <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+             <font color=Cyan>}</font>+<font color=Blue>--       `adjustErr` ("When looking for a non-empty sequence:\n"++)</font>++<font color=Blue>-- | Parse a list of items separated by discarded junk.</font>+sepBy <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t sep <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy"></a>sepBy p sep <font color=Red>=</font> <font color=Green><u>do</u></font> sepBy1 p sep <font color=Cyan>`onFail`</font> return <font color=Red>[</font><font color=Red>]</font>++<font color=Blue>-- | Parse a non-empty list of items separated by discarded junk.</font>+sepBy1 <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t sep <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="sepBy1"></a>sepBy1 p sep <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> p+                  <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+                  <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+                  <font color=Cyan>}</font>+         <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for a non-empty sequence with separators:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+ +<font color=Blue>-- | Parse a list of items, discarding the start, end, and separator</font>+<font color=Blue>--   items.</font>+bracketSep <font color=Red>::</font> Parser s t bra <font color=Red>-&gt;</font> Parser s t sep <font color=Red>-&gt;</font> Parser s t ket+              <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="bracketSep"></a>bracketSep open sep close p <font color=Red>=</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open<font color=Cyan>;</font> close<font color=Cyan>;</font> return <font color=Red>[</font><font color=Red>]</font> <font color=Cyan>}</font>+       <font color=Cyan>`onFail`</font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p  <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"After first bracket in a group:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> xs <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> <font color=Cyan>{</font>sep<font color=Cyan>;</font> p<font color=Cyan>}</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"When looking for closing bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+       <font color=Cyan>}</font>++<font color=Blue>-- | Parse a bracketed item, discarding the brackets.</font>+bracket <font color=Red>::</font> Parser s t bra <font color=Red>-&gt;</font> Parser s t ket <font color=Red>-&gt;</font> Parser s t a <font color=Red>-&gt;</font> Parser s t a+<a name="bracket"></a>bracket open close p <font color=Red>=</font> <font color=Green><u>do</u></font>+    <font color=Green><u>do</u></font> <font color=Cyan>{</font> open    <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Missing opening bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> x <font color=Red>&lt;-</font> p+       <font color=Cyan>;</font> close   <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"Missing closing bracket:\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+       <font color=Cyan>;</font> return x+       <font color=Cyan>}</font>++<font color=Blue>-- | 'manyFinally e t' parses a possibly-empty sequence of e's,</font>+<font color=Blue>--   terminated by a t.  Any parse failures could be due either to</font>+<font color=Blue>--   a badly-formed terminator or a badly-formed element, so raise</font>+<font color=Blue>--   both possible errors.</font>+manyFinally <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> Parser s t z <font color=Red>-&gt;</font> Parser s t <font color=Red>[</font>a<font color=Red>]</font>+<a name="manyFinally"></a>manyFinally pp<font color=Red>@</font><font color=Cyan>(</font>P p<font color=Cyan>)</font> pt<font color=Red>@</font><font color=Cyan>(</font>P t<font color=Cyan>)</font> <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts <font color=Red>-&gt;</font>+    <font color=Green><u>case</u></font> p s ts <font color=Green><u>of</u></font>+        <font color=Cyan>(</font>Left e<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+            <font color=Green><u>case</u></font> t s ts <font color=Green><u>of</u></font>+                <font color=Cyan>(</font>Right <font color=Green><u>_</u></font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+                <font color=Cyan>(</font>Left e<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left e<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font>+        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> s'<font color=Cyan>,</font> ts'<font color=Cyan>)</font> <font color=Red>-&gt;</font>+            <font color=Green><u>let</u></font> <font color=Cyan>(</font>tail<font color=Cyan>,</font>s''<font color=Cyan>,</font>ts''<font color=Cyan>)</font> <font color=Red>=</font> runParser <font color=Cyan>(</font>manyFinally pp pt<font color=Cyan>)</font> s' ts'+            <font color=Green><u>in</u></font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>x<font color=Red><b>:</b></font>tail<font color=Cyan>)</font><font color=Cyan>,</font> s''<font color=Cyan>,</font> ts''<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+<font color=Blue>-- State handling</font>++<font color=Blue>-- | Update the internal state.</font>+stUpdate   <font color=Red>::</font> <font color=Cyan>(</font>s<font color=Red>-&gt;</font>s<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="stUpdate"></a>stUpdate f  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> f s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Query the internal state.</font>+stQuery    <font color=Red>::</font> <font color=Cyan>(</font>s<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> Parser s t a+<a name="stQuery"></a>stQuery f   <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>f s<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>-- | Deliver the entire internal state.</font>+stGet      <font color=Red>::</font> Parser s t s+<a name="stGet"></a>stGet       <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s ts<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right s<font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+<font color=Blue>-- | Push some tokens back onto the front of the input stream and reparse.</font>+<font color=Blue>--   This is useful e.g. for recursively expanding macros.  When the</font>+<font color=Blue>--   user-parser recognises a macro use, it can lookup the macro</font>+<font color=Blue>--   expansion from the parse state, lex it, and then stuff the</font>+<font color=Blue>--   lexed expansion back down into the parser.</font>+reparse    <font color=Red>::</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> Parser s t <font color=Cyan>(</font><font color=Cyan>)</font>+<a name="reparse"></a>reparse ts  <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s inp<font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>,</font> ts<font color=Cyan>++</font>inp<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+</pre>
+ docs/HaXml/src/Text/ParserCombinators/TextParser.html view
@@ -0,0 +1,166 @@+<pre><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>TextParser+  <font color=Cyan>(</font> <font color=Blue>-- * The Parse class is a replacement for the Read class.  It is a</font>+    <font color=Blue>--   specialisation of the (poly) Parser monad for String input.</font>+    TextParser	<font color=Blue>-- synonym for Parser Char, i.e. string input, no state</font>+  <font color=Cyan>,</font> Parse<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>	<font color=Blue>-- instances: (), (a,b), (a,b,c), Maybe a, Either a, [a],</font>+		<font color=Blue>--            Int, Integer, Float, Double, Char, Bool</font>+  <font color=Cyan>,</font> parseByRead	<font color=Blue>-- :: Read a =&gt; String -&gt; TextParser a</font>+    <font color=Blue>-- ** Combinators specific to string input, lexed haskell-style</font>+  <font color=Cyan>,</font> word	<font color=Blue>-- :: TextParser String</font>+  <font color=Cyan>,</font> isWord	<font color=Blue>-- :: String -&gt; TextParser ()</font>+  <font color=Cyan>,</font> optionalParens	<font color=Blue>-- :: TextParser a -&gt; TextParser a</font>+  <font color=Cyan>,</font> field	<font color=Blue>-- :: Parse a =&gt; String -&gt; TextParser a</font>+  <font color=Cyan>,</font> constructors<font color=Blue>-- :: [(String,TextParser a)] -&gt; TextParser a</font>+  <font color=Cyan>,</font> enumeration <font color=Blue>-- :: Show a =&gt; String -&gt; [a] -&gt; TextParser a</font>+    <font color=Blue>-- ** Re-export all the more general combinators too</font>+  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+  <font color=Cyan>)</font> <font color=Green><u>where</u></font>++<font color=Green><u>import</u></font> Char <font color=Cyan>(</font>isSpace<font color=Cyan>)</font>+<font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>+<font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly++<font color=Blue>------------------------------------------------------------------------</font>++<font color=Blue>-- | A synonym for Parser Char, i.e. string input (no state)</font>+<a name="TextParser"></a><font color=Green><u>type</u></font> TextParser a <font color=Red>=</font> Parser Char a++<font color=Blue>-- | The class @Parse@ is a replacement for @Read@, operating over String input.</font>+<font color=Blue>--   Essentially, it permits better error messages for why something failed to</font>+<font color=Blue>--   parse.  It is rather important that @parse@ can read back exactly what</font>+<font color=Blue>--   is generated by the corresponding instance of @show@.</font>+<a name="Parse"></a><font color=Green><u>class</u></font> Parse a <font color=Green><u>where</u></font>+    parse     <font color=Red>::</font> TextParser a+    parseList <font color=Red>::</font> TextParser <font color=Red>[</font>a<font color=Red>]</font>	<font color=Blue>-- only to distinguish [] and ""</font>+    parseList  <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord <font color=Magenta>"[]"</font><font color=Cyan>;</font> return <font color=Red>[</font><font color=Red>]</font> <font color=Cyan>}</font>+                   <font color=Cyan>`onFail`</font>+                 <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord <font color=Magenta>"["</font><font color=Cyan>;</font> isWord <font color=Magenta>"]"</font><font color=Cyan>;</font> return <font color=Red>[</font><font color=Red>]</font> <font color=Cyan>}</font>+                   <font color=Cyan>`onFail`</font>+                 bracketSep <font color=Cyan>(</font>isWord <font color=Magenta>"["</font><font color=Cyan>)</font> <font color=Cyan>(</font>isWord <font color=Magenta>","</font><font color=Cyan>)</font> <font color=Cyan>(</font>isWord <font color=Magenta>"]"</font><font color=Cyan>)</font> parse+                   <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Expected a list, but\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>++<font color=Blue>-- | If there already exists a Read instance for a type, then we can make</font>+<font color=Blue>--   a Parser for it, but with only poor error-reporting.</font>+parseByRead <font color=Red>::</font> Read a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> TextParser a+<a name="parseByRead"></a>parseByRead name <font color=Red>=</font>+    P <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> reads s <font color=Green><u>of</u></font>+                <font color=Red>[</font><font color=Red>]</font>       <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"no parse, expected a "</font><font color=Cyan>++</font>name<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>)</font>+                <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>s'<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right a<font color=Cyan>,</font> s'<font color=Cyan>)</font>+                <font color=Green><u>_</u></font>        <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"ambiguous parse, expected a "</font><font color=Cyan>++</font>name<font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>)</font>+      <font color=Cyan>)</font>++<font color=Blue>-- | One lexical chunk (Haskell-style lexing).</font>+word <font color=Red>::</font> TextParser String+<a name="word"></a>word <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> lex s <font color=Green><u>of</u></font>+                   <font color=Red>[</font><font color=Red>]</font>         <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"no input? (impossible)"</font><font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>)</font>+                   <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>""</font><font color=Cyan>,</font>s'<font color=Cyan>)</font><font color=Red>]</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"no input?"</font><font color=Cyan>)</font><font color=Cyan>,</font> s'<font color=Cyan>)</font>+                   <font color=Cyan>(</font><font color=Cyan>(</font>x<font color=Cyan>,</font>s'<font color=Cyan>)</font><font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font> s'<font color=Cyan>)</font> <font color=Cyan>)</font>++<font color=Blue>-- | Ensure that the next input word is a given string.  (Note the input</font>+<font color=Blue>--   is lexed as haskell, so wordbreaks at spaces, symbols, etc.)</font>+isWord <font color=Red>::</font> String <font color=Red>-&gt;</font> TextParser String+<a name="isWord"></a>isWord w <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> w' <font color=Red>&lt;-</font> word+              <font color=Cyan>;</font> <font color=Green><u>if</u></font> w'<font color=Cyan>==</font>w <font color=Green><u>then</u></font> return w <font color=Green><u>else</u></font> fail <font color=Cyan>(</font><font color=Magenta>"expected "</font><font color=Cyan>++</font>w<font color=Cyan>++</font><font color=Magenta>" got "</font><font color=Cyan>++</font>w'<font color=Cyan>)</font>+              <font color=Cyan>}</font>++<font color=Blue>-- | Allow true string parens around an item.</font>+optionalParens <font color=Red>::</font> TextParser a <font color=Red>-&gt;</font> TextParser a+<a name="optionalParens"></a>optionalParens p <font color=Red>=</font> bracket <font color=Cyan>(</font>isWord <font color=Magenta>"("</font><font color=Cyan>)</font> <font color=Cyan>(</font>isWord <font color=Magenta>")"</font><font color=Cyan>)</font> p <font color=Cyan>`onFail`</font> p++<font color=Blue>-- | Deal with named field syntax.</font>+field <font color=Red>::</font> Parse a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> TextParser a+<a name="field"></a>field name <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord name<font color=Cyan>;</font> commit <font color=Cyan>$</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord <font color=Magenta>"="</font><font color=Cyan>;</font> parse <font color=Cyan>}</font> <font color=Cyan>}</font>++<font color=Blue>-- | Parse one of a bunch of alternative constructors.</font>+constructors <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font>TextParser a<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> TextParser a+<a name="constructors"></a>constructors cs <font color=Red>=</font> oneOf' <font color=Cyan>(</font>map cons cs<font color=Cyan>)</font>+    <font color=Green><u>where</u></font> cons <font color=Cyan>(</font>name<font color=Cyan>,</font>p<font color=Cyan>)</font> <font color=Red>=</font>+               <font color=Cyan>(</font> name+               <font color=Cyan>,</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord name+                    <font color=Cyan>;</font> p <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"got constructor, but within "</font>+                                        <font color=Cyan>++</font>name<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+                    <font color=Cyan>}</font>+               <font color=Cyan>)</font>++<font color=Blue>-- | Parse one of the given nullary constructors (an enumeration).</font>+enumeration <font color=Red>::</font> <font color=Cyan>(</font>Show a<font color=Cyan>)</font> <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> TextParser a+<a name="enumeration"></a>enumeration typ cs <font color=Red>=</font> oneOf <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord <font color=Cyan>(</font>show c<font color=Cyan>)</font><font color=Cyan>;</font> return c <font color=Cyan>}</font><font color=Cyan>)</font> cs<font color=Cyan>)</font>+                         <font color=Cyan>`adjustErr`</font>+                     <font color=Cyan>(</font><font color=Cyan>++</font><font color=Cyan>(</font><font color=Magenta>"\n  expected "</font><font color=Cyan>++</font>typ<font color=Cyan>++</font><font color=Magenta>" value ("</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>")"</font><font color=Cyan>)</font><font color=Cyan>)</font>+    <font color=Green><u>where</u></font> e <font color=Red>=</font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>", "</font> <font color=Cyan>(</font>map show <font color=Cyan>(</font>init cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+              <font color=Cyan>++</font> <font color=Magenta>", or "</font> <font color=Cyan>++</font> show <font color=Cyan>(</font>last cs<font color=Cyan>)</font>++<font color=Blue>------------------------------------------------------------------------</font>+<font color=Blue>-- Instances for all the Standard Prelude types.</font>++<font color=Blue>-- Basic types</font>+<font color=Green><u>instance</u></font> Parse Int <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> parseByRead <font color=Magenta>"Int"</font>+<font color=Green><u>instance</u></font> Parse Integer <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> parseByRead <font color=Magenta>"Integer"</font>+<font color=Green><u>instance</u></font> Parse Float <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> parseByRead <font color=Magenta>"Float"</font>+<font color=Green><u>instance</u></font> Parse Double <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> parseByRead <font color=Magenta>"Double"</font>+<font color=Green><u>instance</u></font> Parse Char <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> parseByRead <font color=Magenta>"Char"</font>+ <font color=Blue>-- parseList = bracket (isWord "\"") (satisfy (=='"'))</font>+ <font color=Blue>--                     (many (satisfy (/='"')))</font>+	<font color=Blue>-- not totally correct for strings...</font>+    parseList <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> w <font color=Red>&lt;-</font> word<font color=Cyan>;</font> <font color=Green><u>if</u></font> head w <font color=Cyan>==</font> <font color=Magenta>'"'</font> <font color=Green><u>then</u></font> return w+                                <font color=Green><u>else</u></font> fail <font color=Magenta>"not a string"</font> <font color=Cyan>}</font>++<font color=Green><u>instance</u></font> Parse Bool <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> enumeration <font color=Magenta>"Bool"</font> <font color=Red>[</font>False<font color=Cyan>,</font>True<font color=Red>]</font>++<font color=Green><u>instance</u></font> Parse Ordering <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> enumeration <font color=Magenta>"Ordering"</font> <font color=Red>[</font>LT<font color=Cyan>,</font>EQ<font color=Cyan>,</font>GT<font color=Red>]</font>++<font color=Blue>-- Structural types</font>+<font color=Green><u>instance</u></font> Parse <font color=Cyan>(</font><font color=Cyan>)</font> <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> P p+      <font color=Green><u>where</u></font> p <font color=Red>[</font><font color=Red>]</font>       <font color=Red>=</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"no input: expected a ()"</font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>+            p <font color=Cyan>(</font><font color=Magenta>'('</font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>case</u></font> dropWhile isSpace cs <font color=Green><u>of</u></font>+                             <font color=Cyan>(</font><font color=Magenta>')'</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Cyan>)</font><font color=Cyan>,</font> s<font color=Cyan>)</font>+                             <font color=Green><u>_</u></font>       <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"Expected ) after ("</font><font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+            p <font color=Cyan>(</font>c<font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>|</font> isSpace c <font color=Red>=</font> p cs+                     <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Cyan>(</font> Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"Expected a (), got "</font><font color=Cyan>++</font>show c<font color=Cyan>)</font>+                                     <font color=Cyan>,</font> <font color=Cyan>(</font>c<font color=Red><b>:</b></font>cs<font color=Cyan>)</font><font color=Cyan>)</font>++<font color=Green><u>instance</u></font> <font color=Cyan>(</font>Parse a<font color=Cyan>,</font> Parse b<font color=Cyan>)</font> <font color=Red>=&gt;</font> Parse <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> <font color=Green><u>do</u></font><font color=Cyan>{</font> isWord <font color=Magenta>"("</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Opening a 2-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> x <font color=Red>&lt;-</font> parse <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"In 1st item of a 2-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> isWord <font color=Magenta>","</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Separating a 2-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> y <font color=Red>&lt;-</font> parse <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"In 2nd item of a 2-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> isWord <font color=Magenta>")"</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Closing a 2-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Cyan>,</font>y<font color=Cyan>)</font> <font color=Cyan>}</font>++<font color=Green><u>instance</u></font> <font color=Cyan>(</font>Parse a<font color=Cyan>,</font> Parse b<font color=Cyan>,</font> Parse c<font color=Cyan>)</font> <font color=Red>=&gt;</font> Parse <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> <font color=Green><u>do</u></font><font color=Cyan>{</font> isWord <font color=Magenta>"("</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Opening a 3-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> x <font color=Red>&lt;-</font> parse <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"In 1st item of a 3-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> isWord <font color=Magenta>","</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Separating(1) a 3-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> y <font color=Red>&lt;-</font> parse <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"In 2nd item of a 3-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> isWord <font color=Magenta>","</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Separating(2) a 3-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> z <font color=Red>&lt;-</font> parse <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"In 3rd item of a 3-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> isWord <font color=Magenta>")"</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"Closing a 3-tuple\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+              <font color=Cyan>;</font> return <font color=Cyan>(</font>x<font color=Cyan>,</font>y<font color=Cyan>,</font>z<font color=Cyan>)</font> <font color=Cyan>}</font>++<font color=Green><u>instance</u></font> Parse a <font color=Red>=&gt;</font> Parse <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord <font color=Magenta>"Nothing"</font><font color=Cyan>;</font> return Nothing <font color=Cyan>}</font>+              <font color=Cyan>`onFail`</font>+            <font color=Green><u>do</u></font> <font color=Cyan>{</font> isWord <font color=Magenta>"Just"</font>+               <font color=Cyan>;</font> fmap Just <font color=Cyan>$</font> optionalParens parse+                     <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"but within Just, "</font><font color=Cyan>++</font><font color=Cyan>)</font>+               <font color=Cyan>}</font>+              <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"expected a Maybe (Just or Nothing)\n"</font><font color=Cyan>++</font><font color=Cyan>)</font><font color=Cyan>.</font>indent <font color=Magenta>2</font><font color=Cyan>)</font>++<font color=Green><u>instance</u></font> <font color=Cyan>(</font>Parse a<font color=Cyan>,</font> Parse b<font color=Cyan>)</font> <font color=Red>=&gt;</font> Parse <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> constructors <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"Left"</font><font color=Cyan>,</font>  <font color=Green><u>do</u></font> <font color=Cyan>{</font> fmap Left  <font color=Cyan>$</font> optionalParens parse <font color=Cyan>}</font> <font color=Cyan>)</font>+                         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"Right"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> fmap Right <font color=Cyan>$</font> optionalParens parse <font color=Cyan>}</font> <font color=Cyan>)</font>+                         <font color=Red>]</font>++<font color=Green><u>instance</u></font> Parse a <font color=Red>=&gt;</font> Parse <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>+    parse <font color=Red>=</font> parseList++<font color=Blue>------------------------------------------------------------------------</font>+</pre>
+ docs/HaXml/src/Text/XML/HaXml.html view
@@ -0,0 +1,40 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Magenta><em>#</em></font>define dummy	<font color=Blue>-- just to ensure cpp gets called on this file</font>+<a name="(line2)"></a><font color=Blue>-- | This is just a convenient way of bunching the XML combinators</font>+<a name="(line3)"></a><font color=Blue>--   together with some other things you are likely to want at the</font>+<a name="(line4)"></a><font color=Blue>--   same time.</font>+<a name="(line5)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml+<a name="(line6)"></a>  <font color=Cyan>(</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line7)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators+<a name="(line8)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse+<a name="(line9)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty+<a name="(line10)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Generate+<a name="(line11)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse+<a name="(line12)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Validate+<a name="(line13)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers+<a name="(line14)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim+<a name="(line15)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape+<a name="(line16)"></a>  <font color=Cyan>,</font> render+<a name="(line17)"></a>  <font color=Cyan>,</font> version+<a name="(line18)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line19)"></a>+<a name="(line20)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line21)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators+<a name="(line22)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse       <font color=Cyan>(</font>xmlParse<font color=Cyan>,</font>dtdParse<font color=Cyan>)</font>+<a name="(line23)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty      <font color=Cyan>(</font>element<font color=Cyan>)</font>+<a name="(line24)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Generate+<a name="(line25)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse  <font color=Cyan>(</font>htmlParse<font color=Cyan>)</font>+<a name="(line26)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Validate    <font color=Cyan>(</font>validate<font color=Cyan>)</font>+<a name="(line27)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers    <font color=Cyan>(</font>fix2Args<font color=Cyan>,</font>processXmlWith<font color=Cyan>)</font>+<a name="(line28)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim+<a name="(line29)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape+<a name="(line30)"></a>+<a name="(line31)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ  <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="(line32)"></a>+<a name="(line33)"></a><a name="version"></a><font color=Blue>-- | The version of the library.</font>+<a name="(line34)"></a>version <font color=Red>::</font> String+<a name="(line35)"></a>version  <font color=Red>=</font> show VERSION+<a name="(line36)"></a>		<font color=Blue>-- expect cpp to fill in value</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/ByteStringPP.html view
@@ -0,0 +1,301 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This is a fast non-pretty-printer for turning the internal representation</font>+<a name="(line2)"></a><font color=Blue>--   of generic structured XML documents into Lazy ByteStrings.</font>+<a name="(line3)"></a><font color=Blue>--   Like in Text.Xml.HaXml.Pretty, there is one pp function for each type in</font>+<a name="(line4)"></a><font color=Blue>--   Text.Xml.HaXml.Types, so you can pretty-print as much or as little</font>+<a name="(line5)"></a><font color=Blue>--   of the document as you wish.</font>+<a name="(line6)"></a>+<a name="(line7)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP+<a name="(line8)"></a>  <font color=Cyan>(</font>+<a name="(line9)"></a>  <font color=Blue>-- * Pretty-print a whole document</font>+<a name="(line10)"></a>    document+<a name="(line11)"></a>  <font color=Blue>-- ** Just one content</font>+<a name="(line12)"></a>  <font color=Cyan>,</font>   content+<a name="(line13)"></a>  <font color=Blue>-- ** Just one tagged element</font>+<a name="(line14)"></a>  <font color=Cyan>,</font>   element+<a name="(line15)"></a>  <font color=Blue>-- * Pretty-print just a DTD</font>+<a name="(line16)"></a>  <font color=Cyan>,</font> doctypedecl+<a name="(line17)"></a>  <font color=Blue>-- ** The prolog</font>+<a name="(line18)"></a>  <font color=Cyan>,</font>   prolog+<a name="(line19)"></a>  <font color=Blue>-- ** A content particle description</font>+<a name="(line20)"></a>  <font color=Cyan>,</font>   cp+<a name="(line21)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line22)"></a>+<a name="(line23)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>maybe<font color=Cyan>,</font>either<font color=Cyan>,</font>elem<font color=Cyan>)</font>+<a name="(line24)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line25)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font> +<a name="(line26)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy hiding <font color=Cyan>(</font>pack<font color=Cyan>,</font>map<font color=Cyan>,</font>head<font color=Cyan>,</font>any<font color=Cyan>,</font>singleton<font color=Cyan>)</font>+<a name="(line27)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Cyan>(</font>pack<font color=Cyan>,</font> singleton<font color=Cyan>,</font> join<font color=Cyan>)</font>+<a name="(line28)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line29)"></a>+<a name="(line30)"></a><a name="either"></a>either f g <font color=Cyan>(</font>Left x<font color=Cyan>)</font>  <font color=Red>=</font> f x+<a name="(line31)"></a>either f g <font color=Cyan>(</font>Right x<font color=Cyan>)</font> <font color=Red>=</font> g x+<a name="(line32)"></a>+<a name="(line33)"></a><a name="maybe"></a>maybe f Nothing  <font color=Red>=</font> empty+<a name="(line34)"></a>maybe f <font color=Cyan>(</font>Just x<font color=Cyan>)</font> <font color=Red>=</font> f x+<a name="(line35)"></a>+<a name="(line36)"></a>+<a name="(line37)"></a><font color=Blue>-- A simple implementation of the pretty-printing combinator interface,</font>+<a name="(line38)"></a><font color=Blue>-- but for plain ByteStrings:</font>+<a name="(line39)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan>&lt;&gt;</font> +<a name="(line40)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line41)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>5</font> <font color=Cyan>$$</font><font color=Cyan>,</font> <font color=Cyan>$+$</font>+<a name="(line42)"></a><a name="<>"></a><font color=Cyan>(</font><font color=Cyan>&lt;&gt;</font><font color=Cyan>)</font>   <font color=Red>::</font> ByteString   <font color=Red>-&gt;</font> ByteString <font color=Red>-&gt;</font> ByteString <font color=Blue>-- Beside</font>+<a name="(line43)"></a><a name="hcat"></a>hcat   <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-&gt;</font> ByteString		   <font color=Blue>-- List version of &lt;&gt;</font>+<a name="(line44)"></a><a name="<+>"></a><font color=Cyan>(</font><font color=Cyan>&lt;+&gt;</font><font color=Cyan>)</font>  <font color=Red>::</font> ByteString   <font color=Red>-&gt;</font> ByteString <font color=Red>-&gt;</font> ByteString <font color=Blue>-- Beside, separated by space</font>+<a name="(line45)"></a><a name="hsep"></a>hsep   <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-&gt;</font> ByteString		   <font color=Blue>-- List version of &lt;+&gt;</font>+<a name="(line46)"></a><a name="$$"></a><font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font>   <font color=Red>::</font> ByteString   <font color=Red>-&gt;</font> ByteString <font color=Red>-&gt;</font> ByteString <font color=Blue>-- Above; if there is no</font>+<a name="(line47)"></a>                                                   <font color=Blue>-- overlap, it "dovetails"</font>+<a name="(line48)"></a><a name="vcat"></a>vcat   <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-&gt;</font> ByteString       <font color=Blue>-- List version of $$</font>+<a name="(line49)"></a><a name="cat"></a>cat    <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-&gt;</font> ByteString       <font color=Blue>-- Either hcat or vcat</font>+<a name="(line50)"></a><a name="sep"></a>sep    <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-&gt;</font> ByteString       <font color=Blue>-- Either hsep or vcat</font>+<a name="(line51)"></a><a name="fcat"></a>fcat   <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-&gt;</font> ByteString       <font color=Blue>-- ``Paragraph fill'' version of cat</font>+<a name="(line52)"></a><a name="fsep"></a>fsep   <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-&gt;</font> ByteString       <font color=Blue>-- ``Paragraph fill'' version of sep</font>+<a name="(line53)"></a><a name="nest"></a>nest   <font color=Red>::</font> Int <font color=Red>-&gt;</font> ByteString <font color=Red>-&gt;</font> ByteString  <font color=Blue>-- Nested</font>+<a name="(line54)"></a>+<a name="(line55)"></a><font color=Cyan>(</font><font color=Cyan>&lt;&gt;</font><font color=Cyan>)</font>  b1 b2  <font color=Red>=</font> b1 <font color=Cyan>`append`</font> b2+<a name="(line56)"></a><font color=Cyan>(</font><font color=Cyan>&lt;+&gt;</font><font color=Cyan>)</font> b1 b2  <font color=Red>=</font> b1 <font color=Cyan>&lt;&gt;</font> pack <font color=Magenta>" "</font> <font color=Cyan>&lt;&gt;</font> b2+<a name="(line57)"></a><font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font>  b1 b2  <font color=Red>=</font> b1 <font color=Cyan>&lt;&gt;</font> pack <font color=Magenta>"\n"</font> <font color=Cyan>&lt;&gt;</font> b2+<a name="(line58)"></a><a name="$+$"></a><font color=Cyan>(</font><font color=Cyan>$+$</font><font color=Cyan>)</font>        <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font>+<a name="(line59)"></a>+<a name="(line60)"></a>hcat <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>concat +<a name="(line61)"></a>hsep <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8<font color=Cyan>.</font>join <font color=Cyan>(</font>singleton <font color=Magenta>' '</font><font color=Cyan>)</font>+<a name="(line62)"></a>vcat <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8<font color=Cyan>.</font>join <font color=Cyan>(</font>singleton <font color=Magenta>'\n'</font><font color=Cyan>)</font>+<a name="(line63)"></a>cat  <font color=Red>=</font> hcat+<a name="(line64)"></a>sep  <font color=Red>=</font> hsep+<a name="(line65)"></a><a name="text"></a>text <font color=Red>=</font> pack+<a name="(line66)"></a>fcat <font color=Red>=</font> cat+<a name="(line67)"></a>fsep <font color=Red>=</font> sep+<a name="(line68)"></a>nest <font color=Green><u>_</u></font> b <font color=Red>=</font> pack <font color=Magenta>" "</font> <font color=Cyan>&lt;&gt;</font> b+<a name="(line69)"></a><a name="parens"></a>parens p <font color=Red>=</font> pack <font color=Magenta>"("</font> <font color=Cyan>&lt;&gt;</font> p <font color=Cyan>&lt;&gt;</font> pack <font color=Magenta>")"</font>+<a name="(line70)"></a>+<a name="(line71)"></a>+<a name="(line72)"></a><font color=Blue>----</font>+<a name="(line73)"></a><font color=Blue>-- Now for the XML pretty-printing interface.</font>+<a name="(line74)"></a><font color=Blue>-- (Basically copied direct from Text.XML.HaXml.Pretty).</font>+<a name="(line75)"></a>+<a name="(line76)"></a><a name="document"></a>document <font color=Red>::</font> Document i <font color=Red>-&gt;</font> ByteString+<a name="(line77)"></a><a name="prolog"></a>prolog   <font color=Red>::</font> Prolog     <font color=Red>-&gt;</font> ByteString+<a name="(line78)"></a><a name="xmldecl"></a>xmldecl  <font color=Red>::</font> XMLDecl    <font color=Red>-&gt;</font> ByteString+<a name="(line79)"></a><a name="misc"></a>misc     <font color=Red>::</font> Misc       <font color=Red>-&gt;</font> ByteString+<a name="(line80)"></a><a name="sddecl"></a>sddecl   <font color=Red>::</font> Bool       <font color=Red>-&gt;</font> ByteString+<a name="(line81)"></a>+<a name="(line82)"></a><a name="doctypedecl"></a>doctypedecl   <font color=Red>::</font> DocTypeDecl   <font color=Red>-&gt;</font> ByteString+<a name="(line83)"></a><a name="markupdecl"></a>markupdecl    <font color=Red>::</font> MarkupDecl    <font color=Red>-&gt;</font> ByteString+<a name="(line84)"></a><a name="extsubset"></a>extsubset     <font color=Red>::</font> ExtSubset     <font color=Red>-&gt;</font> ByteString+<a name="(line85)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> ExtSubsetDecl <font color=Red>-&gt;</font> ByteString+<a name="(line86)"></a><a name="cp"></a>cp            <font color=Red>::</font> CP            <font color=Red>-&gt;</font> ByteString+<a name="(line87)"></a>+<a name="(line88)"></a><a name="element"></a>element   <font color=Red>::</font> Element i <font color=Red>-&gt;</font> ByteString+<a name="(line89)"></a><a name="attribute"></a>attribute <font color=Red>::</font> Attribute <font color=Red>-&gt;</font> ByteString+<a name="(line90)"></a><a name="content"></a>content   <font color=Red>::</font> Content i <font color=Red>-&gt;</font> ByteString+<a name="(line91)"></a>+<a name="(line92)"></a><font color=Blue>----</font>+<a name="(line93)"></a>+<a name="(line94)"></a>document <font color=Cyan>(</font>Document p <font color=Green><u>_</u></font> e m<font color=Cyan>)</font><font color=Red>=</font> prolog p <font color=Cyan>$$</font> element e <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m<font color=Cyan>)</font>+<a name="(line95)"></a>prolog <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font><font color=Red>=</font> maybe xmldecl x <font color=Cyan>$$</font>+<a name="(line96)"></a>                             vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m1<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line97)"></a>                             maybe doctypedecl dtd <font color=Cyan>$$</font>+<a name="(line98)"></a>                             vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m2<font color=Cyan>)</font>+<a name="(line99)"></a>xmldecl <font color=Cyan>(</font>XMLDecl v e sd<font color=Cyan>)</font>   <font color=Red>=</font> text <font color=Magenta>"&lt;?xml version='"</font> <font color=Cyan>&lt;&gt;</font> text v <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line100)"></a>                             maybe encodingdecl e <font color=Cyan>&lt;+&gt;</font>+<a name="(line101)"></a>                             maybe sddecl sd <font color=Cyan>&lt;+&gt;</font>+<a name="(line102)"></a>                             text <font color=Magenta>"?&gt;"</font>+<a name="(line103)"></a>misc <font color=Cyan>(</font>Comment s<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!--"</font> <font color=Cyan>&lt;+&gt;</font> text s <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"--&gt;"</font>+<a name="(line104)"></a>misc <font color=Cyan>(</font>PI <font color=Cyan>(</font>n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"&lt;?"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> text s <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line105)"></a>sddecl sd   <font color=Red>|</font> sd           <font color=Red>=</font> text <font color=Magenta>"standalone='yes'"</font>+<a name="(line106)"></a>            <font color=Red>|</font> otherwise    <font color=Red>=</font> text <font color=Magenta>"standalone='no'"</font>+<a name="(line107)"></a>doctypedecl <font color=Cyan>(</font>DTD n eid ds<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>if</u></font> Prelude<font color=Cyan>.</font>null ds <font color=Green><u>then</u></font> +<a name="(line108)"></a>                                  hd <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line109)"></a>                             <font color=Green><u>else</u></font> hd <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>" ["</font> <font color=Cyan>$$</font>+<a name="(line110)"></a>                                  vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map markupdecl ds<font color=Cyan>)</font> <font color=Cyan>$$</font> text <font color=Magenta>"]&gt;"</font>+<a name="(line111)"></a>                           <font color=Green><u>where</u></font> hd <font color=Red>=</font> text <font color=Magenta>"&lt;!DOCTYPE"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line112)"></a>                                      maybe externalid eid+<a name="(line113)"></a>markupdecl <font color=Cyan>(</font>Element e<font color=Cyan>)</font>     <font color=Red>=</font> elementdecl e+<a name="(line114)"></a>markupdecl <font color=Cyan>(</font>AttList a<font color=Cyan>)</font>     <font color=Red>=</font> attlistdecl a+<a name="(line115)"></a>markupdecl <font color=Cyan>(</font>Entity e<font color=Cyan>)</font>      <font color=Red>=</font> entitydecl e+<a name="(line116)"></a>markupdecl <font color=Cyan>(</font>Notation n<font color=Cyan>)</font>    <font color=Red>=</font> notationdecl n+<a name="(line117)"></a>markupdecl <font color=Cyan>(</font>MarkupMisc m<font color=Cyan>)</font>  <font color=Red>=</font> misc m+<a name="(line118)"></a><font color=Blue>--markupdecl (MarkupPE p m)  = peref p</font>+<a name="(line119)"></a>extsubset <font color=Cyan>(</font>ExtSubset t ds<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan>$$</font>+<a name="(line120)"></a>                             vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl ds<font color=Cyan>)</font>+<a name="(line121)"></a>extsubsetdecl <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font>      <font color=Red>=</font> markupdecl m+<a name="(line122)"></a>extsubsetdecl <font color=Cyan>(</font>ExtConditionalSect c<font color=Cyan>)</font> <font color=Red>=</font> conditionalsect c+<a name="(line123)"></a><font color=Blue>--extsubsetdecl (ExtPEReference p e)   = peref p</font>+<a name="(line124)"></a>+<a name="(line125)"></a>element <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line126)"></a>                         fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"/&gt;"</font>+<a name="(line127)"></a>element e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font>+<a name="(line128)"></a><font color=Blue>--  | any isText cs    = text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as) &lt;&gt;</font>+<a name="(line129)"></a><font color=Blue>--                       text "&gt;" &lt;&gt; hcat (map content cs) &lt;&gt;</font>+<a name="(line130)"></a><font color=Blue>--                       text "&lt;/" &lt;&gt; text n &lt;&gt; text "&gt;"</font>+<a name="(line131)"></a>    <font color=Red>|</font> isText <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line132)"></a>                         text <font color=Magenta>"&gt;"</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map content cs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line133)"></a>                         text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line134)"></a>    <font color=Red>|</font> otherwise        <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> carryelem e empty+<a name="(line135)"></a>                         <font color=Green><u>in</u></font> d <font color=Cyan>&lt;&gt;</font> c+<a name="(line136)"></a>+<a name="(line137)"></a><a name="isText"></a>isText <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line138)"></a>isText <font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> True+<a name="(line139)"></a>isText <font color=Green><u>_</u></font>               <font color=Red>=</font> False+<a name="(line140)"></a>+<a name="(line141)"></a><a name="carryelem"></a>carryelem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> c+<a name="(line142)"></a>                       <font color=Red>=</font> <font color=Cyan>(</font> c <font color=Cyan>&lt;&gt;</font>+<a name="(line143)"></a>                           text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line144)"></a>                         <font color=Cyan>,</font> text <font color=Magenta>"/&gt;"</font><font color=Cyan>)</font>+<a name="(line145)"></a>carryelem e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> c+<a name="(line146)"></a><font color=Blue>--  | any isText cs    =  ( c &lt;&gt; element e, empty)</font>+<a name="(line147)"></a>    <font color=Red>|</font> otherwise        <font color=Red>=</font>  <font color=Green><u>let</u></font> <font color=Cyan>(</font>cs0<font color=Cyan>,</font>d0<font color=Cyan>)</font> <font color=Red>=</font> carryscan carrycontent cs <font color=Cyan>(</font>text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line148)"></a>                          <font color=Green><u>in</u></font>+<a name="(line149)"></a>                          <font color=Cyan>(</font> c <font color=Cyan>&lt;&gt;</font>+<a name="(line150)"></a>                            text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line151)"></a>                            nest <font color=Magenta>2</font> <font color=Cyan>(</font>vcat cs0<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> <font color=Blue>--- $$</font>+<a name="(line152)"></a>                            d0 <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n+<a name="(line153)"></a>                          <font color=Cyan>,</font> text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line154)"></a><a name="carrycontent"></a>carrycontent <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font> c   <font color=Red>=</font> carryelem e c+<a name="(line155)"></a>carrycontent <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> chardata s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line156)"></a>carrycontent <font color=Cyan>(</font>CString True  s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> cdsect s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line157)"></a>carrycontent <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font> c    <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> reference r<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line158)"></a>carrycontent <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font> c   <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> misc m<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line159)"></a>+<a name="(line160)"></a><a name="carryscan"></a>carryscan <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>c<font color=Red>-&gt;</font><font color=Cyan>(</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> c <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line161)"></a>carryscan f []     c <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line162)"></a>carryscan f <font color=Cyan>(</font>a<font color=Red><b>:</b></font><font color=Green><u>as</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>b<font color=Cyan>,</font> c0<font color=Cyan>)</font> <font color=Red>=</font> f a c+<a name="(line163)"></a>                           <font color=Cyan>(</font>bs<font color=Cyan>,</font>c1<font color=Cyan>)</font> <font color=Red>=</font> carryscan f <font color=Green><u>as</u></font> c0+<a name="(line164)"></a>                       <font color=Green><u>in</u></font> <font color=Cyan>(</font>b<font color=Red><b>:</b></font>bs<font color=Cyan>,</font> c1<font color=Cyan>)</font>+<a name="(line165)"></a>+<a name="(line166)"></a><font color=Blue>--carryelem e@(Elem n as cs) c</font>+<a name="(line167)"></a><font color=Blue>--  | isText (head cs) =</font>+<a name="(line168)"></a><font color=Blue>--        ( start &lt;&gt;</font>+<a name="(line169)"></a><font color=Blue>--          text "&gt;" &lt;&gt; hcat (map content cs) &lt;&gt; text "&lt;/" &lt;&gt; text n</font>+<a name="(line170)"></a><font color=Blue>--        , text "&gt;")</font>+<a name="(line171)"></a><font color=Blue>--  | otherwise =</font>+<a name="(line172)"></a><font color=Blue>--        let (d,c0) = foldl carrycontent (start, text "&gt;") cs in</font>+<a name="(line173)"></a><font color=Blue>--        ( d &lt;&gt; c0 &lt;&gt; text "&lt;/" &lt;&gt; text n</font>+<a name="(line174)"></a><font color=Blue>--        , text "&gt;")</font>+<a name="(line175)"></a><font color=Blue>--  where start = c &lt;&gt; text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as)</font>+<a name="(line176)"></a><font color=Blue>--</font>+<a name="(line177)"></a><font color=Blue>--carrycontent (d,c) (CElem e)   = let (d',c') = carryelem e c in</font>+<a name="(line178)"></a><font color=Blue>--                                 (d $$ nest 2 d',       c')</font>+<a name="(line179)"></a><font color=Blue>--carrycontent (d,c) (CString _ s) = (d &lt;&gt; c &lt;&gt; chardata s, empty)</font>+<a name="(line180)"></a><font color=Blue>--carrycontent (d,c) (CRef r)    = (d &lt;&gt; c &lt;&gt; reference r,empty)</font>+<a name="(line181)"></a><font color=Blue>--carrycontent (d,c) (CMisc m)   = (d $$ c &lt;&gt; misc m,     empty)</font>+<a name="(line182)"></a>+<a name="(line183)"></a>+<a name="(line184)"></a>attribute <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font>             <font color=Red>=</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;&gt;</font> attvalue v+<a name="(line185)"></a>content <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font>         <font color=Red>=</font> element e+<a name="(line186)"></a>content <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> chardata s+<a name="(line187)"></a>content <font color=Cyan>(</font>CString True s <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> cdsect s+<a name="(line188)"></a>content <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font>          <font color=Red>=</font> reference r+<a name="(line189)"></a>content <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font>         <font color=Red>=</font> misc m+<a name="(line190)"></a>+<a name="(line191)"></a><a name="elementdecl"></a>elementdecl <font color=Cyan>(</font>ElementDecl n cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ELEMENT"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line192)"></a>                                 contentspec cs <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line193)"></a><a name="contentspec"></a>contentspec EMPTY              <font color=Red>=</font> text <font color=Magenta>"EMPTY"</font>+<a name="(line194)"></a>contentspec ANY                <font color=Red>=</font> text <font color=Magenta>"ANY"</font>+<a name="(line195)"></a>contentspec <font color=Cyan>(</font>Mixed m<font color=Cyan>)</font>          <font color=Red>=</font> mixed m+<a name="(line196)"></a>contentspec <font color=Cyan>(</font>ContentSpec c<font color=Cyan>)</font>    <font color=Red>=</font> cp c+<a name="(line197)"></a><font color=Blue>--contentspec (ContentPE p cs)   = peref p</font>+<a name="(line198)"></a>cp <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font>       <font color=Red>=</font> text n <font color=Cyan>&lt;&gt;</font> modifier m+<a name="(line199)"></a>cp <font color=Cyan>(</font>Choice cs m<font color=Cyan>)</font>       <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line200)"></a>                           modifier m+<a name="(line201)"></a>cp <font color=Cyan>(</font>Seq cs m<font color=Cyan>)</font>          <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>","</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line202)"></a>                           modifier m+<a name="(line203)"></a><a name="modifier"></a><font color=Blue>--cp (CPPE p c)          = peref p</font>+<a name="(line204)"></a>modifier None          <font color=Red>=</font> empty+<a name="(line205)"></a>modifier Query         <font color=Red>=</font> text <font color=Magenta>"?"</font>+<a name="(line206)"></a>modifier Star          <font color=Red>=</font> text <font color=Magenta>"*"</font>+<a name="(line207)"></a>modifier Plus          <font color=Red>=</font> text <font color=Magenta>"+"</font>+<a name="(line208)"></a><a name="mixed"></a>mixed  PCDATA          <font color=Red>=</font> text <font color=Magenta>"(#PCDATA)"</font>+<a name="(line209)"></a>mixed <font color=Cyan>(</font>PCDATAplus ns<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"(#PCDATA |"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line210)"></a>                         hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line211)"></a>                         text <font color=Magenta>")*"</font>+<a name="(line212)"></a>+<a name="(line213)"></a><a name="attlistdecl"></a>attlistdecl <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ATTLIST"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line214)"></a>                                 fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attdef ds<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line215)"></a><a name="attdef"></a>attdef <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font>          <font color=Red>=</font> text n <font color=Cyan>&lt;+&gt;</font> atttype t <font color=Cyan>&lt;+&gt;</font> defaultdecl d+<a name="(line216)"></a><a name="atttype"></a>atttype  StringType            <font color=Red>=</font> text <font color=Magenta>"CDATA"</font>+<a name="(line217)"></a>atttype <font color=Cyan>(</font>TokenizedType t<font color=Cyan>)</font>      <font color=Red>=</font> tokenizedtype t+<a name="(line218)"></a>atttype <font color=Cyan>(</font>EnumeratedType t<font color=Cyan>)</font>     <font color=Red>=</font> enumeratedtype t+<a name="(line219)"></a><a name="tokenizedtype"></a>tokenizedtype ID               <font color=Red>=</font> text <font color=Magenta>"ID"</font>+<a name="(line220)"></a>tokenizedtype IDREF            <font color=Red>=</font> text <font color=Magenta>"IDREF"</font>+<a name="(line221)"></a>tokenizedtype IDREFS           <font color=Red>=</font> text <font color=Magenta>"IDREFS"</font>+<a name="(line222)"></a>tokenizedtype ENTITY           <font color=Red>=</font> text <font color=Magenta>"ENTITY"</font>+<a name="(line223)"></a>tokenizedtype ENTITIES         <font color=Red>=</font> text <font color=Magenta>"ENTITIES"</font>+<a name="(line224)"></a>tokenizedtype NMTOKEN          <font color=Red>=</font> text <font color=Magenta>"NMTOKEN"</font>+<a name="(line225)"></a>tokenizedtype NMTOKENS         <font color=Red>=</font> text <font color=Magenta>"NMTOKENS"</font>+<a name="(line226)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Cyan>(</font>NotationType n<font color=Cyan>)</font><font color=Red>=</font> notationtype n+<a name="(line227)"></a>enumeratedtype <font color=Cyan>(</font>Enumeration e<font color=Cyan>)</font> <font color=Red>=</font> enumeration e+<a name="(line228)"></a><a name="notationtype"></a>notationtype ns                <font color=Red>=</font> text <font color=Magenta>"NOTATION"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line229)"></a>                                 parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line230)"></a><a name="enumeration"></a>enumeration ns                 <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map nmtoken ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line231)"></a><a name="defaultdecl"></a>defaultdecl  REQUIRED          <font color=Red>=</font> text <font color=Magenta>"#REQUIRED"</font>+<a name="(line232)"></a>defaultdecl  IMPLIED           <font color=Red>=</font> text <font color=Magenta>"#IMPLIED"</font>+<a name="(line233)"></a>defaultdecl <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font>    <font color=Red>=</font> maybe <font color=Cyan>(</font>const <font color=Cyan>(</font>text <font color=Magenta>"#FIXED"</font><font color=Cyan>)</font><font color=Cyan>)</font> f <font color=Cyan>&lt;+&gt;</font> attvalue a+<a name="(line234)"></a><a name="conditionalsect"></a>conditionalsect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Red>=</font> text <font color=Magenta>"&lt;![INCLUDE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line235)"></a>                                 vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line236)"></a>conditionalsect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![IGNORE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line237)"></a>                                 fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ignoresectcontents i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line238)"></a><a name="ignore"></a>ignore <font color=Cyan>(</font>Ignore<font color=Cyan>)</font>                <font color=Red>=</font> empty+<a name="(line239)"></a><a name="ignoresectcontents"></a>ignoresectcontents <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>+<a name="(line240)"></a>                               <font color=Red>=</font> ignore i <font color=Cyan>&lt;+&gt;</font> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map internal is<font color=Cyan>)</font>+<a name="(line241)"></a>                          <font color=Green><u>where</u></font> internal <font color=Cyan>(</font>ics<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line242)"></a>                                                   ignoresectcontents ics <font color=Cyan>&lt;+&gt;</font>+<a name="(line243)"></a>                                                   text <font color=Magenta>"]]&gt;"</font> <font color=Cyan>&lt;+&gt;</font> ignore i+<a name="(line244)"></a><a name="reference"></a>reference <font color=Cyan>(</font>RefEntity er<font color=Cyan>)</font>       <font color=Red>=</font> entityref er+<a name="(line245)"></a>reference <font color=Cyan>(</font>RefChar cr<font color=Cyan>)</font>         <font color=Red>=</font> charref cr+<a name="(line246)"></a><a name="entityref"></a>entityref n                    <font color=Red>=</font> text <font color=Magenta>"&amp;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line247)"></a><a name="charref"></a>charref c                      <font color=Red>=</font> text <font color=Magenta>"&amp;#"</font> <font color=Cyan>&lt;&gt;</font> text <font color=Cyan>(</font>show c<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line248)"></a><a name="entitydecl"></a>entitydecl <font color=Cyan>(</font>EntityGEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> gedecl d+<a name="(line249)"></a>entitydecl <font color=Cyan>(</font>EntityPEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> pedecl d+<a name="(line250)"></a><a name="gedecl"></a>gedecl <font color=Cyan>(</font>GEDecl n ed<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> entitydef ed <font color=Cyan>&lt;&gt;</font>+<a name="(line251)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line252)"></a><a name="pedecl"></a>pedecl <font color=Cyan>(</font>PEDecl n pd<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY %"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> pedef pd <font color=Cyan>&lt;&gt;</font>+<a name="(line253)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line254)"></a><a name="entitydef"></a>entitydef <font color=Cyan>(</font>DefEntityValue ev<font color=Cyan>)</font>  <font color=Red>=</font> entityvalue ev+<a name="(line255)"></a>entitydef <font color=Cyan>(</font>DefExternalID i nd<font color=Cyan>)</font> <font color=Red>=</font> externalid i <font color=Cyan>&lt;+&gt;</font> maybe ndatadecl nd+<a name="(line256)"></a><a name="pedef"></a>pedef <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font>    <font color=Red>=</font> entityvalue ev+<a name="(line257)"></a>pedef <font color=Cyan>(</font>PEDefExternalID eid<font color=Cyan>)</font>    <font color=Red>=</font> externalid eid+<a name="(line258)"></a><a name="externalid"></a>externalid <font color=Cyan>(</font>SYSTEM sl<font color=Cyan>)</font>         <font color=Red>=</font> text <font color=Magenta>"SYSTEM"</font> <font color=Cyan>&lt;+&gt;</font> systemliteral sl+<a name="(line259)"></a>externalid <font color=Cyan>(</font>PUBLIC i sl<font color=Cyan>)</font>       <font color=Red>=</font> text <font color=Magenta>"PUBLIC"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral i <font color=Cyan>&lt;+&gt;</font>+<a name="(line260)"></a>                                 systemliteral sl+<a name="(line261)"></a><a name="ndatadecl"></a>ndatadecl <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"NDATA"</font> <font color=Cyan>&lt;+&gt;</font> text n+<a name="(line262)"></a><a name="textdecl"></a>textdecl <font color=Cyan>(</font>TextDecl vi ed<font color=Cyan>)</font>      <font color=Red>=</font> text <font color=Magenta>"&lt;?xml"</font> <font color=Cyan>&lt;+&gt;</font> maybe text vi <font color=Cyan>&lt;+&gt;</font>+<a name="(line263)"></a>                                 encodingdecl ed <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line264)"></a><a name="extparsedent"></a>extparsedent <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font><font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font> content c+<a name="(line265)"></a><a name="extpe"></a>extpe <font color=Cyan>(</font>ExtPE t esd<font color=Cyan>)</font>            <font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font>+<a name="(line266)"></a>                                 vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl esd<font color=Cyan>)</font>+<a name="(line267)"></a><a name="notationdecl"></a>notationdecl <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>    <font color=Red>=</font> text <font color=Magenta>"&lt;!NOTATION"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line268)"></a>                                 either externalid publicid e <font color=Cyan>&lt;&gt;</font>+<a name="(line269)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line270)"></a><a name="publicid"></a>publicid <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>          <font color=Red>=</font> text <font color=Magenta>"PUBLICID"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral p+<a name="(line271)"></a><a name="encodingdecl"></a>encodingdecl <font color=Cyan>(</font>EncodingDecl s<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"encoding='"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line272)"></a><a name="nmtoken"></a>nmtoken s                      <font color=Red>=</font> text s+<a name="(line273)"></a><a name="attvalue"></a>attvalue <font color=Cyan>(</font>AttValue esr<font color=Cyan>)</font>        <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line274)"></a>                                 hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map <font color=Cyan>(</font>either text reference<font color=Cyan>)</font> esr<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line275)"></a>                                 text <font color=Magenta>"\""</font>+<a name="(line276)"></a><a name="entityvalue"></a>entityvalue <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>+<a name="(line277)"></a>  <font color=Red>|</font> containsDoubleQuote evs    <font color=Red>=</font> text <font color=Magenta>"'"</font>  <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ev evs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line278)"></a>  <font color=Red>|</font> otherwise                  <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ev evs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line279)"></a><a name="ev"></a>ev <font color=Cyan>(</font>EVString s<font color=Cyan>)</font>                <font color=Red>=</font> text s+<a name="(line280)"></a><font color=Blue>--ev (EVPERef p e)               = peref p</font>+<a name="(line281)"></a>ev <font color=Cyan>(</font>EVRef r<font color=Cyan>)</font>                   <font color=Red>=</font> reference r+<a name="(line282)"></a><a name="pubidliteral"></a>pubidliteral <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>+<a name="(line283)"></a>    <font color=Red>|</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line284)"></a>    <font color=Red>|</font> otherwise                <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line285)"></a><a name="systemliteral"></a>systemliteral <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>+<a name="(line286)"></a>    <font color=Red>|</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line287)"></a>    <font color=Red>|</font> otherwise                <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line288)"></a><a name="chardata"></a>chardata s                     <font color=Red>=</font> <font color=Blue>{-if all isSpace s then empty else-}</font> text s+<a name="(line289)"></a><a name="cdsect"></a>cdsect c                       <font color=Red>=</font> text <font color=Magenta>"&lt;![CDATA["</font> <font color=Cyan>&lt;&gt;</font> chardata c <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line290)"></a>+<a name="(line291)"></a><a name="toWord8"></a><font color=Blue>--toWord8 :: Char -&gt; Word8</font>+<a name="(line292)"></a>toWord8 <font color=Red>=</font> toEnum <font color=Cyan>.</font> fromEnum+<a name="(line293)"></a>+<a name="(line294)"></a><a name="containsDoubleQuote"></a><font color=Blue>----</font>+<a name="(line295)"></a>containsDoubleQuote evs <font color=Red>=</font> any csq evs+<a name="(line296)"></a>    <font color=Green><u>where</u></font> csq <font color=Cyan>(</font>EVString s<font color=Cyan>)</font> <font color=Red>=</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font>+<a name="(line297)"></a>          csq <font color=Green><u>_</u></font>            <font color=Red>=</font> False+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Combinators.html view
@@ -0,0 +1,428 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>--------------------------------------------</font>+<a name="(line2)"></a><font color=Blue>-- | This module defines the notion of filters and filter combinators</font>+<a name="(line3)"></a><font color=Blue>--   for processing XML documents.</font>+<a name="(line4)"></a><font color=Blue>--</font>+<a name="(line5)"></a><font color=Blue>--   These XML transformation combinators are described in the paper</font>+<a name="(line6)"></a><font color=Blue>--   ``Haskell and XML: Generic Combinators or Type-Based Translation?''</font>+<a name="(line7)"></a><font color=Blue>--   Malcolm Wallace and Colin Runciman, Proceedings ICFP'99.</font>+<a name="(line8)"></a><font color=Blue>--------------------------------------------</font>+<a name="(line9)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators+<a name="(line10)"></a>  <font color=Cyan>(</font><font color=Blue>-- * The content filter type.</font>+<a name="(line11)"></a>    CFilter+<a name="(line12)"></a>+<a name="(line13)"></a>   <font color=Blue>-- * Simple filters.</font>+<a name="(line14)"></a>   <font color=Blue>-- ** Selection filters.</font>+<a name="(line15)"></a>   <font color=Blue>-- $selection</font>+<a name="(line16)"></a>  <font color=Cyan>,</font> keep<font color=Cyan>,</font> none<font color=Cyan>,</font> children<font color=Cyan>,</font> position+<a name="(line17)"></a>+<a name="(line18)"></a>   <font color=Blue>-- ** Predicate filters.</font>+<a name="(line19)"></a>   <font color=Blue>-- $pred</font>+<a name="(line20)"></a>  <font color=Cyan>,</font> elm<font color=Cyan>,</font> txt<font color=Cyan>,</font> tag<font color=Cyan>,</font> attr<font color=Cyan>,</font> attrval<font color=Cyan>,</font> tagWith+<a name="(line21)"></a>+<a name="(line22)"></a>   <font color=Blue>-- ** Search filters.</font>+<a name="(line23)"></a>  <font color=Cyan>,</font> find<font color=Cyan>,</font> iffind<font color=Cyan>,</font> ifTxt+<a name="(line24)"></a>+<a name="(line25)"></a>   <font color=Blue>-- * Filter combinators</font>+<a name="(line26)"></a>   <font color=Blue>-- ** Basic combinators.</font>+<a name="(line27)"></a>  <font color=Cyan>,</font> o<font color=Cyan>,</font> union<font color=Cyan>,</font> cat<font color=Cyan>,</font> andThen+<a name="(line28)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>|&gt;|</font><font color=Cyan>)</font><font color=Cyan>,</font> with<font color=Cyan>,</font> without+<a name="(line29)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>/&gt;</font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>&lt;/</font><font color=Cyan>)</font><font color=Cyan>,</font> et+<a name="(line30)"></a>  <font color=Cyan>,</font> path+<a name="(line31)"></a>   <font color=Blue>-- ** Recursive search.</font>+<a name="(line32)"></a>   <font color=Blue>-- $recursive</font>+<a name="(line33)"></a>  <font color=Cyan>,</font> deep<font color=Cyan>,</font> deepest<font color=Cyan>,</font> multi+<a name="(line34)"></a>   <font color=Blue>-- ** Interior editing.</font>+<a name="(line35)"></a>  <font color=Cyan>,</font> when<font color=Cyan>,</font> guards<font color=Cyan>,</font> chip<font color=Cyan>,</font> inplace<font color=Cyan>,</font> foldXml+<a name="(line36)"></a>   <font color=Blue>-- ** Constructive filters.</font>+<a name="(line37)"></a>  <font color=Cyan>,</font> mkElem<font color=Cyan>,</font> mkElemAttr<font color=Cyan>,</font> literal<font color=Cyan>,</font> cdata<font color=Cyan>,</font> replaceTag<font color=Cyan>,</font> replaceAttrs+<a name="(line38)"></a>+<a name="(line39)"></a>   <font color=Blue>-- * C-like conditionals.</font>+<a name="(line40)"></a>   <font color=Blue>-- $cond</font>+<a name="(line41)"></a>  <font color=Cyan>,</font> ThenElse<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>?&gt;</font><font color=Cyan>)</font>+<a name="(line42)"></a>+<a name="(line43)"></a>   <font color=Blue>-- * Filters with labelled results.</font>+<a name="(line44)"></a>  <font color=Cyan>,</font> LabelFilter+<a name="(line45)"></a>   <font color=Blue>-- ** Using and combining labelled filters.</font>+<a name="(line46)"></a>  <font color=Cyan>,</font> oo<font color=Cyan>,</font> x+<a name="(line47)"></a>   <font color=Blue>-- ** Some label-generating filters.</font>+<a name="(line48)"></a>  <font color=Cyan>,</font> numbered<font color=Cyan>,</font> interspersed<font color=Cyan>,</font> tagged<font color=Cyan>,</font> attributed<font color=Cyan>,</font> textlabelled<font color=Cyan>,</font> extracted+<a name="(line49)"></a>+<a name="(line50)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line51)"></a>+<a name="(line52)"></a>+<a name="(line53)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line54)"></a><font color=Green><u>import</u></font> Maybe <font color=Cyan>(</font>fromMaybe<font color=Cyan>)</font>+<a name="(line55)"></a>+<a name="(line56)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan>`with`</font><font color=Cyan>,</font> <font color=Cyan>`without`</font>+<a name="(line57)"></a><font color=Green><u>infixr</u></font> <font color=Magenta>5</font> <font color=Cyan>`o`</font><font color=Cyan>,</font> <font color=Cyan>`oo`</font><font color=Cyan>,</font> <font color=Cyan>`union`</font><font color=Cyan>,</font> <font color=Cyan>`andThen`</font>		<font color=Blue>-- , `orelse`</font>+<a name="(line58)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>5</font> <font color=Cyan>/&gt;</font><font color=Cyan>,</font> <font color=Cyan>&lt;/</font><font color=Cyan>,</font> <font color=Cyan>|&gt;|</font>+<a name="(line59)"></a><font color=Green><u>infixr</u></font> <font color=Magenta>4</font> <font color=Cyan>`when`</font><font color=Cyan>,</font> <font color=Cyan>`guards`</font>+<a name="(line60)"></a><font color=Green><u>infixr</u></font> <font color=Magenta>3</font> <font color=Cyan>?&gt;</font><font color=Cyan>,</font> <font color=Red><b>:&gt;</b></font>+<a name="(line61)"></a>+<a name="(line62)"></a>+<a name="(line63)"></a>+<a name="(line64)"></a><font color=Blue>-- THE CONTENT FILTER TYPE</font>+<a name="(line65)"></a>+<a name="(line66)"></a><a name="CFilter"></a><font color=Blue>-- | All document transformations are /content filters/.</font>+<a name="(line67)"></a><a name="CFilter"></a><font color=Blue>--   A filter takes a single XML 'Content' value and returns a sequence</font>+<a name="(line68)"></a><a name="CFilter"></a><font color=Blue>--   of 'Content' values, possibly empty.</font>+<a name="(line69)"></a><a name="CFilter"></a><font color=Green><u>type</u></font> CFilter i  <font color=Red>=</font> Content i <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line70)"></a>+<a name="(line71)"></a>+<a name="(line72)"></a>+<a name="(line73)"></a><a name="keep"></a><font color=Blue>-- BASIC SELECTION FILTERS</font>+<a name="(line74)"></a><font color=Blue>-- $selection</font>+<a name="(line75)"></a><font color=Blue>-- In the algebra of combinators, @none@ is the zero, and @keep@ the identity.</font>+<a name="(line76)"></a><font color=Blue>-- (They have a more general type than just CFilter.)</font>+<a name="(line77)"></a>keep <font color=Red>::</font> a<font color=Red>-&gt;</font><font color=Red>[</font>a<font color=Red>]</font>+<a name="(line78)"></a>keep <font color=Red>=</font> <font color=Red>\</font>x<font color=Red>-&gt;</font><font color=Red>[</font>x<font color=Red>]</font>+<a name="(line79)"></a><a name="none"></a>none <font color=Red>::</font> a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font>+<a name="(line80)"></a>none <font color=Red>=</font> <font color=Red>\</font>x<font color=Red>-&gt;</font>[]+<a name="(line81)"></a>+<a name="(line82)"></a><a name="children"></a><font color=Blue>-- | Throw away current node, keep just the (unprocessed) children.</font>+<a name="(line83)"></a>children <font color=Red>::</font> CFilter i+<a name="(line84)"></a>children <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> cs+<a name="(line85)"></a>children <font color=Green><u>_</u></font> <font color=Red>=</font> []+<a name="(line86)"></a>+<a name="(line87)"></a><a name="position"></a><font color=Blue>-- | Select the @n@'th positional result of a filter.</font>+<a name="(line88)"></a>position <font color=Red>::</font> Int <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line89)"></a>position n f <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Red>[</font>cs<font color=Cyan>!!</font>n<font color=Red>]</font><font color=Cyan>)</font> <font color=Cyan>.</font> f+<a name="(line90)"></a>+<a name="(line91)"></a>+<a name="(line92)"></a>+<a name="(line93)"></a><font color=Blue>-- BASIC PREDICATE FILTERS</font>+<a name="(line94)"></a><font color=Blue>-- $pred</font>+<a name="(line95)"></a><font color=Blue>-- These filters either keep or throw away some content based on</font>+<a name="(line96)"></a><font color=Blue>-- a simple test.  For instance, @elm@ keeps only a tagged element,</font>+<a name="(line97)"></a><font color=Blue>-- @txt@ keeps only non-element text, @tag@ keeps only an element</font>+<a name="(line98)"></a><font color=Blue>-- with the named tag, @attr@ keeps only an element with the named</font>+<a name="(line99)"></a><font color=Blue>-- attribute, @attrval@ keeps only an element with the given</font>+<a name="(line100)"></a><font color=Blue>-- attribute value, @tagWith@ keeps only an element whose tag name</font>+<a name="(line101)"></a><font color=Blue>-- satisfies the given predicate.</font>+<a name="(line102)"></a>+<a name="(line103)"></a><a name="elm"></a>elm<font color=Cyan>,</font> txt   <font color=Red>::</font> CFilter i+<a name="(line104)"></a><a name="tag"></a>tag        <font color=Red>::</font> String <font color=Red>-&gt;</font> CFilter i+<a name="(line105)"></a><a name="attr"></a>attr       <font color=Red>::</font> Name <font color=Red>-&gt;</font> CFilter i+<a name="(line106)"></a><a name="attrval"></a>attrval    <font color=Red>::</font> Attribute <font color=Red>-&gt;</font> CFilter i+<a name="(line107)"></a><a name="tagWith"></a>tagWith    <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line108)"></a>+<a name="(line109)"></a>elm x<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line110)"></a>elm <font color=Green><u>_</u></font>             <font color=Red>=</font> []+<a name="(line111)"></a>+<a name="(line112)"></a><a name="txt"></a>txt x<font color=Red>@</font><font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line113)"></a>txt x<font color=Red>@</font><font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line114)"></a>txt <font color=Green><u>_</u></font>                 <font color=Red>=</font> []+<a name="(line115)"></a>+<a name="(line116)"></a>tag t x<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> t<font color=Cyan>==</font>n  <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line117)"></a>tag t <font color=Green><u>_</u></font>  <font color=Red>=</font> []+<a name="(line118)"></a>+<a name="(line119)"></a>tagWith p x<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> p n  <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line120)"></a>tagWith p <font color=Green><u>_</u></font>  <font color=Red>=</font> []+<a name="(line121)"></a>+<a name="(line122)"></a>attr n x<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> n <font color=Cyan>`elem`</font> <font color=Cyan>(</font>map fst <font color=Green><u>as</u></font><font color=Cyan>)</font>  <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line123)"></a>attr n <font color=Green><u>_</u></font>  <font color=Red>=</font> []+<a name="(line124)"></a>+<a name="(line125)"></a>attrval av x<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> av <font color=Cyan>`elem`</font> <font color=Green><u>as</u></font>  <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line126)"></a>attrval av <font color=Green><u>_</u></font>  <font color=Red>=</font> []+<a name="(line127)"></a>+<a name="(line128)"></a>+<a name="(line129)"></a>+<a name="(line130)"></a><font color=Blue>-- SEARCH FILTERS</font>+<a name="(line131)"></a>+<a name="(line132)"></a><a name="find"></a><font color=Blue>-- | For a mandatory attribute field, @find key cont@ looks up the value of</font>+<a name="(line133)"></a><font color=Blue>--   the attribute name @key@, and applies the continuation @cont@ to</font>+<a name="(line134)"></a><font color=Blue>--   the value.</font>+<a name="(line135)"></a>find <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>CFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line136)"></a>find key cont c<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> cont <font color=Cyan>(</font>show <font color=Cyan>(</font>lookfor key <font color=Green><u>as</u></font><font color=Cyan>)</font><font color=Cyan>)</font> c+<a name="(line137)"></a>  <font color=Green><u>where</u></font> lookfor x <font color=Red>=</font> fromMaybe <font color=Cyan>(</font>error <font color=Cyan>(</font><font color=Magenta>"missing attribute: "</font><font color=Cyan>++</font>show x<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> lookup x+<a name="(line138)"></a><font color=Blue>-- 'lookfor' has the more general type :: (Eq a,Show a) =&gt; a -&gt; [(a,b)] -&gt; b</font>+<a name="(line139)"></a>+<a name="(line140)"></a><a name="iffind"></a><font color=Blue>-- | When an attribute field may be absent, use @iffind key yes no@ to lookup</font>+<a name="(line141)"></a><font color=Blue>--   its value.  If the attribute is absent, it acts as the @no@ filter,</font>+<a name="(line142)"></a><font color=Blue>--   otherwise it applies the @yes@ filter.</font>+<a name="(line143)"></a>iffind <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>CFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line144)"></a>iffind key yes no c<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line145)"></a>  <font color=Green><u>case</u></font> <font color=Cyan>(</font>lookup key <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="(line146)"></a>    Nothing  <font color=Red>-&gt;</font> no c+<a name="(line147)"></a>    <font color=Cyan>(</font>Just v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> yes <font color=Cyan>(</font>show v<font color=Cyan>)</font> c+<a name="(line148)"></a>iffind key yes no other <font color=Red>=</font> no other+<a name="(line149)"></a>+<a name="(line150)"></a><a name="ifTxt"></a><font color=Blue>-- | @ifTxt yes no@ processes any textual content with the @yes@ filter,</font>+<a name="(line151)"></a><font color=Blue>--   but otherwise is the same as the @no@ filter.</font>+<a name="(line152)"></a>ifTxt <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>CFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line153)"></a>ifTxt yes no c<font color=Red>@</font><font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> yes s c+<a name="(line154)"></a>ifTxt yes no c                 <font color=Red>=</font> no c+<a name="(line155)"></a>+<a name="(line156)"></a>+<a name="(line157)"></a>+<a name="(line158)"></a><font color=Blue>-- C-LIKE CONDITIONALS</font>+<a name="(line159)"></a><font color=Blue>--</font>+<a name="(line160)"></a><font color=Blue>-- $cond</font>+<a name="(line161)"></a><font color=Blue>-- These definitions provide C-like conditionals, lifted to the filter level.</font>+<a name="(line162)"></a><font color=Blue>--</font>+<a name="(line163)"></a><font color=Blue>-- The @(cond ? yes : no)@ style in C becomes @(cond ?&gt; yes :&gt; no)@ in Haskell.</font>+<a name="(line164)"></a>+<a name="(line165)"></a><a name="ThenElse"></a><font color=Blue>-- | Conjoin the two branches of a conditional.</font>+<a name="(line166)"></a><a name="ThenElse"></a><font color=Green><u>data</u></font> ThenElse a <font color=Red>=</font> a <font color=Red><b>:&gt;</b></font> a+<a name="(line167)"></a>+<a name="(line168)"></a><a name="?>"></a><font color=Blue>-- | Select between the two branches of a joined conditional.</font>+<a name="(line169)"></a><font color=Cyan>(</font><font color=Cyan>?&gt;</font><font color=Cyan>)</font> <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> ThenElse <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line170)"></a><a name="p"></a>p <font color=Cyan>?&gt;</font> <font color=Cyan>(</font>f <font color=Red><b>:&gt;</b></font> g<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>\</font>c<font color=Red>-&gt;</font> <font color=Green><u>if</u></font> <font color=Cyan>(</font>not<font color=Cyan>.</font>null<font color=Cyan>.</font>p<font color=Cyan>)</font> c <font color=Green><u>then</u></font> f c <font color=Green><u>else</u></font> g c+<a name="(line171)"></a>+<a name="(line172)"></a>+<a name="(line173)"></a>+<a name="(line174)"></a><font color=Blue>-- FILTER COMBINATORS</font>+<a name="(line175)"></a>+<a name="(line176)"></a>+<a name="(line177)"></a><a name="o"></a><font color=Blue>-- | Sequential (/Irish/,/backwards/) composition</font>+<a name="(line178)"></a>o <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line179)"></a><a name="o"></a>f <font color=Cyan>`o`</font> g <font color=Red>=</font> concatMap f <font color=Cyan>.</font> g+<a name="(line180)"></a>+<a name="(line181)"></a><a name="union"></a><font color=Blue>-- | Binary parallel composition.  Each filter uses a copy of the input,</font>+<a name="(line182)"></a><font color=Blue>-- rather than one filter using the result of the other.</font>+<a name="(line183)"></a><font color=Blue>--   (Has a more general type than just CFilter.)</font>+<a name="(line184)"></a>union <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line185)"></a>union <font color=Red>=</font> lift <font color=Cyan>(</font><font color=Cyan>++</font><font color=Cyan>)</font>		<font color=Blue>-- in Haskell 98:   union = lift List.union</font>+<a name="(line186)"></a>  <font color=Green><u>where</u></font>+<a name="(line187)"></a>    lift <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font>d<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>c<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>c<font color=Red>-&gt;</font>b<font color=Cyan>)</font> <font color=Red>-&gt;</font> c <font color=Red>-&gt;</font> d+<a name="(line188)"></a>    lift f g h <font color=Red>=</font> <font color=Red>\</font>x<font color=Red>-&gt;</font> f <font color=Cyan>(</font>g x<font color=Cyan>)</font> <font color=Cyan>(</font>h x<font color=Cyan>)</font>+<a name="(line189)"></a>+<a name="(line190)"></a><a name="cat"></a><font color=Blue>-- | Glue a list of filters together.  (A list version of union;</font>+<a name="(line191)"></a><font color=Blue>--   also has a more general type than just CFilter.)</font>+<a name="(line192)"></a>cat <font color=Red>::</font> <font color=Red>[</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line193)"></a><font color=Blue>--   Specification: cat fs = \e-&gt; concat [ f e | f &lt;- fs ]</font>+<a name="(line194)"></a><font color=Blue>--   more efficient implementation below:</font>+<a name="(line195)"></a>cat [] <font color=Red>=</font> const []+<a name="(line196)"></a>cat fs <font color=Red>=</font> foldr1 union fs+<a name="(line197)"></a>+<a name="(line198)"></a><a name="andThen"></a><font color=Blue>-- | A special form of filter composition where the second filter</font>+<a name="(line199)"></a><font color=Blue>--   works over the same data as the first, but also uses the</font>+<a name="(line200)"></a><font color=Blue>--   first's result.</font>+<a name="(line201)"></a>andThen <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>c<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>c<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>b<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Cyan>)</font>+<a name="(line202)"></a>andThen f g <font color=Red>=</font> <font color=Red>\</font>x<font color=Red>-&gt;</font> g <font color=Cyan>(</font>f x<font color=Cyan>)</font> x			<font color=Blue>-- lift g f id</font>+<a name="(line203)"></a>+<a name="(line204)"></a><a name="childrenBy"></a><font color=Blue>-- | Process children using specified filters.  /not exported/</font>+<a name="(line205)"></a>childrenBy <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i +<a name="(line206)"></a>childrenBy f <font color=Red>=</font> f <font color=Cyan>`o`</font> children+<a name="(line207)"></a>+<a name="(line208)"></a><a name="|>|"></a><font color=Blue>-- | Directional choice:</font>+<a name="(line209)"></a><font color=Blue>--   in @f |&gt;| g@ give g-productions only if no f-productions</font>+<a name="(line210)"></a><font color=Cyan>(</font><font color=Cyan>|&gt;|</font><font color=Cyan>)</font> <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line211)"></a><a name="f"></a>f <font color=Cyan>|&gt;|</font> g <font color=Red>=</font> <font color=Red>\</font>x<font color=Red>-&gt;</font> <font color=Green><u>let</u></font> fx <font color=Red>=</font> f x <font color=Green><u>in</u></font> <font color=Green><u>if</u></font> null fx <font color=Green><u>then</u></font> g x <font color=Green><u>else</u></font> fx+<a name="(line212)"></a><font color=Blue>--      f |&gt;| g  =  f ?&gt; f :&gt; g</font>+<a name="(line213)"></a>+<a name="(line214)"></a><a name="with"></a><font color=Blue>-- | Pruning: in @f `with` g@,</font>+<a name="(line215)"></a><font color=Blue>--   keep only those f-productions which have at least one g-production</font>+<a name="(line216)"></a>with <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line217)"></a><a name="with"></a>f <font color=Cyan>`with`</font> g <font color=Red>=</font> filter <font color=Cyan>(</font>not<font color=Cyan>.</font>null<font color=Cyan>.</font>g<font color=Cyan>)</font> <font color=Cyan>.</font> f+<a name="(line218)"></a>+<a name="(line219)"></a><a name="without"></a><font color=Blue>-- | Pruning: in @f `without` g@,</font>+<a name="(line220)"></a><font color=Blue>--   keep only those f-productions which have no g-productions</font>+<a name="(line221)"></a>without <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line222)"></a><a name="without"></a>f <font color=Cyan>`without`</font> g <font color=Red>=</font> filter <font color=Cyan>(</font>null<font color=Cyan>.</font>g<font color=Cyan>)</font> <font color=Cyan>.</font> f+<a name="(line223)"></a>+<a name="(line224)"></a><a name="/>"></a><font color=Blue>-- | Pronounced /slash/, @f \/&gt; g@ means g inside f</font>+<a name="(line225)"></a><font color=Cyan>(</font><font color=Cyan>/&gt;</font><font color=Cyan>)</font> <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line226)"></a>f <font color=Cyan>/&gt;</font> g <font color=Red>=</font> g <font color=Cyan>`o`</font> children <font color=Cyan>`o`</font> f+<a name="(line227)"></a>+<a name="(line228)"></a><a name="</"></a><font color=Blue>-- | Pronounced /outside/, @f \&lt;\/ g@ means f containing g</font>+<a name="(line229)"></a><font color=Cyan>(</font><font color=Cyan>&lt;/</font><font color=Cyan>)</font> <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line230)"></a>f <font color=Cyan>&lt;/</font> g <font color=Red>=</font> f <font color=Cyan>`with`</font> <font color=Cyan>(</font>g <font color=Cyan>`o`</font> children<font color=Cyan>)</font>+<a name="(line231)"></a>+<a name="(line232)"></a><a name="et"></a><font color=Blue>-- | Join an element-matching filter with a text-only filter</font>+<a name="(line233)"></a>et <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>CFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line234)"></a>et f g <font color=Red>=</font> <font color=Cyan>(</font>f <font color=Cyan>`oo`</font> tagged elm<font color=Cyan>)</font>+<a name="(line235)"></a>            <font color=Cyan>|&gt;|</font>+<a name="(line236)"></a>         <font color=Cyan>(</font>g <font color=Cyan>`o`</font> txt<font color=Cyan>)</font>+<a name="(line237)"></a>+<a name="(line238)"></a><a name="path"></a><font color=Blue>-- | Express a list of filters like an XPath query, e.g.</font>+<a name="(line239)"></a><font color=Blue>--   @path [children, tag \"name1\", attr \"attr1\", children, tag \"name2\"]@</font>+<a name="(line240)"></a><font color=Blue>--   is like the XPath query @\/name1[\@attr1]\/name2@.</font>+<a name="(line241)"></a>path <font color=Red>::</font> <font color=Red>[</font>CFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line242)"></a>path fs <font color=Red>=</font> foldr <font color=Cyan>(</font>flip <font color=Cyan>(</font>o<font color=Cyan>)</font><font color=Cyan>)</font> keep fs+<a name="(line243)"></a>+<a name="(line244)"></a>+<a name="(line245)"></a><a name="deep"></a><font color=Blue>-- RECURSIVE SEARCH</font>+<a name="(line246)"></a><font color=Blue>-- $recursive</font>+<a name="(line247)"></a><font color=Blue>-- Recursive search has three variants: @deep@ does a breadth-first</font>+<a name="(line248)"></a><font color=Blue>-- search of the tree, @deepest@ does a depth-first search, @multi@ returns</font>+<a name="(line249)"></a><font color=Blue>-- content at all tree-levels, even those strictly contained within results</font>+<a name="(line250)"></a><font color=Blue>-- that have already been returned.</font>+<a name="(line251)"></a>deep<font color=Cyan>,</font> deepest<font color=Cyan>,</font> multi <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line252)"></a>deep f     <font color=Red>=</font> f <font color=Cyan>|&gt;|</font> <font color=Cyan>(</font>deep f <font color=Cyan>`o`</font> children<font color=Cyan>)</font>+<a name="(line253)"></a><a name="deepest"></a>deepest f  <font color=Red>=</font> <font color=Cyan>(</font>deepest f <font color=Cyan>`o`</font> children<font color=Cyan>)</font> <font color=Cyan>|&gt;|</font> f+<a name="(line254)"></a><a name="multi"></a>multi f    <font color=Red>=</font> f <font color=Cyan>`union`</font> <font color=Cyan>(</font>multi f <font color=Cyan>`o`</font> children<font color=Cyan>)</font>+<a name="(line255)"></a>+<a name="(line256)"></a><a name="when"></a><font color=Blue>-- | Interior editing:</font>+<a name="(line257)"></a><font color=Blue>--   @f `when` g@ applies @f@ only when the predicate @g@ succeeds,</font>+<a name="(line258)"></a><font color=Blue>--   otherwise the content is unchanged.</font>+<a name="(line259)"></a>when   <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line260)"></a><a name="guards"></a><font color=Blue>-- | Interior editing:</font>+<a name="(line261)"></a><font color=Blue>--   @g `guards` f@ applies @f@ only when the predicate @g@ succeeds,</font>+<a name="(line262)"></a><font color=Blue>--   otherwise the content is discarded.</font>+<a name="(line263)"></a>guards <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line264)"></a><a name="when"></a>f <font color=Cyan>`when`</font> g       <font color=Red>=</font> g <font color=Cyan>?&gt;</font> f <font color=Red><b>:&gt;</b></font> keep+<a name="(line265)"></a><a name="guards"></a>g <font color=Cyan>`guards`</font> f     <font color=Red>=</font> g <font color=Cyan>?&gt;</font> f <font color=Red><b>:&gt;</b></font> none	<font color=Blue>-- = f `o` (keep `with` g)</font>+<a name="(line266)"></a>+<a name="(line267)"></a><a name="chip"></a><font color=Blue>-- | Process CHildren In Place.  The filter is applied to any children</font>+<a name="(line268)"></a><font color=Blue>--   of an element content, and the element rebuilt around the results.</font>+<a name="(line269)"></a>chip <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line270)"></a>chip f <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> i<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font> CElem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> <font color=Cyan>(</font>concatMap f cs<font color=Cyan>)</font><font color=Cyan>)</font> i <font color=Red>]</font>+<a name="(line271)"></a>chip f c <font color=Red>=</font> <font color=Red>[</font>c<font color=Red>]</font>+<a name="(line272)"></a><font color=Blue>-- chip f = inplace (f `o` children)</font>+<a name="(line273)"></a>+<a name="(line274)"></a><a name="inplace"></a><font color=Blue>-- | Process an element In Place.  The filter is applied to the element</font>+<a name="(line275)"></a><font color=Blue>--   itself, and then the original element rebuilt around the results.</font>+<a name="(line276)"></a>inplace <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line277)"></a>inplace f c<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem name <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> i<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font> CElem <font color=Cyan>(</font>Elem name <font color=Green><u>as</u></font> <font color=Cyan>(</font>f c<font color=Cyan>)</font><font color=Cyan>)</font> i <font color=Red>]</font>+<a name="(line278)"></a>inplace f c <font color=Red>=</font> <font color=Red>[</font>c<font color=Red>]</font>+<a name="(line279)"></a>+<a name="(line280)"></a>+<a name="(line281)"></a><a name="foldXml"></a><font color=Blue>-- | Recursive application of filters: a fold-like operator.  Defined</font>+<a name="(line282)"></a><font color=Blue>--   as @f `o` chip (foldXml f)@.</font>+<a name="(line283)"></a>foldXml <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line284)"></a>foldXml f <font color=Red>=</font> f <font color=Cyan>`o`</font> chip <font color=Cyan>(</font>foldXml f<font color=Cyan>)</font>+<a name="(line285)"></a>+<a name="(line286)"></a>+<a name="(line287)"></a>+<a name="(line288)"></a>+<a name="(line289)"></a><font color=Blue>-- CONSTRUCTIVE CONTENT FILTERS</font>+<a name="(line290)"></a>+<a name="(line291)"></a><a name="mkElem"></a><font color=Blue>-- | Build an element with the given tag name - its content is the results</font>+<a name="(line292)"></a><font color=Blue>--   of the given list of filters.</font>+<a name="(line293)"></a>mkElem <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>CFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line294)"></a>mkElem h cfs <font color=Red>=</font> <font color=Red>\</font>t<font color=Red>-&gt;</font> <font color=Red>[</font> CElem <font color=Cyan>(</font>Elem h [] <font color=Cyan>(</font>cat cfs t<font color=Cyan>)</font><font color=Cyan>)</font> undefined <font color=Red>]</font>+<a name="(line295)"></a>+<a name="(line296)"></a><a name="mkElemAttr"></a><font color=Blue>-- | Build an element with the given name, attributes, and content.</font>+<a name="(line297)"></a>mkElemAttr <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font>CFilter i<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>CFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line298)"></a>mkElemAttr h <font color=Green><u>as</u></font> cfs <font color=Red>=</font> <font color=Red>\</font>t<font color=Red>-&gt;</font> <font color=Red>[</font> CElem <font color=Cyan>(</font>Elem h <font color=Cyan>(</font>map <font color=Cyan>(</font>attr t<font color=Cyan>)</font> <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>(</font>cat cfs t<font color=Cyan>)</font><font color=Cyan>)</font> undefined <font color=Red>]</font>+<a name="(line299)"></a>  <font color=Green><u>where</u></font> attr t <font color=Cyan>(</font>n<font color=Cyan>,</font>vf<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line300)"></a>            <font color=Green><u>let</u></font> v <font color=Red>=</font> concat <font color=Red>[</font> s <font color=Red>|</font> <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> <font color=Cyan>(</font>deep txt <font color=Cyan>`o`</font> vf<font color=Cyan>)</font> t <font color=Red>]</font>+<a name="(line301)"></a>            <font color=Green><u>in</u></font>  <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue <font color=Red>[</font>Left v<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line302)"></a>+<a name="(line303)"></a><a name="literal"></a><font color=Blue>-- | Build some textual content.</font>+<a name="(line304)"></a>literal <font color=Red>::</font> String <font color=Red>-&gt;</font> CFilter i+<a name="(line305)"></a>literal s <font color=Red>=</font> const <font color=Red>[</font>CString False s undefined<font color=Red>]</font>+<a name="(line306)"></a>+<a name="(line307)"></a><a name="cdata"></a><font color=Blue>-- | Build some CDATA content.</font>+<a name="(line308)"></a>cdata <font color=Red>::</font> String <font color=Red>-&gt;</font> CFilter i+<a name="(line309)"></a>cdata s <font color=Red>=</font> const <font color=Red>[</font>CString True s undefined<font color=Red>]</font>+<a name="(line310)"></a>+<a name="(line311)"></a><a name="replaceTag"></a><font color=Blue>-- | Rename an element tag (leaving attributes in place).</font>+<a name="(line312)"></a>replaceTag <font color=Red>::</font> String <font color=Red>-&gt;</font> CFilter i+<a name="(line313)"></a>replaceTag n <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> i<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> i<font color=Red>]</font>+<a name="(line314)"></a>replaceTag n <font color=Green><u>_</u></font> <font color=Red>=</font> []+<a name="(line315)"></a>+<a name="(line316)"></a><a name="replaceAttrs"></a><font color=Blue>-- | Replace the attributes of an element (leaving tag the same).</font>+<a name="(line317)"></a>replaceAttrs <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line318)"></a>replaceAttrs <font color=Green><u>as</u></font> <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> i<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem n as' cs<font color=Cyan>)</font> i<font color=Red>]</font>+<a name="(line319)"></a>    <font color=Green><u>where</u></font> as' <font color=Red>=</font> map <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font><font color=Red>-&gt;</font> <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue <font color=Red>[</font>Left v<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Green><u>as</u></font>+<a name="(line320)"></a>replaceAttrs <font color=Green><u>as</u></font> <font color=Green><u>_</u></font> <font color=Red>=</font> []+<a name="(line321)"></a>+<a name="(line322)"></a>+<a name="(line323)"></a>+<a name="(line324)"></a><font color=Blue>-- LABELLING</font>+<a name="(line325)"></a>+<a name="(line326)"></a><a name="LabelFilter"></a><font color=Blue>-- | A LabelFilter is like a CFilter except that it pairs up a polymorphic</font>+<a name="(line327)"></a><a name="LabelFilter"></a><font color=Blue>--   value (label) with each of its results.</font>+<a name="(line328)"></a><a name="LabelFilter"></a><font color=Green><u>type</u></font> LabelFilter i a <font color=Red>=</font> Content i <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>Content i<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line329)"></a>+<a name="(line330)"></a><a name="oo"></a><font color=Blue>-- | Compose a label-processing filter with a label-generating filter.</font>+<a name="(line331)"></a>oo <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>CFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> LabelFilter i a <font color=Red>-&gt;</font> CFilter i+<a name="(line332)"></a><a name="oo"></a>f <font color=Cyan>`oo`</font> g <font color=Red>=</font> concatMap <font color=Cyan>(</font>uncurry f<font color=Cyan>)</font> <font color=Cyan>.</font> g+<a name="(line333)"></a>+<a name="(line334)"></a><font color=Blue>{-+<a name="(line335)"></a>-- | Process the information labels (very nearly monadic bind).+<a name="(line336)"></a>oo :: (b -&gt; CFilter b c) -&gt; CFilter a b -&gt; CFilter a c+<a name="(line337)"></a>f `oo` g = concatMap info . g+<a name="(line338)"></a>    where info c@(CElem _ i)     = f i c+<a name="(line339)"></a>          info c@(CString _ _ i) = f i c+<a name="(line340)"></a>          info c@(CRef _ i)      = f i c+<a name="(line341)"></a>          info c                 = [c]+<a name="(line342)"></a>-}</font>+<a name="(line343)"></a>+<a name="(line344)"></a><a name="x"></a><font color=Blue>-- | Combine labels.  Think of this as a pair-wise zip on labels.</font>+<a name="(line345)"></a><font color=Blue>--   e.g. @(numbered `x` tagged)@</font>+<a name="(line346)"></a>x <font color=Red>::</font> <font color=Cyan>(</font>CFilter i<font color=Red>-&gt;</font>LabelFilter i a<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>CFilter i<font color=Red>-&gt;</font>LabelFilter i b<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line347)"></a>       <font color=Cyan>(</font>CFilter i<font color=Red>-&gt;</font>LabelFilter i <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line348)"></a><a name="x"></a>f <font color=Cyan>`x`</font> g <font color=Red>=</font> <font color=Red>\</font>cf c<font color=Red>-&gt;</font> <font color=Green><u>let</u></font> gs <font color=Red>=</font> map fst <font color=Cyan>(</font>g cf c<font color=Cyan>)</font>+<a name="(line349)"></a>                      fs <font color=Red>=</font> map fst <font color=Cyan>(</font>f cf c<font color=Cyan>)</font>+<a name="(line350)"></a>                  <font color=Green><u>in</u></font> zip <font color=Cyan>(</font>zip fs gs<font color=Cyan>)</font> <font color=Cyan>(</font>cf c<font color=Cyan>)</font>+<a name="(line351)"></a>+<a name="(line352)"></a>+<a name="(line353)"></a><font color=Blue>-- Some basic label-generating filters.</font>+<a name="(line354)"></a>+<a name="(line355)"></a><a name="numbered"></a><font color=Blue>-- | Number the results from 1 upwards.</font>+<a name="(line356)"></a>numbered <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> LabelFilter i Int+<a name="(line357)"></a>numbered f <font color=Red>=</font> zip <font color=Red>[</font><font color=Magenta>1</font><font color=Red>..</font><font color=Red>]</font> <font color=Cyan>.</font> f+<a name="(line358)"></a>+<a name="(line359)"></a><a name="interspersed"></a><font color=Blue>-- | In @interspersed a f b@, label each result of @f@ with the string @a@,</font>+<a name="(line360)"></a><font color=Blue>--   except for the last one which is labelled with the string @b@.</font>+<a name="(line361)"></a>interspersed <font color=Red>::</font> String <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> LabelFilter i String+<a name="(line362)"></a>interspersed a f b <font color=Red>=</font>+<a name="(line363)"></a>  <font color=Cyan>(</font><font color=Red>\</font>xs<font color=Red>-&gt;</font> zip <font color=Cyan>(</font>replicate <font color=Cyan>(</font>len xs<font color=Cyan>)</font> a <font color=Cyan>++</font> <font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>)</font> xs<font color=Cyan>)</font> <font color=Cyan>.</font> f+<a name="(line364)"></a>  <font color=Green><u>where</u></font>+<a name="(line365)"></a>  len [] <font color=Red>=</font> <font color=Magenta>0</font>+<a name="(line366)"></a>  len xs <font color=Red>=</font> length xs <font color=Blue>-</font> <font color=Magenta>1</font>+<a name="(line367)"></a>+<a name="(line368)"></a><a name="tagged"></a><font color=Blue>-- | Label each element in the result with its tag name.  Non-element</font>+<a name="(line369)"></a><font color=Blue>--   results get an empty string label.</font>+<a name="(line370)"></a>tagged <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> LabelFilter i String+<a name="(line371)"></a>tagged f <font color=Red>=</font> extracted name f+<a name="(line372)"></a>  <font color=Green><u>where</u></font> name <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> n+<a name="(line373)"></a>        name <font color=Green><u>_</u></font>                      <font color=Red>=</font> <font color=Magenta>""</font>+<a name="(line374)"></a>+<a name="(line375)"></a><a name="attributed"></a><font color=Blue>-- | Label each element in the result with the value of the named attribute.</font>+<a name="(line376)"></a><font color=Blue>--   Elements without the attribute, and non-element results, get an</font>+<a name="(line377)"></a><font color=Blue>--   empty string label.</font>+<a name="(line378)"></a>attributed <font color=Red>::</font> String <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> LabelFilter i String+<a name="(line379)"></a>attributed key f <font color=Red>=</font> extracted att f+<a name="(line380)"></a>  <font color=Green><u>where</u></font> att <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line381)"></a>            <font color=Green><u>case</u></font> <font color=Cyan>(</font>lookup key <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="(line382)"></a>              Nothing  <font color=Red>-&gt;</font> <font color=Magenta>""</font>+<a name="(line383)"></a>              <font color=Cyan>(</font>Just v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> show v+<a name="(line384)"></a>        att <font color=Green><u>_</u></font> <font color=Red>=</font> <font color=Magenta>""</font>+<a name="(line385)"></a>+<a name="(line386)"></a><a name="textlabelled"></a><font color=Blue>-- | Label each textual part of the result with its text.  Element</font>+<a name="(line387)"></a><font color=Blue>--   results get an empty string label.</font>+<a name="(line388)"></a>textlabelled <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> LabelFilter i <font color=Cyan>(</font>Maybe String<font color=Cyan>)</font>+<a name="(line389)"></a>textlabelled f <font color=Red>=</font> extracted text f+<a name="(line390)"></a>  <font color=Green><u>where</u></font> text <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> Just s+<a name="(line391)"></a>        text <font color=Green><u>_</u></font>               <font color=Red>=</font> Nothing+<a name="(line392)"></a>+<a name="(line393)"></a><a name="extracted"></a><font color=Blue>-- | Label each content with some information extracted from itself.</font>+<a name="(line394)"></a>extracted <font color=Red>::</font> <font color=Cyan>(</font>Content i<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> CFilter i <font color=Red>-&gt;</font> LabelFilter i a+<a name="(line395)"></a>extracted proj f <font color=Red>=</font> concatMap <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font><font color=Red>[</font><font color=Cyan>(</font>proj c<font color=Cyan>,</font> c<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Cyan>.</font> f+<a name="(line396)"></a>                                                                                +<a name="(line397)"></a>+<a name="(line398)"></a>+<a name="(line399)"></a><font color=Blue>{-+<a name="(line400)"></a>-- MISC+<a name="(line401)"></a>+<a name="(line402)"></a>-- | I haven't yet remembered \/ worked out what this does.+<a name="(line403)"></a>combine :: (Read a,Show a) =&gt; ([a]-&gt;a) -&gt; LabelFilter String -&gt; CFilter+<a name="(line404)"></a>combine f lf = \c-&gt; [ CString False (show (f [ read l | (l,_) &lt;- lf c ])) ]+<a name="(line405)"></a>-}</font>+<a name="(line406)"></a>+<a name="(line407)"></a>+<a name="(line408)"></a><font color=Blue>{- OLD STUFF - OBSOLETE+<a name="(line409)"></a>-- Keep an element by its numbered position (starting at 1).+<a name="(line410)"></a>position :: Int -&gt; [Content] -&gt; [Content]+<a name="(line411)"></a>position n | n&gt;0  = (:[]) . (!!(n-1))+<a name="(line412)"></a>           | otherwise = const []+<a name="(line413)"></a>+<a name="(line414)"></a>-- Chop and remove the root portions of trees to depth n.+<a name="(line415)"></a>layer :: Int -&gt; [Content] -&gt; [Content]+<a name="(line416)"></a>layer n = apply n (concatMap lay)+<a name="(line417)"></a>  where lay (CElem (Elem _ _ cs)) = cs+<a name="(line418)"></a>        lay _ = []+<a name="(line419)"></a>        apply 0 f xs = xs+<a name="(line420)"></a>        apply n f xs = apply (n-1) f (f xs)+<a name="(line421)"></a>+<a name="(line422)"></a>combine :: (Read a, Show a) =&gt; ([a]-&gt;a) -&gt; [Content] -&gt; [Content]+<a name="(line423)"></a>combine f = \cs-&gt; [ CString False (show (f [ read s | CString _ s &lt;- cs ])) ]+<a name="(line424)"></a>-}</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/DtdToHaskell/Convert.html view
@@ -0,0 +1,130 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This module performs the translation of a parsed XML DTD into the</font>+<a name="(line2)"></a><font color=Blue>--   internal representation of corresponding Haskell data\/newtypes.</font>+<a name="(line3)"></a>+<a name="(line4)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>DtdToHaskell<font color=Cyan>.</font>Convert+<a name="(line5)"></a>  <font color=Cyan>(</font> dtd2TypeDef+<a name="(line6)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line7)"></a>+<a name="(line8)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>+<a name="(line9)"></a>+<a name="(line10)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types hiding <font color=Cyan>(</font>Name<font color=Cyan>)</font>+<a name="(line11)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>DtdToHaskell<font color=Cyan>.</font>TypeDef+<a name="(line12)"></a>+<a name="(line13)"></a>+<a name="(line14)"></a><a name="Record"></a><font color=Blue>---- Internal representation for database of DTD decls ----</font>+<a name="(line15)"></a><a name="Record"></a><font color=Green><u>data</u></font> Record <font color=Red>=</font> R <font color=Red>[</font>AttDef<font color=Red>]</font> ContentSpec+<a name="(line16)"></a><a name="Db"></a><font color=Green><u>type</u></font> Db <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font>Record<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line17)"></a>+<a name="(line18)"></a>+<a name="(line19)"></a><a name="dtd2TypeDef"></a><font color=Blue>---- Build a database of DTD decls then convert them to typedefs ----</font>+<a name="(line20)"></a><font color=Blue>---- (Done in two steps because we need to merge ELEMENT and ATTLIST decls.)</font>+<a name="(line21)"></a><font color=Blue>---- Apparently multiple ATTLIST decls for the same element are permitted,</font>+<a name="(line22)"></a><font color=Blue>---- although only one ELEMENT decl for it is allowed.</font>+<a name="(line23)"></a>dtd2TypeDef <font color=Red>::</font> <font color=Red>[</font>MarkupDecl<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>TypeDef<font color=Red>]</font>+<a name="(line24)"></a>dtd2TypeDef mds <font color=Red>=</font> +<a name="(line25)"></a>  <font color=Cyan>(</font>concatMap convert <font color=Cyan>.</font> reverse <font color=Cyan>.</font> database []<font color=Cyan>)</font> mds+<a name="(line26)"></a>  <font color=Green><u>where</u></font>+<a name="(line27)"></a>  database db [] <font color=Red>=</font> db+<a name="(line28)"></a>  database db <font color=Cyan>(</font>m<font color=Red><b>:</b></font>ms<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line29)"></a>      <font color=Green><u>case</u></font> m <font color=Green><u>of</u></font>+<a name="(line30)"></a>        <font color=Cyan>(</font>Element <font color=Cyan>(</font>ElementDecl n cs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line31)"></a>          <font color=Green><u>case</u></font> lookup n db <font color=Green><u>of</u></font>+<a name="(line32)"></a>            Nothing <font color=Red>-&gt;</font> database <font color=Cyan>(</font><font color=Cyan>(</font>n<font color=Cyan>,</font> R [] cs<font color=Cyan>)</font><font color=Red><b>:</b></font>db<font color=Cyan>)</font> ms+<a name="(line33)"></a>            <font color=Cyan>(</font>Just <font color=Cyan>(</font>R <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> database <font color=Cyan>(</font>replace n <font color=Cyan>(</font>R <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> db<font color=Cyan>)</font> ms+<a name="(line34)"></a>        <font color=Cyan>(</font>AttList <font color=Cyan>(</font>AttListDecl n <font color=Green><u>as</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line35)"></a>          <font color=Green><u>case</u></font> lookup n db <font color=Green><u>of</u></font>+<a name="(line36)"></a>            Nothing <font color=Red>-&gt;</font> database <font color=Cyan>(</font><font color=Cyan>(</font>n<font color=Cyan>,</font> R <font color=Green><u>as</u></font> EMPTY<font color=Cyan>)</font><font color=Red><b>:</b></font>db<font color=Cyan>)</font> ms+<a name="(line37)"></a>            <font color=Cyan>(</font>Just <font color=Cyan>(</font>R a cs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> database <font color=Cyan>(</font>replace n <font color=Cyan>(</font>R <font color=Cyan>(</font>a<font color=Cyan>++</font><font color=Green><u>as</u></font><font color=Cyan>)</font> cs<font color=Cyan>)</font> db<font color=Cyan>)</font> ms+<a name="(line38)"></a>    <font color=Blue>--  (MarkupPE _ m') -&gt; database db (m':ms)</font>+<a name="(line39)"></a>        <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> database db ms+<a name="(line40)"></a>+<a name="(line41)"></a>  replace n v [] <font color=Red>=</font> error <font color=Magenta>"dtd2TypeDef.replace: no element to replace"</font>+<a name="(line42)"></a>  replace n v <font color=Cyan>(</font>x<font color=Red>@</font><font color=Cyan>(</font>n0<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Red><b>:</b></font>db<font color=Cyan>)</font>+<a name="(line43)"></a>      <font color=Red>|</font> n<font color=Cyan>==</font>n0     <font color=Red>=</font> <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font><font color=Red><b>:</b></font> db+<a name="(line44)"></a>      <font color=Red>|</font> otherwise <font color=Red>=</font> x<font color=Red><b>:</b></font> replace n v db+<a name="(line45)"></a>+<a name="(line46)"></a>+<a name="(line47)"></a>+<a name="(line48)"></a><a name="convert"></a><font color=Blue>---- Convert DTD record to typedef ----</font>+<a name="(line49)"></a>convert <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Cyan>,</font> Record<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>TypeDef<font color=Red>]</font>+<a name="(line50)"></a>convert <font color=Cyan>(</font>n<font color=Cyan>,</font> R <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line51)"></a>    <font color=Green><u>case</u></font> cs <font color=Green><u>of</u></font>+<a name="(line52)"></a>      EMPTY                   <font color=Red>-&gt;</font> modifier None []+<a name="(line53)"></a>      ANY                     <font color=Red>-&gt;</font> modifier None <font color=Red>[</font><font color=Red>[</font>Any<font color=Red>]</font><font color=Red>]</font>+<a name="(line54)"></a>                                 <font color=Blue>--error "NYI: contentspec of ANY"</font>+<a name="(line55)"></a>      <font color=Cyan>(</font>Mixed PCDATA<font color=Cyan>)</font>          <font color=Red>-&gt;</font> modifier None <font color=Red>[</font><font color=Red>[</font>String<font color=Red>]</font><font color=Red>]</font>+<a name="(line56)"></a>      <font color=Cyan>(</font>Mixed <font color=Cyan>(</font>PCDATAplus ns<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> modifier Star <font color=Cyan>(</font><font color=Red>[</font>String<font color=Red>]</font><font color=Red><b>:</b></font> map <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red><b>:</b></font>[]<font color=Cyan>)</font> <font color=Cyan>.</font> Defined <font color=Cyan>.</font> name<font color=Cyan>)</font> ns<font color=Cyan>)</font>+<a name="(line57)"></a>      <font color=Cyan>(</font>ContentSpec cp<font color=Cyan>)</font>        <font color=Red>-&gt;</font>+<a name="(line58)"></a>          <font color=Green><u>case</u></font> cp <font color=Green><u>of</u></font>+<a name="(line59)"></a>            <font color=Cyan>(</font>TagName n' m<font color=Cyan>)</font> <font color=Red>-&gt;</font> modifier m <font color=Red>[</font><font color=Red>[</font>Defined <font color=Cyan>(</font>name n'<font color=Cyan>)</font><font color=Red>]</font><font color=Red>]</font>+<a name="(line60)"></a>            <font color=Cyan>(</font>Choice cps m<font color=Cyan>)</font> <font color=Red>-&gt;</font> modifier m <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red><b>:</b></font>[]<font color=Cyan>)</font><font color=Cyan>.</font>inner<font color=Cyan>)</font> cps<font color=Cyan>)</font>+<a name="(line61)"></a>            <font color=Cyan>(</font>Seq cps m<font color=Cyan>)</font>    <font color=Red>-&gt;</font> modifier m <font color=Red>[</font>map inner cps<font color=Red>]</font>+<a name="(line62)"></a>    <font color=Cyan>++</font> concatMap <font color=Cyan>(</font>mkAttrDef n<font color=Cyan>)</font> <font color=Green><u>as</u></font>+<a name="(line63)"></a>  <font color=Green><u>where</u></font>+<a name="(line64)"></a>    attrs    <font color=Red>::</font> AttrFields+<a name="(line65)"></a>    attrs     <font color=Red>=</font> map <font color=Cyan>(</font>mkAttrField n<font color=Cyan>)</font> <font color=Green><u>as</u></font>+<a name="(line66)"></a>+<a name="(line67)"></a>    modifier None sts   <font color=Red>=</font> mkData sts            attrs False <font color=Cyan>(</font>name n<font color=Cyan>)</font>+<a name="(line68)"></a>    modifier m   <font color=Red>[</font><font color=Red>[</font>st<font color=Red>]</font><font color=Red>]</font> <font color=Red>=</font> mkData <font color=Red>[</font><font color=Red>[</font>modf m st<font color=Red>]</font><font color=Red>]</font>  attrs False <font color=Cyan>(</font>name n<font color=Cyan>)</font>+<a name="(line69)"></a>    modifier m    sts   <font color=Red>=</font> mkData <font color=Red>[</font><font color=Red>[</font>modf m <font color=Cyan>(</font>Defined <font color=Cyan>(</font>name_ n<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font><font color=Red>]</font>+<a name="(line70)"></a>                                                attrs False <font color=Cyan>(</font>name n<font color=Cyan>)</font> <font color=Cyan>++</font>+<a name="(line71)"></a>                          mkData sts            []    True  <font color=Cyan>(</font>name_ n<font color=Cyan>)</font>+<a name="(line72)"></a>+<a name="(line73)"></a>    inner <font color=Red>::</font> CP <font color=Red>-&gt;</font> StructType+<a name="(line74)"></a>    inner <font color=Cyan>(</font>TagName n' m<font color=Cyan>)</font> <font color=Red>=</font> modf m <font color=Cyan>(</font>Defined <font color=Cyan>(</font>name n'<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line75)"></a>    inner <font color=Cyan>(</font>Choice cps m<font color=Cyan>)</font> <font color=Red>=</font> modf m <font color=Cyan>(</font>OneOf <font color=Cyan>(</font>map inner cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line76)"></a>    inner <font color=Cyan>(</font>Seq cps None<font color=Cyan>)</font> <font color=Red>=</font> Tuple <font color=Cyan>(</font>map inner cps<font color=Cyan>)</font>+<a name="(line77)"></a>    inner <font color=Cyan>(</font>Seq cps m<font color=Cyan>)</font>    <font color=Red>=</font> modf m <font color=Cyan>(</font>Tuple <font color=Cyan>(</font>map inner cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line78)"></a>+<a name="(line79)"></a>    modf None x  <font color=Red>=</font> x+<a name="(line80)"></a>    modf Query x <font color=Red>=</font> Maybe x+<a name="(line81)"></a>    modf Star x  <font color=Red>=</font> List x+<a name="(line82)"></a>    modf Plus x  <font color=Red>=</font> List1 x+<a name="(line83)"></a>+<a name="(line84)"></a><a name="mkData"></a>mkData <font color=Red>::</font> <font color=Red>[</font><font color=Red>[</font>StructType<font color=Red>]</font><font color=Red>]</font> <font color=Red>-&gt;</font> AttrFields <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> <font color=Red>[</font>TypeDef<font color=Red>]</font>+<a name="(line85)"></a>mkData []   fs aux n  <font color=Red>=</font> <font color=Red>[</font>DataDef aux n fs []<font color=Red>]</font>+<a name="(line86)"></a>mkData <font color=Red>[</font>ts<font color=Red>]</font> fs aux n  <font color=Red>=</font> <font color=Red>[</font>DataDef aux n fs <font color=Red>[</font><font color=Cyan>(</font>n<font color=Cyan>,</font> ts<font color=Cyan>)</font><font color=Red>]</font><font color=Red>]</font>+<a name="(line87)"></a>mkData tss  fs aux n  <font color=Red>=</font> <font color=Red>[</font>DataDef aux n fs <font color=Cyan>(</font>map <font color=Cyan>(</font>mkConstr n<font color=Cyan>)</font> tss<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line88)"></a>  <font color=Green><u>where</u></font>+<a name="(line89)"></a>    mkConstr n ts <font color=Red>=</font> <font color=Cyan>(</font>mkConsName n ts<font color=Cyan>,</font> ts<font color=Cyan>)</font>+<a name="(line90)"></a>    mkConsName <font color=Cyan>(</font>Name x n<font color=Cyan>)</font> sts <font color=Red>=</font> Name x <font color=Cyan>(</font>n<font color=Cyan>++</font>concat <font color=Cyan>(</font>intersperse <font color=Magenta>"_"</font> <font color=Cyan>(</font>map flatten sts<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line91)"></a>    flatten <font color=Cyan>(</font>Maybe st<font color=Cyan>)</font>   <font color=Red>=</font> <font color=Blue>{-"Maybe_" ++ -}</font> flatten st+<a name="(line92)"></a>    flatten <font color=Cyan>(</font>List st<font color=Cyan>)</font>    <font color=Red>=</font> <font color=Blue>{-"List_" ++ -}</font> flatten st+<a name="(line93)"></a>    flatten <font color=Cyan>(</font>List1 st<font color=Cyan>)</font>   <font color=Red>=</font> <font color=Blue>{-"List1_" ++ -}</font> flatten st+<a name="(line94)"></a>    flatten <font color=Cyan>(</font>Tuple sts<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Blue>{-"Tuple" ++ show (length sts) ++ "_" ++ -}</font>+<a name="(line95)"></a>                            concat <font color=Cyan>(</font>intersperse <font color=Magenta>"_"</font> <font color=Cyan>(</font>map flatten sts<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line96)"></a>    flatten String       <font color=Red>=</font> <font color=Magenta>"Str"</font>+<a name="(line97)"></a>    flatten <font color=Cyan>(</font>OneOf sts<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Blue>{-"OneOf" ++ show (length sts) ++ "_" ++ -}</font>+<a name="(line98)"></a>                            concat <font color=Cyan>(</font>intersperse <font color=Magenta>"_"</font> <font color=Cyan>(</font>map flatten sts<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line99)"></a>    flatten Any          <font color=Red>=</font> <font color=Magenta>"Any"</font>+<a name="(line100)"></a>    flatten <font color=Cyan>(</font>Defined <font color=Cyan>(</font>Name <font color=Green><u>_</u></font> n<font color=Cyan>)</font><font color=Cyan>)</font>  <font color=Red>=</font> n+<a name="(line101)"></a>+<a name="(line102)"></a><a name="mkAttrDef"></a>mkAttrDef e <font color=Cyan>(</font>AttDef n StringType def<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line103)"></a>    []+<a name="(line104)"></a>mkAttrDef e <font color=Cyan>(</font>AttDef n <font color=Cyan>(</font>TokenizedType t<font color=Cyan>)</font> def<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line105)"></a>    [] <font color=Blue>-- mkData [[String]] [] False (name n)</font>+<a name="(line106)"></a>mkAttrDef e <font color=Cyan>(</font>AttDef n <font color=Cyan>(</font>EnumeratedType <font color=Cyan>(</font>NotationType nt<font color=Cyan>)</font><font color=Cyan>)</font> def<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line107)"></a>    <font color=Red>[</font>EnumDef <font color=Cyan>(</font>name_a e n<font color=Cyan>)</font> <font color=Cyan>(</font>map <font color=Cyan>(</font>name_ac e n<font color=Cyan>)</font> nt<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line108)"></a>mkAttrDef e <font color=Cyan>(</font>AttDef n <font color=Cyan>(</font>EnumeratedType <font color=Cyan>(</font>Enumeration es<font color=Cyan>)</font><font color=Cyan>)</font> def<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line109)"></a>    <font color=Red>[</font>EnumDef <font color=Cyan>(</font>name_a e n<font color=Cyan>)</font> <font color=Cyan>(</font>map <font color=Cyan>(</font>name_ac e n<font color=Cyan>)</font> es<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line110)"></a>        <font color=Blue>-- Default attribute values not handled here</font>+<a name="(line111)"></a>+<a name="(line112)"></a><a name="mkAttrField"></a>mkAttrField <font color=Red>::</font> String <font color=Red>-&gt;</font> AttDef <font color=Red>-&gt;</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font>StructType<font color=Cyan>)</font>+<a name="(line113)"></a>mkAttrField e <font color=Cyan>(</font>AttDef n typ req<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font>name_f e n<font color=Cyan>,</font> mkType typ req<font color=Cyan>)</font>+<a name="(line114)"></a>  <font color=Green><u>where</u></font>+<a name="(line115)"></a>    mkType StringType REQUIRED <font color=Red>=</font> String+<a name="(line116)"></a>    mkType StringType IMPLIED  <font color=Red>=</font> Maybe String+<a name="(line117)"></a>    mkType StringType <font color=Cyan>(</font>DefaultTo v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font> f<font color=Cyan>)</font> <font color=Red>=</font> Defaultable String <font color=Cyan>(</font>show v<font color=Cyan>)</font>+<a name="(line118)"></a>    mkType <font color=Cyan>(</font>TokenizedType <font color=Green><u>_</u></font><font color=Cyan>)</font> REQUIRED  <font color=Red>=</font> String+<a name="(line119)"></a>    mkType <font color=Cyan>(</font>TokenizedType <font color=Green><u>_</u></font><font color=Cyan>)</font> IMPLIED   <font color=Red>=</font> Maybe String+<a name="(line120)"></a>    mkType <font color=Cyan>(</font>TokenizedType <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Cyan>(</font>DefaultTo v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font> f<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line121)"></a>							Defaultable String <font color=Cyan>(</font>show v<font color=Cyan>)</font>+<a name="(line122)"></a>    mkType <font color=Cyan>(</font>EnumeratedType <font color=Green><u>_</u></font><font color=Cyan>)</font> REQUIRED <font color=Red>=</font> Defined <font color=Cyan>(</font>name_a e n<font color=Cyan>)</font>+<a name="(line123)"></a>    mkType <font color=Cyan>(</font>EnumeratedType <font color=Green><u>_</u></font><font color=Cyan>)</font> IMPLIED  <font color=Red>=</font> Maybe <font color=Cyan>(</font>Defined <font color=Cyan>(</font>name_a e n<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line124)"></a>    mkType <font color=Cyan>(</font>EnumeratedType <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Cyan>(</font>DefaultTo v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font> f<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line125)"></a>		Defaultable <font color=Cyan>(</font>Defined <font color=Cyan>(</font>name_a e n<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>hName <font color=Cyan>(</font>name_ac e n <font color=Cyan>(</font>show v<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line126)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/DtdToHaskell/Instance.html view
@@ -0,0 +1,395 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>DtdToHaskell<font color=Cyan>.</font>Instance+<a name="(line2)"></a>  <font color=Cyan>(</font> mkInstance+<a name="(line3)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line4)"></a>+<a name="(line5)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>+<a name="(line6)"></a>+<a name="(line7)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>DtdToHaskell<font color=Cyan>.</font>TypeDef+<a name="(line8)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ+<a name="(line9)"></a>+<a name="(line10)"></a><a name="mkInstance"></a><font color=Blue>-- | Convert typedef to appropriate instance declaration, either @XmlContent@,</font>+<a name="(line11)"></a><font color=Blue>--   @XmlAttributes@, or @XmlAttrType@.</font>+<a name="(line12)"></a>mkInstance <font color=Red>::</font> TypeDef <font color=Red>-&gt;</font> Doc+<a name="(line13)"></a>+<a name="(line14)"></a><font color=Blue>-- no constructors - represents an element with empty content but attributes.</font>+<a name="(line15)"></a>mkInstance <font color=Cyan>(</font>DataDef aux n fs []<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line16)"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>frpat<font color=Cyan>,</font> frattr<font color=Cyan>,</font> topat<font color=Cyan>,</font> toattr<font color=Cyan>)</font> <font color=Red>=</font> attrpats fs+<a name="(line17)"></a>        frretval <font color=Red>=</font> <font color=Green><u>if</u></font> null fs <font color=Green><u>then</u></font> ppHName n <font color=Green><u>else</u></font> frattr+<a name="(line18)"></a>        topatval <font color=Red>=</font> <font color=Green><u>if</u></font> null fs <font color=Green><u>then</u></font> ppHName n <font color=Green><u>else</u></font> topat+<a name="(line19)"></a>    <font color=Green><u>in</u></font>+<a name="(line20)"></a>    text <font color=Magenta>"instance HTypeable"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line21)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"toHType x = Defined \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\" [] []"</font> <font color=Cyan>)</font>+<a name="(line22)"></a>    <font color=Cyan>$$</font>+<a name="(line23)"></a>    text <font color=Magenta>"instance XmlContent"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line24)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font>+<a name="(line25)"></a>             text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> topatval <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>$$</font>+<a name="(line26)"></a>             nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"[CElem (Elem \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line27)"></a>                          <font color=Cyan>&lt;+&gt;</font> toattr <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"[]) ()]"</font><font color=Cyan>)</font>+<a name="(line28)"></a>           <font color=Cyan>$$</font>+<a name="(line29)"></a>             text <font color=Magenta>"parseContents = do"</font> <font color=Cyan>$$</font>+<a name="(line30)"></a>             nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"{ (Elem _ as []) &lt;- element [\""</font>+<a name="(line31)"></a>                             <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\"]"</font> <font color=Cyan>$$</font>+<a name="(line32)"></a>                     text <font color=Magenta>"; return"</font> <font color=Cyan>&lt;+&gt;</font> frretval <font color=Cyan>$$</font>+<a name="(line33)"></a>                     text <font color=Magenta>"} `adjustErr` (\"in &lt;"</font> <font color=Cyan>&lt;&gt;</font> ppXName n+<a name="(line34)"></a>                                                  <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;, \"++)"</font>+<a name="(line35)"></a>                    <font color=Cyan>)</font>+<a name="(line36)"></a>           <font color=Cyan>)</font>+<a name="(line37)"></a>    <font color=Cyan>$$</font>+<a name="(line38)"></a>    mkInstanceAttrs Same n fs+<a name="(line39)"></a>+<a name="(line40)"></a><font color=Blue>-- single constructor, "real" (non-auxiliary) type</font>+<a name="(line41)"></a>mkInstance <font color=Cyan>(</font>DataDef False n fs <font color=Red>[</font><font color=Cyan>(</font>n0<font color=Cyan>,</font>sts<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line42)"></a>    <font color=Green><u>let</u></font> vs <font color=Red>=</font> nameSupply sts+<a name="(line43)"></a>        <font color=Cyan>(</font>frpat<font color=Cyan>,</font> frattr<font color=Cyan>,</font> topat<font color=Cyan>,</font> toattr<font color=Cyan>)</font> <font color=Red>=</font> attrpats fs+<a name="(line44)"></a>    <font color=Green><u>in</u></font>+<a name="(line45)"></a>    text <font color=Magenta>"instance HTypeable"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line46)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"toHType x = Defined \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\" [] []"</font> <font color=Cyan>)</font>+<a name="(line47)"></a>    <font color=Cyan>$$</font>+<a name="(line48)"></a>    text <font color=Magenta>"instance XmlContent"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line49)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font>+<a name="(line50)"></a>             text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>mkCpat n0 topat vs<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>$$</font>+<a name="(line51)"></a>             nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"[CElem (Elem \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line52)"></a>                          <font color=Cyan>&lt;+&gt;</font> toattr <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>mkToElem sts vs<font color=Cyan>)</font>+<a name="(line53)"></a>                          <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>") ()]"</font><font color=Cyan>)</font>+<a name="(line54)"></a>           <font color=Cyan>$$</font>+<a name="(line55)"></a>             text <font color=Magenta>"parseContents = do"</font> <font color=Cyan>$$</font>+<a name="(line56)"></a>             nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"{ e@(Elem _"</font><font color=Cyan>&lt;+&gt;</font> frpat <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"_) &lt;- element [\""</font>+<a name="(line57)"></a>                             <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\"]"</font>+<a name="(line58)"></a>                     <font color=Cyan>$$</font> text <font color=Magenta>"; interior e $"</font>+<a name="(line59)"></a>                           <font color=Cyan>&lt;+&gt;</font> <font color=Cyan>(</font>mkParseConstr frattr <font color=Cyan>(</font>n0<font color=Cyan>,</font>sts<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line60)"></a>                     <font color=Cyan>$$</font> text <font color=Magenta>"} `adjustErr` (\"in &lt;"</font> <font color=Cyan>&lt;&gt;</font> ppXName n+<a name="(line61)"></a>                                                     <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;, \"++)"</font><font color=Cyan>)</font>+<a name="(line62)"></a>           <font color=Cyan>)</font>+<a name="(line63)"></a>    <font color=Cyan>$$</font>+<a name="(line64)"></a>    mkInstanceAttrs Extended n fs+<a name="(line65)"></a>+<a name="(line66)"></a><font color=Blue>-- single constructor, auxiliary type (i.e. no corresponding element tag)</font>+<a name="(line67)"></a><font color=Blue>--   cannot be attributes here?</font>+<a name="(line68)"></a>mkInstance <font color=Cyan>(</font>DataDef True n [] <font color=Red>[</font><font color=Cyan>(</font>n0<font color=Cyan>,</font>sts<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line69)"></a>    <font color=Green><u>let</u></font> vs <font color=Red>=</font> nameSupply sts+<a name="(line70)"></a>    <font color=Green><u>in</u></font>+<a name="(line71)"></a>    text <font color=Magenta>"instance HTypeable"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line72)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"toHType x = Defined \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\" [] []"</font> <font color=Cyan>)</font>+<a name="(line73)"></a>    <font color=Cyan>$$</font>+<a name="(line74)"></a>    text <font color=Magenta>"instance XmlContent"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line75)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>mkCpat n0 empty vs<font color=Cyan>)</font>+<a name="(line76)"></a>                               <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font>+<a name="(line77)"></a>                               <font color=Cyan>$$</font>  nest <font color=Magenta>4</font> <font color=Cyan>(</font>parens <font color=Cyan>(</font>mkToElem sts vs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line78)"></a>           <font color=Cyan>$$</font>+<a name="(line79)"></a>             text <font color=Magenta>"parseContents ="</font> <font color=Cyan>&lt;+&gt;</font> mkParseConstr empty <font color=Cyan>(</font>n0<font color=Cyan>,</font>sts<font color=Cyan>)</font>+<a name="(line80)"></a>           <font color=Cyan>)</font>+<a name="(line81)"></a>+<a name="(line82)"></a><font color=Blue>-- multiple constructors (real)</font>+<a name="(line83)"></a>mkInstance <font color=Cyan>(</font>DataDef False n fs cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line84)"></a>    <font color=Green><u>let</u></font> vs <font color=Red>=</font> nameSupply cs+<a name="(line85)"></a>        <font color=Cyan>(</font>frpat<font color=Cyan>,</font> frattr<font color=Cyan>,</font> topat<font color=Cyan>,</font> toattr<font color=Cyan>)</font> <font color=Red>=</font> attrpats fs+<a name="(line86)"></a>        mixattrs <font color=Red>=</font> <font color=Green><u>if</u></font> null fs <font color=Green><u>then</u></font> False <font color=Green><u>else</u></font> True+<a name="(line87)"></a>    <font color=Green><u>in</u></font>+<a name="(line88)"></a>    text <font color=Magenta>"instance HTypeable"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line89)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"toHType x = Defined \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\" [] []"</font> <font color=Cyan>)</font>+<a name="(line90)"></a>    <font color=Cyan>$$</font>+<a name="(line91)"></a>    text <font color=Magenta>"instance XmlContent"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line92)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> vcat <font color=Cyan>(</font>map <font color=Cyan>(</font>mkToMult n topat toattr<font color=Cyan>)</font> cs<font color=Cyan>)</font>+<a name="(line93)"></a>           <font color=Cyan>$$</font> text <font color=Magenta>"parseContents = do "</font>+<a name="(line94)"></a>           <font color=Cyan>$$</font> nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"{ e@(Elem _"</font><font color=Cyan>&lt;+&gt;</font> frpat <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"_) &lt;- element [\""</font>+<a name="(line95)"></a>                                                  <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\"]"</font>+<a name="(line96)"></a>                     <font color=Cyan>$$</font> text <font color=Magenta>"; interior e $ oneOf"</font>+<a name="(line97)"></a>                     <font color=Cyan>$$</font> nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"["</font> <font color=Cyan>&lt;+&gt;</font> mkParseConstr frattr <font color=Cyan>(</font>head cs<font color=Cyan>)</font>+<a name="(line98)"></a>                               <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> text <font color=Magenta>","</font> <font color=Cyan>&lt;+&gt;</font> mkParseConstr frattr c<font color=Cyan>)</font>+<a name="(line99)"></a>                                            <font color=Cyan>(</font>tail cs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line100)"></a>                               <font color=Cyan>$$</font> text <font color=Magenta>"] `adjustErr` (\"in &lt;"</font> <font color=Cyan>&lt;&gt;</font> ppXName n+<a name="(line101)"></a>                                                             <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;, \"++)"</font>+<a name="(line102)"></a>                               <font color=Cyan>)</font>+<a name="(line103)"></a>                     <font color=Cyan>$$</font> text <font color=Magenta>"}"</font>+<a name="(line104)"></a>                     <font color=Cyan>)</font>+<a name="(line105)"></a>           <font color=Cyan>)</font>+<a name="(line106)"></a>    <font color=Cyan>$$</font>+<a name="(line107)"></a>    mkInstanceAttrs Extended n fs+<a name="(line108)"></a>+<a name="(line109)"></a><font color=Blue>-- multiple constructors (auxiliary)</font>+<a name="(line110)"></a>mkInstance <font color=Cyan>(</font>DataDef True n fs cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line111)"></a>    <font color=Green><u>let</u></font> vs <font color=Red>=</font> nameSupply cs+<a name="(line112)"></a>        <font color=Cyan>(</font>frpat<font color=Cyan>,</font> frattr<font color=Cyan>,</font> topat<font color=Cyan>,</font> toattr<font color=Cyan>)</font> <font color=Red>=</font> attrpats fs+<a name="(line113)"></a>        mixattrs <font color=Red>=</font> <font color=Green><u>if</u></font> null fs <font color=Green><u>then</u></font> False <font color=Green><u>else</u></font> True+<a name="(line114)"></a>    <font color=Green><u>in</u></font>+<a name="(line115)"></a>    text <font color=Magenta>"instance HTypeable"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line116)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"toHType x = Defined \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\" [] []"</font> <font color=Cyan>)</font>+<a name="(line117)"></a>    <font color=Cyan>$$</font>+<a name="(line118)"></a>    text <font color=Magenta>"instance XmlContent"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line119)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> vcat <font color=Cyan>(</font>map <font color=Cyan>(</font>mkToAux mixattrs<font color=Cyan>)</font> cs<font color=Cyan>)</font>+<a name="(line120)"></a>           <font color=Cyan>$$</font> text <font color=Magenta>"parseContents = oneOf"</font>+<a name="(line121)"></a>           <font color=Cyan>$$</font> nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"["</font> <font color=Cyan>&lt;+&gt;</font> mkParseConstr frattr <font color=Cyan>(</font>head cs<font color=Cyan>)</font>+<a name="(line122)"></a>                     <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> text <font color=Magenta>","</font> <font color=Cyan>&lt;+&gt;</font> mkParseConstr frattr c<font color=Cyan>)</font>+<a name="(line123)"></a>                                  <font color=Cyan>(</font>tail cs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line124)"></a>                     <font color=Cyan>$$</font> text <font color=Magenta>"] `adjustErr` (\"in &lt;"</font> <font color=Cyan>&lt;&gt;</font> ppXName n+<a name="(line125)"></a>                                                     <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;, \"++)"</font>+<a name="(line126)"></a>                     <font color=Cyan>)</font>+<a name="(line127)"></a>           <font color=Cyan>)</font>+<a name="(line128)"></a>    <font color=Cyan>$$</font>+<a name="(line129)"></a>    mkInstanceAttrs Extended n fs+<a name="(line130)"></a>+<a name="(line131)"></a><font color=Blue>-- enumeration of attribute values</font>+<a name="(line132)"></a>mkInstance <font color=Cyan>(</font>EnumDef n es<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line133)"></a>    text <font color=Magenta>"instance XmlAttrType"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line134)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"fromAttrToTyp n (n',v)"</font> <font color=Cyan>$$</font>+<a name="(line135)"></a>             nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"| n==n'     = translate (attr2str v)"</font> <font color=Cyan>$$</font>+<a name="(line136)"></a>                     text <font color=Magenta>"| otherwise = Nothing"</font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line137)"></a>             nest <font color=Magenta>2</font> <font color=Cyan>(</font>text <font color=Magenta>"where"</font> <font color=Cyan>&lt;+&gt;</font> mkTranslate es<font color=Cyan>)</font>+<a name="(line138)"></a>           <font color=Cyan>$$</font>+<a name="(line139)"></a>             vcat <font color=Cyan>(</font>map mkToAttr es<font color=Cyan>)</font>+<a name="(line140)"></a>           <font color=Cyan>)</font>+<a name="(line141)"></a>+<a name="(line142)"></a>+<a name="(line143)"></a><a name="SameName"></a><font color=Green><u>data</u></font> SameName <font color=Red>=</font> Same <font color=Red>|</font> Extended+<a name="(line144)"></a>+<a name="(line145)"></a><a name="mkInstanceAttrs"></a>mkInstanceAttrs        <font color=Red>::</font> SameName <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> AttrFields <font color=Red>-&gt;</font> Doc+<a name="(line146)"></a>mkInstanceAttrs s n []  <font color=Red>=</font> empty+<a name="(line147)"></a>mkInstanceAttrs s n fs  <font color=Red>=</font>+<a name="(line148)"></a>    <font color=Green><u>let</u></font> ppName <font color=Red>=</font> <font color=Green><u>case</u></font> s <font color=Green><u>of</u></font> <font color=Cyan>{</font> Same<font color=Red>-&gt;</font> ppHName<font color=Cyan>;</font>  Extended<font color=Red>-&gt;</font> ppAName<font color=Cyan>;</font> <font color=Cyan>}</font>+<a name="(line149)"></a>    <font color=Green><u>in</u></font>+<a name="(line150)"></a>    text <font color=Magenta>"instance XmlAttributes"</font> <font color=Cyan>&lt;+&gt;</font> ppName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"where"</font> <font color=Cyan>$$</font>+<a name="(line151)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"fromAttrs as ="</font> <font color=Cyan>$$</font>+<a name="(line152)"></a>             nest <font color=Magenta>4</font> <font color=Cyan>(</font> ppName n <font color=Cyan>$$</font>+<a name="(line153)"></a>                      nest <font color=Magenta>2</font> <font color=Cyan>(</font>vcat <font color=Cyan>(</font><font color=Cyan>(</font>text <font color=Magenta>"{"</font> <font color=Cyan>&lt;+&gt;</font> mkFrFld n <font color=Cyan>(</font>head fs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font>+<a name="(line154)"></a>                                     map <font color=Cyan>(</font><font color=Red>\</font>x<font color=Red>-&gt;</font> comma <font color=Cyan>&lt;+&gt;</font> mkFrFld n x<font color=Cyan>)</font> <font color=Cyan>(</font>tail fs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line155)"></a>                              text <font color=Magenta>"}"</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line156)"></a>           <font color=Cyan>$$</font>+<a name="(line157)"></a>             text <font color=Magenta>"toAttrs v = catMaybes "</font> <font color=Cyan>$$</font>+<a name="(line158)"></a>             nest <font color=Magenta>4</font> <font color=Cyan>(</font>vcat <font color=Cyan>(</font><font color=Cyan>(</font>text <font color=Magenta>"["</font> <font color=Cyan>&lt;+&gt;</font> mkToFld <font color=Cyan>(</font>head fs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font>+<a name="(line159)"></a>                           map <font color=Cyan>(</font><font color=Red>\</font>x<font color=Red>-&gt;</font> comma <font color=Cyan>&lt;+&gt;</font> mkToFld x<font color=Cyan>)</font> <font color=Cyan>(</font>tail fs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line160)"></a>                     text <font color=Magenta>"]"</font><font color=Cyan>)</font>+<a name="(line161)"></a>           <font color=Cyan>)</font>+<a name="(line162)"></a>+<a name="(line163)"></a>+<a name="(line164)"></a><a name="attrpats"></a><font color=Blue>--                  respectively (frpat,frattr,topat,toattr)</font>+<a name="(line165)"></a>attrpats <font color=Red>::</font> AttrFields <font color=Red>-&gt;</font> <font color=Cyan>(</font>Doc<font color=Cyan>,</font>Doc<font color=Cyan>,</font>Doc<font color=Cyan>,</font>Doc<font color=Cyan>)</font>+<a name="(line166)"></a>attrpats fs <font color=Red>=</font>+<a name="(line167)"></a>  <font color=Green><u>if</u></font> null fs <font color=Green><u>then</u></font> <font color=Cyan>(</font>text <font color=Magenta>"[]"</font><font color=Cyan>,</font> empty<font color=Cyan>,</font> empty<font color=Cyan>,</font> text <font color=Magenta>"[]"</font><font color=Cyan>)</font>+<a name="(line168)"></a>  <font color=Green><u>else</u></font> <font color=Cyan>(</font>text <font color=Magenta>"as"</font><font color=Cyan>,</font> parens <font color=Cyan>(</font>text <font color=Magenta>"fromAttrs as"</font><font color=Cyan>)</font><font color=Cyan>,</font> text <font color=Magenta>"as"</font><font color=Cyan>,</font> parens <font color=Cyan>(</font>text <font color=Magenta>"toAttrs as"</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line169)"></a>+<a name="(line170)"></a>+<a name="(line171)"></a>+<a name="(line172)"></a>+<a name="(line173)"></a><a name="mkFrElem"></a>mkFrElem <font color=Red>::</font> Name <font color=Red>-&gt;</font> <font color=Red>[</font>StructType<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Doc<font color=Red>]</font> <font color=Red>-&gt;</font> Doc <font color=Red>-&gt;</font> Doc+<a name="(line174)"></a>mkFrElem n sts vs inner <font color=Red>=</font>+<a name="(line175)"></a>    foldr <font color=Cyan>(</font>frElem n<font color=Cyan>)</font> inner <font color=Cyan>(</font>zip3 sts vs cvs<font color=Cyan>)</font>+<a name="(line176)"></a>  <font color=Green><u>where</u></font>+<a name="(line177)"></a>    cvs <font color=Red>=</font> <font color=Green><u>let</u></font> ns <font color=Red>=</font> nameSupply2 vs+<a name="(line178)"></a>          <font color=Green><u>in</u></font> zip ns <font color=Cyan>(</font>text <font color=Magenta>"c0"</font><font color=Red><b>:</b></font> init ns<font color=Cyan>)</font>+<a name="(line179)"></a>    frElem n <font color=Cyan>(</font>st<font color=Cyan>,</font>v<font color=Cyan>,</font><font color=Cyan>(</font>cvi<font color=Cyan>,</font>cvo<font color=Cyan>)</font><font color=Cyan>)</font> inner <font color=Red>=</font>+<a name="(line180)"></a>        parens <font color=Cyan>(</font>text <font color=Magenta>"\\"</font> <font color=Cyan>&lt;&gt;</font> parens <font color=Cyan>(</font>v<font color=Cyan>&lt;&gt;</font>comma<font color=Cyan>&lt;&gt;</font>cvi<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"-&gt;"</font> <font color=Cyan>$$</font>+<a name="(line181)"></a>                nest <font color=Magenta>2</font> inner<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line182)"></a>        parens <font color=Cyan>(</font>+<a name="(line183)"></a>          <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line184)"></a>            <font color=Cyan>(</font>Maybe String<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"fromText"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line185)"></a>            <font color=Cyan>(</font>Maybe s<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line186)"></a>            <font color=Cyan>(</font>List String<font color=Cyan>)</font>   <font color=Red>-&gt;</font> text <font color=Magenta>"many fromText"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line187)"></a>            <font color=Cyan>(</font>List s<font color=Cyan>)</font>        <font color=Red>-&gt;</font> text <font color=Magenta>"many fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line188)"></a>            <font color=Cyan>(</font>List1 s<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"definite fromElem"</font>+<a name="(line189)"></a>                               <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> text <font color=Cyan>(</font>show s<font color=Cyan>)</font><font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"+\""</font>+<a name="(line190)"></a>                               <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line191)"></a>                               <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line192)"></a>            <font color=Cyan>(</font>Tuple ss<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"definite fromElem"</font>+<a name="(line193)"></a>                           <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\"("</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>","</font><font color=Cyan>)</font>+<a name="(line194)"></a>                                                           <font color=Cyan>(</font>map <font color=Cyan>(</font>text<font color=Cyan>.</font>show<font color=Cyan>)</font> ss<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line195)"></a>                                          <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>")\""</font>+<a name="(line196)"></a>                           <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line197)"></a>                           <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line198)"></a>            <font color=Cyan>(</font>OneOf ss<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"definite fromElem"</font>+<a name="(line199)"></a>                           <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\"OneOf\""</font>+<a name="(line200)"></a>                           <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line201)"></a>                           <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line202)"></a>            <font color=Cyan>(</font>String<font color=Cyan>)</font>    <font color=Red>-&gt;</font> text <font color=Magenta>"definite fromText"</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\"text\" \""</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line203)"></a>                                                 ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line204)"></a>            <font color=Cyan>(</font>Any<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"definite fromElem"</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\"ANY\" \""</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line205)"></a>                                                 ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line206)"></a>            <font color=Cyan>(</font>Defined m<font color=Cyan>)</font> <font color=Red>-&gt;</font> text <font color=Magenta>"definite fromElem"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line207)"></a>				 text <font color=Magenta>"\"&lt;"</font> <font color=Cyan>&lt;&gt;</font> ppXName m <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;\" \""</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line208)"></a>                                                 ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line209)"></a>            <font color=Cyan>(</font>Defaultable <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"nyi_fromElem_Defaultable"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line210)"></a>          <font color=Cyan>)</font>+<a name="(line211)"></a>+<a name="(line212)"></a><font color=Blue>-- </font>+<a name="(line213)"></a><font color=Blue>{-+<a name="(line214)"></a>mkParseContents :: Name -&gt; [StructType] -&gt; [Doc] -&gt; Doc -&gt; Doc+<a name="(line215)"></a>mkParseContents n sts vs inner =+<a name="(line216)"></a>    foldr (frElem n) inner (zip3 sts vs cvs)+<a name="(line217)"></a>  where+<a name="(line218)"></a>    cvs = let ns = nameSupply2 vs+<a name="(line219)"></a>          in zip ns (text "c0": init ns)+<a name="(line220)"></a>    frElem n (st,v,(cvi,cvo)) inner =+<a name="(line221)"></a>        parens (text "\\" &lt;&gt; parens (v&lt;&gt;comma&lt;&gt;cvi) &lt;&gt; text "-&gt;" $$+<a name="(line222)"></a>                nest 2 inner) $$+<a name="(line223)"></a>        parens (+<a name="(line224)"></a>          )+<a name="(line225)"></a>-}</font>+<a name="(line226)"></a>+<a name="(line227)"></a><a name="mkParseConstr"></a>mkParseConstr frattr <font color=Cyan>(</font>c<font color=Cyan>,</font>sts<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line228)"></a>        fsep <font color=Cyan>(</font>text <font color=Magenta>"return"</font> <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>ppHName c <font color=Cyan>&lt;+&gt;</font> frattr<font color=Cyan>)</font>+<a name="(line229)"></a>             <font color=Red><b>:</b></font> map mkParseContents sts<font color=Cyan>)</font>+<a name="(line230)"></a>+<a name="(line231)"></a><a name="mkParseContents"></a>mkParseContents st <font color=Red>=</font>+<a name="(line232)"></a>  <font color=Green><u>let</u></font> ap <font color=Red>=</font> text <font color=Magenta>"`apply`"</font> <font color=Green><u>in</u></font>+<a name="(line233)"></a>          <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line234)"></a>            <font color=Cyan>(</font>Maybe String<font color=Cyan>)</font>  <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"optional text"</font>+<a name="(line235)"></a>            <font color=Cyan>(</font>Maybe s<font color=Cyan>)</font>       <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"optional parseContents"</font>+<a name="(line236)"></a>            <font color=Cyan>(</font>List String<font color=Cyan>)</font>   <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"many text"</font>+<a name="(line237)"></a>            <font color=Cyan>(</font>List s<font color=Cyan>)</font>        <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"many parseContents"</font>+<a name="(line238)"></a>            <font color=Cyan>(</font>List1 s<font color=Cyan>)</font>       <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"parseContents"</font>+<a name="(line239)"></a>            <font color=Cyan>(</font>Tuple ss<font color=Cyan>)</font>      <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"parseContents"</font>+<a name="(line240)"></a>            <font color=Cyan>(</font>OneOf ss<font color=Cyan>)</font>      <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"parseContents"</font>+<a name="(line241)"></a>            <font color=Cyan>(</font>String<font color=Cyan>)</font>        <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"(text `onFail` return \"\")"</font>+<a name="(line242)"></a>            <font color=Cyan>(</font>Any<font color=Cyan>)</font>           <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"parseContents"</font>+<a name="(line243)"></a>            <font color=Cyan>(</font>Defined m<font color=Cyan>)</font>     <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"parseContents"</font>+<a name="(line244)"></a>            <font color=Cyan>(</font>Defaultable <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> ap <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"nyi_fromElem_Defaultable"</font>+<a name="(line245)"></a>+<a name="(line246)"></a><a name="mkToElem"></a><font color=Blue>--</font>+<a name="(line247)"></a>mkToElem <font color=Red>::</font> <font color=Red>[</font>StructType<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Doc<font color=Red>]</font> <font color=Red>-&gt;</font> Doc+<a name="(line248)"></a>mkToElem []  [] <font color=Red>=</font> text <font color=Magenta>"[]"</font>+<a name="(line249)"></a>mkToElem sts vs <font color=Red>=</font>+<a name="(line250)"></a>    fsep <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"++"</font><font color=Cyan>)</font> <font color=Cyan>(</font>zipWith toElem sts vs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line251)"></a>  <font color=Green><u>where</u></font>+<a name="(line252)"></a>    toElem st v <font color=Red>=</font>+<a name="(line253)"></a>      <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line254)"></a>        <font color=Cyan>(</font>Maybe String<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"maybe [] toText"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line255)"></a>        <font color=Cyan>(</font>Maybe s<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"maybe [] toContents"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line256)"></a>        <font color=Cyan>(</font>List String<font color=Cyan>)</font>   <font color=Red>-&gt;</font> text <font color=Magenta>"concatMap toText"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line257)"></a>        <font color=Cyan>(</font>List s<font color=Cyan>)</font>        <font color=Red>-&gt;</font> text <font color=Magenta>"concatMap toContents"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line258)"></a>        <font color=Cyan>(</font>List1 s<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line259)"></a>        <font color=Cyan>(</font>Tuple ss<font color=Cyan>)</font>      <font color=Red>-&gt;</font> text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line260)"></a>        <font color=Cyan>(</font>OneOf ss<font color=Cyan>)</font>      <font color=Red>-&gt;</font> text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line261)"></a>        <font color=Cyan>(</font>String<font color=Cyan>)</font>        <font color=Red>-&gt;</font> text <font color=Magenta>"toText"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line262)"></a>        <font color=Cyan>(</font>Any<font color=Cyan>)</font>           <font color=Red>-&gt;</font> text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line263)"></a>        <font color=Cyan>(</font>Defined m<font color=Cyan>)</font>     <font color=Red>-&gt;</font> text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line264)"></a>        <font color=Cyan>(</font>Defaultable <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"nyi_toElem_Defaultable"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line265)"></a>+<a name="(line266)"></a><a name="mkRpat"></a>mkRpat <font color=Red>::</font> <font color=Red>[</font>Doc<font color=Red>]</font> <font color=Red>-&gt;</font> Doc+<a name="(line267)"></a>mkRpat <font color=Red>[</font>v<font color=Red>]</font> <font color=Red>=</font> v+<a name="(line268)"></a>mkRpat vs  <font color=Red>=</font> <font color=Cyan>(</font>parens <font color=Cyan>.</font> hcat <font color=Cyan>.</font> intersperse comma<font color=Cyan>)</font> vs+<a name="(line269)"></a>+<a name="(line270)"></a><a name="mkCpat"></a>mkCpat <font color=Red>::</font> Name <font color=Red>-&gt;</font> Doc <font color=Red>-&gt;</font> <font color=Red>[</font>Doc<font color=Red>]</font> <font color=Red>-&gt;</font> Doc+<a name="(line271)"></a>mkCpat n i vs <font color=Red>=</font> ppHName n <font color=Cyan>&lt;+&gt;</font> i <font color=Cyan>&lt;+&gt;</font> fsep vs+<a name="(line272)"></a>+<a name="(line273)"></a><a name="nameSupply"></a>nameSupply<font color=Cyan>,</font>nameSupply2 <font color=Red>::</font> <font color=Red>[</font>b<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Doc<font color=Red>]</font>+<a name="(line274)"></a>nameSupply  ss <font color=Red>=</font> take <font color=Cyan>(</font>length ss<font color=Cyan>)</font> <font color=Cyan>(</font>map char <font color=Red>[</font><font color=Magenta>'a'</font><font color=Red>..</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line275)"></a><a name="nameSupply2"></a>nameSupply2 ss <font color=Red>=</font> take <font color=Cyan>(</font>length ss<font color=Cyan>)</font> <font color=Red>[</font> text <font color=Cyan>(</font><font color=Magenta>'c'</font><font color=Red><b>:</b></font>v<font color=Red><b>:</b></font>[]<font color=Cyan>)</font> <font color=Red>|</font> v <font color=Red>&lt;-</font> <font color=Red>[</font><font color=Magenta>'a'</font><font color=Red>..</font><font color=Red>]</font><font color=Red>]</font>+<a name="(line276)"></a>+<a name="(line277)"></a><a name="mkTranslate"></a>mkTranslate <font color=Red>::</font> <font color=Red>[</font>Name<font color=Red>]</font> <font color=Red>-&gt;</font> Doc+<a name="(line278)"></a>mkTranslate es <font color=Red>=</font>+<a name="(line279)"></a>    vcat <font color=Cyan>(</font>map trans es<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line280)"></a>    text <font color=Magenta>"translate _ = Nothing"</font>+<a name="(line281)"></a>  <font color=Green><u>where</u></font>+<a name="(line282)"></a>    trans n <font color=Red>=</font> text <font color=Magenta>"translate \""</font> <font color=Cyan>&lt;&gt;</font> ppXName n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\" ="</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line283)"></a>              text <font color=Magenta>"Just"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n+<a name="(line284)"></a>+<a name="(line285)"></a><a name="mkToAttr"></a>mkToAttr n <font color=Red>=</font> text <font color=Magenta>"toAttrFrTyp n"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line286)"></a>             text <font color=Magenta>"Just (n, str2attr"</font> <font color=Cyan>&lt;+&gt;</font> doubleQuotes <font color=Cyan>(</font>ppXName n<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>")"</font>+<a name="(line287)"></a>+<a name="(line288)"></a><a name="mkFrFld"></a>mkFrFld <font color=Red>::</font> Name <font color=Red>-&gt;</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font>StructType<font color=Cyan>)</font> <font color=Red>-&gt;</font> Doc+<a name="(line289)"></a>mkFrFld tag <font color=Cyan>(</font>n<font color=Cyan>,</font>st<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line290)"></a>    ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line291)"></a>    <font color=Cyan>(</font> <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line292)"></a>        <font color=Cyan>(</font>Defaultable String s<font color=Cyan>)</font> <font color=Red>-&gt;</font> text <font color=Magenta>"defaultA fromAttrToStr"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line293)"></a>						 doubleQuotes <font color=Cyan>(</font>text s<font color=Cyan>)</font>+<a name="(line294)"></a>        <font color=Cyan>(</font>Defaultable <font color=Green><u>_</u></font> s<font color=Cyan>)</font>      <font color=Red>-&gt;</font> text <font color=Magenta>"defaultA fromAttrToTyp"</font> <font color=Cyan>&lt;+&gt;</font> text s+<a name="(line295)"></a>        <font color=Cyan>(</font>Maybe String<font color=Cyan>)</font>         <font color=Red>-&gt;</font> text <font color=Magenta>"possibleA fromAttrToStr"</font>+<a name="(line296)"></a>        <font color=Cyan>(</font>Maybe <font color=Green><u>_</u></font><font color=Cyan>)</font>              <font color=Red>-&gt;</font> text <font color=Magenta>"possibleA fromAttrToTyp"</font>+<a name="(line297)"></a>        String                 <font color=Red>-&gt;</font> text <font color=Magenta>"definiteA fromAttrToStr"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line298)"></a>						 doubleQuotes <font color=Cyan>(</font>ppXName tag<font color=Cyan>)</font>+<a name="(line299)"></a>        <font color=Green><u>_</u></font>                      <font color=Red>-&gt;</font> text <font color=Magenta>"definiteA fromAttrToTyp"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line300)"></a>						 doubleQuotes <font color=Cyan>(</font>ppXName tag<font color=Cyan>)</font>+<a name="(line301)"></a>    <font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> doubleQuotes <font color=Cyan>(</font>ppXName n<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"as"</font>+<a name="(line302)"></a>+<a name="(line303)"></a><a name="mkToFld"></a>mkToFld <font color=Red>::</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font>StructType<font color=Cyan>)</font> <font color=Red>-&gt;</font> Doc+<a name="(line304)"></a>mkToFld <font color=Cyan>(</font>n<font color=Cyan>,</font>st<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line305)"></a>    <font color=Cyan>(</font> <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line306)"></a>        <font color=Cyan>(</font>Defaultable String <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> text <font color=Magenta>"defaultToAttr toAttrFrStr"</font>+<a name="(line307)"></a>        <font color=Cyan>(</font>Defaultable <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>-&gt;</font> text <font color=Magenta>"defaultToAttr toAttrFrTyp"</font>+<a name="(line308)"></a>        <font color=Cyan>(</font>Maybe String<font color=Cyan>)</font>         <font color=Red>-&gt;</font> text <font color=Magenta>"maybeToAttr toAttrFrStr"</font>+<a name="(line309)"></a>        <font color=Cyan>(</font>Maybe <font color=Green><u>_</u></font><font color=Cyan>)</font>              <font color=Red>-&gt;</font> text <font color=Magenta>"maybeToAttr toAttrFrTyp"</font>+<a name="(line310)"></a>        String                 <font color=Red>-&gt;</font> text <font color=Magenta>"toAttrFrStr"</font>+<a name="(line311)"></a>        <font color=Green><u>_</u></font>                      <font color=Red>-&gt;</font> text <font color=Magenta>"toAttrFrTyp"</font>+<a name="(line312)"></a>    <font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> doubleQuotes <font color=Cyan>(</font>ppXName n<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"v"</font><font color=Cyan>)</font>+<a name="(line313)"></a>+<a name="(line314)"></a><a name="mkFrAux"></a>mkFrAux <font color=Red>::</font> Bool <font color=Red>-&gt;</font> Doc <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>StructType<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> Doc+<a name="(line315)"></a>mkFrAux keeprest attrs cs <font color=Red>=</font> foldr frAux inner cs+<a name="(line316)"></a>  <font color=Green><u>where</u></font>+<a name="(line317)"></a>    inner <font color=Red>=</font> text <font color=Magenta>"(Nothing, c0)"</font>+<a name="(line318)"></a>    rest  <font color=Red>=</font> <font color=Green><u>if</u></font> keeprest <font color=Green><u>then</u></font> text <font color=Magenta>"rest"</font> <font color=Green><u>else</u></font> text <font color=Magenta>"_"</font>+<a name="(line319)"></a>    frAux <font color=Cyan>(</font>n<font color=Cyan>,</font>sts<font color=Cyan>)</font> inner <font color=Red>=</font>+<a name="(line320)"></a>        <font color=Green><u>let</u></font> vs  <font color=Red>=</font> nameSupply sts <font color=Green><u>in</u></font>+<a name="(line321)"></a>        nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"case"</font> <font color=Cyan>&lt;+&gt;</font> blah sts vs <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"of"</font> <font color=Cyan>$$</font>+<a name="(line322)"></a>                succpat sts vs <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"-&gt; (Just"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line323)"></a>                                   parens <font color=Cyan>(</font>mkCpat n attrs vs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>", rest)"</font>+<a name="(line324)"></a>                <font color=Cyan>$$</font>+<a name="(line325)"></a>                failpat sts <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"-&gt;"</font> <font color=Cyan>$$</font> nest <font color=Magenta>4</font> inner+<a name="(line326)"></a>               <font color=Cyan>)</font>+<a name="(line327)"></a>    blah <font color=Red>[</font>st<font color=Red>]</font> <font color=Red>[</font>v<font color=Red>]</font> <font color=Red>=</font>+<a name="(line328)"></a>        blahblahblah st <font color=Cyan>(</font>text <font color=Magenta>"c0"</font><font color=Cyan>)</font>+<a name="(line329)"></a>    blah sts vs <font color=Red>=</font>+<a name="(line330)"></a>        <font color=Green><u>let</u></font> ns <font color=Red>=</font> nameSupply2 vs+<a name="(line331)"></a>            cvs <font color=Red>=</font> zip ns <font color=Cyan>(</font>text <font color=Magenta>"c0"</font><font color=Red><b>:</b></font> init ns<font color=Cyan>)</font>+<a name="(line332)"></a>            blahblah <font color=Cyan>(</font>st<font color=Cyan>,</font>v<font color=Cyan>,</font><font color=Cyan>(</font>cvi<font color=Cyan>,</font>cvo<font color=Cyan>)</font><font color=Cyan>)</font> inner <font color=Red>=</font>+<a name="(line333)"></a>                parens <font color=Cyan>(</font>text <font color=Magenta>"\\"</font> <font color=Cyan>&lt;&gt;</font> parens <font color=Cyan>(</font>v<font color=Cyan>&lt;&gt;</font>comma<font color=Cyan>&lt;&gt;</font>cvi<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"-&gt;"</font> <font color=Cyan>$$</font>+<a name="(line334)"></a>                        nest <font color=Magenta>2</font> inner<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line335)"></a>                blahblahblah st cvo+<a name="(line336)"></a>        <font color=Green><u>in</u></font>+<a name="(line337)"></a>        foldr blahblah <font color=Cyan>(</font>mkRpat <font color=Cyan>(</font>vs<font color=Cyan>++</font><font color=Red>[</font>last ns<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>zip3 sts vs cvs<font color=Cyan>)</font>+<a name="(line338)"></a>    blahblahblah st cvo <font color=Red>=</font> parens <font color=Cyan>(</font>+<a name="(line339)"></a>        <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line340)"></a>          <font color=Cyan>(</font>Maybe String<font color=Cyan>)</font> <font color=Red>-&gt;</font> text <font color=Magenta>"fromText"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line341)"></a>          <font color=Cyan>(</font>Maybe s<font color=Cyan>)</font>      <font color=Red>-&gt;</font> text <font color=Magenta>"fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line342)"></a>          <font color=Cyan>(</font>List String<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"many fromText"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line343)"></a>          <font color=Cyan>(</font>List s<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"many fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line344)"></a>          <font color=Cyan>(</font>List1 s<font color=Cyan>)</font>      <font color=Red>-&gt;</font> text <font color=Magenta>"fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line345)"></a>          <font color=Cyan>(</font>Tuple ss<font color=Cyan>)</font>     <font color=Red>-&gt;</font> text <font color=Magenta>"fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo	<font color=Blue>-- ??</font>+<a name="(line346)"></a>          <font color=Cyan>(</font>OneOf ss<font color=Cyan>)</font>     <font color=Red>-&gt;</font> text <font color=Magenta>"fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line347)"></a>          <font color=Cyan>(</font>String<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"fromText"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line348)"></a>          <font color=Cyan>(</font>Any<font color=Cyan>)</font>          <font color=Red>-&gt;</font> text <font color=Magenta>"fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line349)"></a>          <font color=Cyan>(</font>Defined m<font color=Cyan>)</font>    <font color=Red>-&gt;</font> text <font color=Magenta>"fromElem"</font> <font color=Cyan>&lt;+&gt;</font> cvo+<a name="(line350)"></a>        <font color=Cyan>)</font>+<a name="(line351)"></a>    failpat sts <font color=Red>=</font>+<a name="(line352)"></a>        <font color=Green><u>let</u></font> fp st <font color=Red>=</font>+<a name="(line353)"></a>                <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line354)"></a>                  <font color=Cyan>(</font>Maybe s<font color=Cyan>)</font>   <font color=Red>-&gt;</font> text <font color=Magenta>"Nothing"</font>+<a name="(line355)"></a>                  <font color=Cyan>(</font>List s<font color=Cyan>)</font>    <font color=Red>-&gt;</font> text <font color=Magenta>"[]"</font>+<a name="(line356)"></a>                  <font color=Cyan>(</font>List1 s<font color=Cyan>)</font>   <font color=Red>-&gt;</font> text <font color=Magenta>"_"</font>+<a name="(line357)"></a>                  <font color=Cyan>(</font>Tuple ss<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"_"</font>+<a name="(line358)"></a>                  <font color=Cyan>(</font>OneOf ss<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"_"</font>+<a name="(line359)"></a>                  <font color=Cyan>(</font>String<font color=Cyan>)</font>    <font color=Red>-&gt;</font> text <font color=Magenta>"_"</font>+<a name="(line360)"></a>                  <font color=Cyan>(</font>Any<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"_"</font>+<a name="(line361)"></a>                  <font color=Cyan>(</font>Defined m<font color=Cyan>)</font> <font color=Red>-&gt;</font> text <font color=Magenta>"_"</font>+<a name="(line362)"></a>        <font color=Green><u>in</u></font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse comma <font color=Cyan>(</font>map fp sts<font color=Cyan>++</font><font color=Red>[</font>text <font color=Magenta>"_"</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line363)"></a>    succpat sts vs <font color=Red>=</font>+<a name="(line364)"></a>        <font color=Green><u>let</u></font> sp st v <font color=Red>=</font>+<a name="(line365)"></a>                <font color=Green><u>case</u></font> st <font color=Green><u>of</u></font>+<a name="(line366)"></a>                  <font color=Cyan>(</font>Maybe s<font color=Cyan>)</font>   <font color=Red>-&gt;</font> v+<a name="(line367)"></a>                  <font color=Cyan>(</font>List s<font color=Cyan>)</font>    <font color=Red>-&gt;</font> v+<a name="(line368)"></a>                  <font color=Cyan>(</font>List1 s<font color=Cyan>)</font>   <font color=Red>-&gt;</font> text <font color=Magenta>"Just"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line369)"></a>                  <font color=Cyan>(</font>Tuple ss<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"Just"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line370)"></a>                  <font color=Cyan>(</font>OneOf ss<font color=Cyan>)</font>  <font color=Red>-&gt;</font> text <font color=Magenta>"Just"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line371)"></a>                  <font color=Cyan>(</font>String<font color=Cyan>)</font>    <font color=Red>-&gt;</font> text <font color=Magenta>"Just"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line372)"></a>                  <font color=Cyan>(</font>Any<font color=Cyan>)</font>       <font color=Red>-&gt;</font> text <font color=Magenta>"Just"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line373)"></a>                  <font color=Cyan>(</font>Defined m<font color=Cyan>)</font> <font color=Red>-&gt;</font> text <font color=Magenta>"Just"</font> <font color=Cyan>&lt;+&gt;</font> v+<a name="(line374)"></a>        <font color=Green><u>in</u></font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse comma <font color=Cyan>(</font>zipWith sp sts vs<font color=Cyan>++</font><font color=Red>[</font>rest<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line375)"></a>+<a name="(line376)"></a><a name="mkToAux"></a>mkToAux <font color=Red>::</font> Bool <font color=Red>-&gt;</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>StructType<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Doc+<a name="(line377)"></a>mkToAux mixattrs <font color=Cyan>(</font>n<font color=Cyan>,</font>sts<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line378)"></a>    <font color=Green><u>let</u></font> vs <font color=Red>=</font> nameSupply sts+<a name="(line379)"></a>        attrs <font color=Red>=</font> <font color=Green><u>if</u></font> mixattrs <font color=Green><u>then</u></font> text <font color=Magenta>"as"</font> <font color=Green><u>else</u></font> empty+<a name="(line380)"></a>    <font color=Green><u>in</u></font>+<a name="(line381)"></a>    text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>mkCpat n attrs vs<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line382)"></a>    mkToElem sts vs+<a name="(line383)"></a>+<a name="(line384)"></a><a name="mkToMult"></a>mkToMult <font color=Red>::</font> Name <font color=Red>-&gt;</font> Doc <font color=Red>-&gt;</font> Doc <font color=Red>-&gt;</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>StructType<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Doc+<a name="(line385)"></a>mkToMult tag attrpat attrexp <font color=Cyan>(</font>n<font color=Cyan>,</font>sts<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line386)"></a>    <font color=Green><u>let</u></font> vs <font color=Red>=</font> nameSupply sts+<a name="(line387)"></a>    <font color=Green><u>in</u></font>+<a name="(line388)"></a>    text <font color=Magenta>"toContents"</font> <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>mkCpat n attrpat vs<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font>+<a name="(line389)"></a>    <font color=Cyan>$$</font> nest <font color=Magenta>4</font> <font color=Cyan>(</font>text <font color=Magenta>"[CElem (Elem \""</font> <font color=Cyan>&lt;&gt;</font> ppXName tag <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font><font color=Cyan>&lt;+&gt;</font> attrexp+<a name="(line390)"></a>              <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>mkToElem sts vs<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>") ()]"</font><font color=Cyan>)</font>+<a name="(line391)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/DtdToHaskell/TypeDef.html view
@@ -0,0 +1,251 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | Defines an internal representation of Haskell data\/newtype definitions</font>+<a name="(line2)"></a><font color=Blue>--   that correspond to the XML DTD types, and provides pretty-printers to</font>+<a name="(line3)"></a><font color=Blue>--   convert these types into the 'Doc' type of "Text.PrettyPrint.HughesPJ".</font>+<a name="(line4)"></a>+<a name="(line5)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>DtdToHaskell<font color=Cyan>.</font>TypeDef+<a name="(line6)"></a>  <font color=Cyan>(</font> <font color=Blue>-- * Internal representation of types</font>+<a name="(line7)"></a>    TypeDef<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line8)"></a>  <font color=Cyan>,</font> Constructors+<a name="(line9)"></a>  <font color=Cyan>,</font> AttrFields+<a name="(line10)"></a>  <font color=Cyan>,</font> StructType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line11)"></a>  <font color=Blue>-- * Pretty-print a TypeDef</font>+<a name="(line12)"></a>  <font color=Cyan>,</font> ppTypeDef+<a name="(line13)"></a>  <font color=Cyan>,</font> ppHName+<a name="(line14)"></a>  <font color=Cyan>,</font> ppXName+<a name="(line15)"></a>  <font color=Cyan>,</font> ppAName+<a name="(line16)"></a>  <font color=Blue>-- * Name mangling</font>+<a name="(line17)"></a>  <font color=Cyan>,</font> Name<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line18)"></a>  <font color=Cyan>,</font> name<font color=Cyan>,</font> name_<font color=Cyan>,</font> name_a<font color=Cyan>,</font> name_ac<font color=Cyan>,</font> name_f<font color=Cyan>,</font> mangle<font color=Cyan>,</font> manglef+<a name="(line19)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line20)"></a>+<a name="(line21)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>isLower<font color=Cyan>,</font> isUpper<font color=Cyan>,</font> toLower<font color=Cyan>,</font> toUpper<font color=Cyan>,</font> isDigit<font color=Cyan>)</font>+<a name="(line22)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>+<a name="(line23)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ+<a name="(line24)"></a>+<a name="(line25)"></a>+<a name="(line26)"></a><font color=Blue>---- Internal representation for typedefs ----</font>+<a name="(line27)"></a>+<a name="(line28)"></a><a name="Name"></a><font color=Blue>-- | Need to keep both the XML and Haskell versions of a name.</font>+<a name="(line29)"></a><a name="Name"></a><font color=Green><u>data</u></font> Name <font color=Red>=</font> Name <font color=Cyan>{</font> xName <font color=Red>::</font> String	<font color=Blue>-- ^ original XML name</font>+<a name="(line30)"></a>		 <font color=Cyan>,</font> hName <font color=Red>::</font> String	<font color=Blue>-- ^ mangled Haskell name</font>+<a name="(line31)"></a>                 <font color=Cyan>}</font>+<a name="(line32)"></a>          <font color=Green><u>deriving</u></font> Eq+<a name="(line33)"></a>+<a name="(line34)"></a><a name="TypeDef"></a><font color=Green><u>data</u></font> TypeDef <font color=Red>=</font>+<a name="(line35)"></a>      DataDef Bool Name AttrFields Constructors	<font color=Blue>-- ^ Bool for main\/aux.</font>+<a name="(line36)"></a>    <font color=Red>|</font> EnumDef Name <font color=Red>[</font>Name<font color=Red>]</font>+<a name="(line37)"></a>    <font color=Green><u>deriving</u></font> Eq+<a name="(line38)"></a><a name="Constructors"></a><font color=Green><u>type</u></font> Constructors <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>StructType<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line39)"></a><a name="AttrFields"></a><font color=Green><u>type</u></font> AttrFields   <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font> StructType<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line40)"></a><a name="StructType"></a><font color=Green><u>data</u></font> StructType <font color=Red>=</font>+<a name="(line41)"></a>      Maybe StructType+<a name="(line42)"></a>    <font color=Red>|</font> Defaultable StructType String	<font color=Blue>-- ^ String holds default value.</font>+<a name="(line43)"></a>    <font color=Red>|</font> List StructType+<a name="(line44)"></a>    <font color=Red>|</font> List1 StructType			<font color=Blue>-- ^ Non-empty lists.</font>+<a name="(line45)"></a>    <font color=Red>|</font> Tuple <font color=Red>[</font>StructType<font color=Red>]</font>+<a name="(line46)"></a>    <font color=Red>|</font> OneOf <font color=Red>[</font>StructType<font color=Red>]</font>+<a name="(line47)"></a>    <font color=Red>|</font> Any				<font color=Blue>-- ^ XML's contentspec allows ANY</font>+<a name="(line48)"></a>    <font color=Red>|</font> String+<a name="(line49)"></a>    <font color=Red>|</font> Defined Name+<a name="(line50)"></a>    <font color=Green><u>deriving</u></font> Eq+<a name="(line51)"></a>+<a name="(line52)"></a><font color=Blue>-- used for converting StructType (roughly) back to an XML content model</font>+<a name="(line53)"></a><font color=Green><u>instance</u></font> Show StructType <font color=Green><u>where</u></font>+<a name="(line54)"></a>    showsPrec p <font color=Cyan>(</font>Maybe s<font color=Cyan>)</font>         <font color=Red>=</font> showsPrec <font color=Cyan>(</font>p<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> s <font color=Cyan>.</font> showChar <font color=Magenta>'?'</font>+<a name="(line55)"></a>    showsPrec p <font color=Cyan>(</font>Defaultable s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> shows s+<a name="(line56)"></a>    showsPrec p <font color=Cyan>(</font>List s<font color=Cyan>)</font>          <font color=Red>=</font> showsPrec <font color=Cyan>(</font>p<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> s <font color=Cyan>.</font> showChar <font color=Magenta>'*'</font>+<a name="(line57)"></a>    showsPrec p <font color=Cyan>(</font>List1 s<font color=Cyan>)</font>         <font color=Red>=</font> showsPrec <font color=Cyan>(</font>p<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> s <font color=Cyan>.</font> showChar <font color=Magenta>'+'</font>+<a name="(line58)"></a>    showsPrec p <font color=Cyan>(</font>Tuple ss<font color=Cyan>)</font>        <font color=Red>=</font> showChar <font color=Magenta>'('</font>+<a name="(line59)"></a>                                    <font color=Cyan>.</font> foldr1 <font color=Cyan>(</font><font color=Cyan>.</font><font color=Cyan>)</font> <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>showChar <font color=Magenta>','</font><font color=Cyan>)</font>+<a name="(line60)"></a>                                                              <font color=Cyan>(</font>map shows ss<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line61)"></a>                                    <font color=Cyan>.</font> showChar <font color=Magenta>')'</font>+<a name="(line62)"></a>    showsPrec p <font color=Cyan>(</font>OneOf ss<font color=Cyan>)</font>        <font color=Red>=</font> showChar <font color=Magenta>'('</font>+<a name="(line63)"></a>                                    <font color=Cyan>.</font> foldr1 <font color=Cyan>(</font><font color=Cyan>.</font><font color=Cyan>)</font> <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>showChar <font color=Magenta>'|'</font><font color=Cyan>)</font>+<a name="(line64)"></a>                                                              <font color=Cyan>(</font>map shows ss<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line65)"></a>                                    <font color=Cyan>.</font> showChar <font color=Magenta>')'</font>+<a name="(line66)"></a>    showsPrec p <font color=Cyan>(</font>Any<font color=Cyan>)</font>             <font color=Red>=</font> showString <font color=Magenta>"ANY"</font>+<a name="(line67)"></a>    showsPrec p <font color=Cyan>(</font>String<font color=Cyan>)</font>          <font color=Red>=</font> showString <font color=Magenta>"#PCDATA"</font>+<a name="(line68)"></a>    showsPrec p <font color=Cyan>(</font>Defined <font color=Cyan>(</font>Name n <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> showString n+<a name="(line69)"></a>+<a name="(line70)"></a>+<a name="(line71)"></a><a name="ppTypeDef"></a><font color=Blue>---- Pretty-printing typedefs ----</font>+<a name="(line72)"></a>ppTypeDef <font color=Red>::</font> TypeDef <font color=Red>-&gt;</font> Doc+<a name="(line73)"></a>+<a name="(line74)"></a><font color=Blue>--	no attrs, no constructors</font>+<a name="(line75)"></a>ppTypeDef <font color=Cyan>(</font>DataDef <font color=Green><u>_</u></font> n [] []<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line76)"></a>    <font color=Green><u>let</u></font> name <font color=Red>=</font> ppHName n <font color=Green><u>in</u></font>+<a name="(line77)"></a>    text <font color=Magenta>"data"</font> <font color=Cyan>&lt;+&gt;</font> name <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font> name <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\t\t"</font> <font color=Cyan>&lt;&gt;</font> derives+<a name="(line78)"></a>+<a name="(line79)"></a><font color=Blue>--	no attrs, single constructor</font>+<a name="(line80)"></a>ppTypeDef <font color=Cyan>(</font>DataDef <font color=Green><u>_</u></font> n [] <font color=Red>[</font>c<font color=Red>@</font><font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Red>[</font><font color=Green><u>_</u></font><font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line81)"></a>    text <font color=Magenta>"newtype"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font> ppC c <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"\t\t"</font> <font color=Cyan>&lt;&gt;</font> derives+<a name="(line82)"></a>+<a name="(line83)"></a><font color=Blue>--	no attrs, multiple constrs</font>+<a name="(line84)"></a>ppTypeDef <font color=Cyan>(</font>DataDef <font color=Green><u>_</u></font> n [] cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line85)"></a>    text <font color=Magenta>"data"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font>+<a name="(line86)"></a>           <font color=Cyan>(</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font> ppC <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line87)"></a>             vcat <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> text <font color=Magenta>"|"</font> <font color=Cyan>&lt;+&gt;</font> ppC c<font color=Cyan>)</font> <font color=Cyan>(</font>tail cs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line88)"></a>             derives <font color=Cyan>)</font>+<a name="(line89)"></a>+<a name="(line90)"></a><font color=Blue>--	nonzero attrs, no constructors</font>+<a name="(line91)"></a>ppTypeDef <font color=Cyan>(</font>DataDef <font color=Green><u>_</u></font> n fs []<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line92)"></a>    <font color=Green><u>let</u></font> name <font color=Red>=</font> ppHName n <font color=Green><u>in</u></font>+<a name="(line93)"></a>    text <font color=Magenta>"data"</font> <font color=Cyan>&lt;+&gt;</font> name <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font> name <font color=Cyan>$$</font>+<a name="(line94)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"{"</font> <font color=Cyan>&lt;+&gt;</font> ppF <font color=Cyan>(</font>head fs<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line95)"></a>             vcat <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>f<font color=Red>-&gt;</font> text <font color=Magenta>","</font> <font color=Cyan>&lt;+&gt;</font> ppF f<font color=Cyan>)</font> <font color=Cyan>(</font>tail fs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line96)"></a>             text <font color=Magenta>"}"</font> <font color=Cyan>&lt;+&gt;</font> derives <font color=Cyan>)</font>+<a name="(line97)"></a>+<a name="(line98)"></a><font color=Blue>--	nonzero attrs, one or more constrs</font>+<a name="(line99)"></a>ppTypeDef <font color=Cyan>(</font>DataDef <font color=Green><u>_</u></font> n fs cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line100)"></a>    <font color=Green><u>let</u></font> attr <font color=Red>=</font> ppAName n <font color=Green><u>in</u></font>+<a name="(line101)"></a>    text <font color=Magenta>"data"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font>+<a name="(line102)"></a>           <font color=Cyan>(</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font> ppAC attr <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line103)"></a>             vcat <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> text <font color=Magenta>"|"</font> <font color=Cyan>&lt;+&gt;</font> ppAC attr c<font color=Cyan>)</font> <font color=Cyan>(</font>tail cs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line104)"></a>             derives <font color=Cyan>)</font>  <font color=Cyan>$$</font>+<a name="(line105)"></a>    text <font color=Magenta>"data"</font> <font color=Cyan>&lt;+&gt;</font> attr <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font> attr <font color=Cyan>$$</font>+<a name="(line106)"></a>    nest <font color=Magenta>4</font> <font color=Cyan>(</font> text <font color=Magenta>"{"</font> <font color=Cyan>&lt;+&gt;</font> ppF <font color=Cyan>(</font>head fs<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line107)"></a>             vcat <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>f<font color=Red>-&gt;</font> text <font color=Magenta>","</font> <font color=Cyan>&lt;+&gt;</font> ppF f<font color=Cyan>)</font> <font color=Cyan>(</font>tail fs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line108)"></a>             text <font color=Magenta>"}"</font> <font color=Cyan>&lt;+&gt;</font> derives <font color=Cyan>)</font>+<a name="(line109)"></a>+<a name="(line110)"></a><font color=Blue>--	enumerations (of attribute values)</font>+<a name="(line111)"></a>ppTypeDef <font color=Cyan>(</font>EnumDef n es<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line112)"></a>    text <font color=Magenta>"data"</font> <font color=Cyan>&lt;+&gt;</font> ppHName n <font color=Cyan>&lt;+&gt;</font>+<a name="(line113)"></a>    <font color=Cyan>(</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line114)"></a>      fsep <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>" | "</font><font color=Cyan>)</font> <font color=Cyan>(</font>map ppHName es<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line115)"></a>    <font color=Cyan>$$</font> derives <font color=Cyan>)</font>+<a name="(line116)"></a>+<a name="(line117)"></a>+<a name="(line118)"></a><a name="ppST"></a>ppST <font color=Red>::</font> StructType <font color=Red>-&gt;</font> Doc+<a name="(line119)"></a>ppST <font color=Cyan>(</font>Defaultable st <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> parens <font color=Cyan>(</font>text <font color=Magenta>"Defaultable"</font> <font color=Cyan>&lt;+&gt;</font> ppST st<font color=Cyan>)</font>+<a name="(line120)"></a>ppST <font color=Cyan>(</font>Maybe st<font color=Cyan>)</font>  <font color=Red>=</font> parens <font color=Cyan>(</font>text <font color=Magenta>"Maybe"</font> <font color=Cyan>&lt;+&gt;</font> ppST st<font color=Cyan>)</font>+<a name="(line121)"></a>ppST <font color=Cyan>(</font>List st<font color=Cyan>)</font>   <font color=Red>=</font> text <font color=Magenta>"["</font> <font color=Cyan>&lt;&gt;</font> ppST st <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"]"</font>+<a name="(line122)"></a>ppST <font color=Cyan>(</font>List1 st<font color=Cyan>)</font>  <font color=Red>=</font> parens <font color=Cyan>(</font>text <font color=Magenta>"List1"</font> <font color=Cyan>&lt;+&gt;</font> ppST st<font color=Cyan>)</font>+<a name="(line123)"></a>ppST <font color=Cyan>(</font>Tuple sts<font color=Cyan>)</font> <font color=Red>=</font> parens <font color=Cyan>(</font>commaList <font color=Cyan>(</font>map ppST sts<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line124)"></a>ppST <font color=Cyan>(</font>OneOf sts<font color=Cyan>)</font> <font color=Red>=</font> parens <font color=Cyan>(</font>text <font color=Magenta>"OneOf"</font> <font color=Cyan>&lt;&gt;</font> text <font color=Cyan>(</font>show <font color=Cyan>(</font>length sts<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line125)"></a>                           hsep <font color=Cyan>(</font>map ppST sts<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line126)"></a>ppST  String     <font color=Red>=</font> text <font color=Magenta>"String"</font>+<a name="(line127)"></a>ppST  Any        <font color=Red>=</font> text <font color=Magenta>"ANYContent"</font>+<a name="(line128)"></a>ppST <font color=Cyan>(</font>Defined n<font color=Cyan>)</font> <font color=Red>=</font> ppHName n+<a name="(line129)"></a>+<a name="(line130)"></a><a name="ppC"></a><font color=Blue>-- constructor and components</font>+<a name="(line131)"></a>ppC <font color=Red>::</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>StructType<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Doc+<a name="(line132)"></a>ppC <font color=Cyan>(</font>n<font color=Cyan>,</font>sts<font color=Cyan>)</font> <font color=Red>=</font> ppHName n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map ppST sts<font color=Cyan>)</font>+<a name="(line133)"></a>+<a name="(line134)"></a><a name="ppF"></a><font color=Blue>-- attribute (fieldname and type)</font>+<a name="(line135)"></a>ppF <font color=Red>::</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font>StructType<font color=Cyan>)</font> <font color=Red>-&gt;</font> Doc+<a name="(line136)"></a>ppF <font color=Cyan>(</font>n<font color=Cyan>,</font>st<font color=Cyan>)</font> <font color=Red>=</font> ppHName n <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"::"</font> <font color=Cyan>&lt;+&gt;</font> ppST st+<a name="(line137)"></a>+<a name="(line138)"></a><a name="ppAC"></a><font color=Blue>-- constructor and components with initial attr-type</font>+<a name="(line139)"></a>ppAC <font color=Red>::</font> Doc <font color=Red>-&gt;</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>StructType<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Doc+<a name="(line140)"></a>ppAC atype <font color=Cyan>(</font>n<font color=Cyan>,</font>sts<font color=Cyan>)</font> <font color=Red>=</font> ppHName n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>atype<font color=Red><b>:</b></font> map ppST sts<font color=Cyan>)</font>+<a name="(line141)"></a>+<a name="(line142)"></a><a name="ppHName"></a><font color=Blue>-- | Pretty print Haskell name.</font>+<a name="(line143)"></a>ppHName <font color=Red>::</font> Name <font color=Red>-&gt;</font> Doc+<a name="(line144)"></a>ppHName <font color=Cyan>(</font>Name <font color=Green><u>_</u></font> s<font color=Cyan>)</font> <font color=Red>=</font> text s+<a name="(line145)"></a><a name="ppXName"></a><font color=Blue>-- | Pretty print XML name.</font>+<a name="(line146)"></a>ppXName <font color=Red>::</font> Name <font color=Red>-&gt;</font> Doc+<a name="(line147)"></a>ppXName <font color=Cyan>(</font>Name s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> text s+<a name="(line148)"></a><a name="ppAName"></a><font color=Blue>-- | Pretty print Haskell attributes name.</font>+<a name="(line149)"></a>ppAName <font color=Red>::</font> Name <font color=Red>-&gt;</font> Doc+<a name="(line150)"></a>ppAName <font color=Cyan>(</font>Name <font color=Green><u>_</u></font> s<font color=Cyan>)</font> <font color=Red>=</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"_Attrs"</font>+<a name="(line151)"></a>                      +<a name="(line152)"></a><a name="derives"></a>derives <font color=Red>=</font> text <font color=Magenta>"deriving"</font> <font color=Cyan>&lt;+&gt;</font> parens <font color=Cyan>(</font>commaList <font color=Cyan>(</font>map text <font color=Red>[</font><font color=Magenta>"Eq"</font><font color=Cyan>,</font><font color=Magenta>"Show"</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line153)"></a>+<a name="(line154)"></a>+<a name="(line155)"></a><font color=Blue>---- Some operations on Names ----</font>+<a name="(line156)"></a>+<a name="(line157)"></a><a name="name"></a><font color=Blue>-- | Make a type name valid in both XML and Haskell.</font>+<a name="(line158)"></a>name <font color=Red>::</font> String <font color=Red>-&gt;</font> Name+<a name="(line159)"></a>name n     <font color=Red>=</font> Name <font color=Cyan>{</font> xName <font color=Red>=</font> n+<a name="(line160)"></a>                  <font color=Cyan>,</font> hName <font color=Red>=</font> mangle n <font color=Cyan>}</font>+<a name="(line161)"></a>+<a name="(line162)"></a><a name="name_"></a><font color=Blue>-- | Append an underscore to the Haskell version of the name.</font>+<a name="(line163)"></a>name_ <font color=Red>::</font> String <font color=Red>-&gt;</font> Name+<a name="(line164)"></a>name_ n    <font color=Red>=</font> Name <font color=Cyan>{</font> xName <font color=Red>=</font> n+<a name="(line165)"></a>                  <font color=Cyan>,</font> hName <font color=Red>=</font> mangle n <font color=Cyan>++</font> <font color=Magenta>"_"</font> <font color=Cyan>}</font>+<a name="(line166)"></a>+<a name="(line167)"></a><a name="name_a"></a><font color=Blue>-- | Prefix an attribute enumeration type name with its containing element</font>+<a name="(line168)"></a><font color=Blue>--   name.</font>+<a name="(line169)"></a>name_a <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Name+<a name="(line170)"></a>name_a e n <font color=Red>=</font> Name <font color=Cyan>{</font> xName <font color=Red>=</font> n+<a name="(line171)"></a>                  <font color=Cyan>,</font> hName <font color=Red>=</font> mangle e <font color=Cyan>++</font> <font color=Magenta>"_"</font> <font color=Cyan>++</font> map decolonify n <font color=Cyan>}</font>+<a name="(line172)"></a>+<a name="(line173)"></a><a name="name_ac"></a><font color=Blue>-- | Prefix an attribute enumeration constructor with its element-tag name,</font>+<a name="(line174)"></a><font color=Blue>--   and its enumeration type name.</font>+<a name="(line175)"></a>name_ac <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Name+<a name="(line176)"></a>name_ac e t n <font color=Red>=</font> Name <font color=Cyan>{</font> xName <font color=Red>=</font> n+<a name="(line177)"></a>                     <font color=Cyan>,</font> hName <font color=Red>=</font> mangle e <font color=Cyan>++</font> <font color=Magenta>"_"</font> <font color=Cyan>++</font> map decolonify t+<a name="(line178)"></a>                                        <font color=Cyan>++</font> <font color=Magenta>"_"</font> <font color=Cyan>++</font> map decolonify n <font color=Cyan>}</font>+<a name="(line179)"></a>+<a name="(line180)"></a><a name="name_f"></a><font color=Blue>-- | Prefix a field name with its enclosing element name.</font>+<a name="(line181)"></a>name_f <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Name+<a name="(line182)"></a>name_f e n <font color=Red>=</font> Name <font color=Cyan>{</font> xName <font color=Red>=</font> n+<a name="(line183)"></a>                  <font color=Cyan>,</font> hName <font color=Red>=</font> manglef e <font color=Cyan>++</font> mangle n <font color=Cyan>}</font>+<a name="(line184)"></a>+<a name="(line185)"></a><font color=Blue>---- obsolete</font>+<a name="(line186)"></a><font color=Blue>-- elementname_at :: String -&gt; Name</font>+<a name="(line187)"></a><font color=Blue>-- elementname_at n  = Name n (mangle n ++ "_Attrs")</font>+<a name="(line188)"></a>+<a name="(line189)"></a><a name="mangle"></a><font color=Blue>-- | Convert an XML name to a Haskell conid.</font>+<a name="(line190)"></a>mangle <font color=Red>::</font> String <font color=Red>-&gt;</font> String+<a name="(line191)"></a>mangle <font color=Cyan>(</font>n<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line192)"></a>    <font color=Red>|</font> isLower n   <font color=Red>=</font> notPrelude <font color=Cyan>(</font>toUpper n<font color=Red><b>:</b></font> map decolonify ns<font color=Cyan>)</font>+<a name="(line193)"></a>    <font color=Red>|</font> isDigit n   <font color=Red>=</font> <font color=Magenta>'I'</font><font color=Red><b>:</b></font> n<font color=Red><b>:</b></font> map decolonify ns+<a name="(line194)"></a>    <font color=Red>|</font> otherwise   <font color=Red>=</font> notPrelude <font color=Cyan>(</font>n<font color=Red><b>:</b></font> map decolonify ns<font color=Cyan>)</font>+<a name="(line195)"></a>+<a name="(line196)"></a><a name="notPrelude"></a><font color=Blue>-- | Ensure a generated name does not conflict with a standard haskell one.</font>+<a name="(line197)"></a>notPrelude <font color=Red>::</font> String <font color=Red>-&gt;</font> String+<a name="(line198)"></a>notPrelude <font color=Magenta>"String"</font>  <font color=Red>=</font> <font color=Magenta>"AString"</font>+<a name="(line199)"></a>notPrelude <font color=Magenta>"Maybe"</font>   <font color=Red>=</font> <font color=Magenta>"AMaybe"</font>+<a name="(line200)"></a>notPrelude <font color=Magenta>"Either"</font>  <font color=Red>=</font> <font color=Magenta>"AEither"</font>+<a name="(line201)"></a>notPrelude <font color=Magenta>"Char"</font>    <font color=Red>=</font> <font color=Magenta>"AChar"</font>+<a name="(line202)"></a>notPrelude <font color=Magenta>"String"</font>  <font color=Red>=</font> <font color=Magenta>"AString"</font>+<a name="(line203)"></a>notPrelude <font color=Magenta>"Int"</font>     <font color=Red>=</font> <font color=Magenta>"AInt"</font>+<a name="(line204)"></a>notPrelude <font color=Magenta>"Integer"</font> <font color=Red>=</font> <font color=Magenta>"AInteger"</font>+<a name="(line205)"></a>notPrelude <font color=Magenta>"Float"</font>   <font color=Red>=</font> <font color=Magenta>"AFloat"</font>+<a name="(line206)"></a>notPrelude <font color=Magenta>"Double"</font>  <font color=Red>=</font> <font color=Magenta>"ADouble"</font>+<a name="(line207)"></a>notPrelude <font color=Magenta>"List1"</font>   <font color=Red>=</font> <font color=Magenta>"AList1"</font>	<font color=Blue>-- part of HaXml</font>+<a name="(line208)"></a>notPrelude <font color=Magenta>"IO"</font>      <font color=Red>=</font> <font color=Magenta>"AIO"</font>+<a name="(line209)"></a>notPrelude <font color=Magenta>"IOError"</font> <font color=Red>=</font> <font color=Magenta>"AIOError"</font>+<a name="(line210)"></a>notPrelude <font color=Magenta>"FilePath"</font><font color=Red>=</font> <font color=Magenta>"AFilePath"</font>+<a name="(line211)"></a>notPrelude <font color=Magenta>"Bool"</font>    <font color=Red>=</font> <font color=Magenta>"ABool"</font>+<a name="(line212)"></a>notPrelude <font color=Magenta>"Ordering"</font><font color=Red>=</font> <font color=Magenta>"AOrdering"</font>+<a name="(line213)"></a>notPrelude <font color=Magenta>"Eq"</font>      <font color=Red>=</font> <font color=Magenta>"AEq"</font>+<a name="(line214)"></a>notPrelude <font color=Magenta>"Ord"</font>     <font color=Red>=</font> <font color=Magenta>"AOrd"</font>+<a name="(line215)"></a>notPrelude <font color=Magenta>"Enum"</font>    <font color=Red>=</font> <font color=Magenta>"AEnum"</font>+<a name="(line216)"></a>notPrelude <font color=Magenta>"Bounded"</font> <font color=Red>=</font> <font color=Magenta>"ABounded"</font>+<a name="(line217)"></a>notPrelude <font color=Magenta>"Functor"</font> <font color=Red>=</font> <font color=Magenta>"AFunctor"</font>+<a name="(line218)"></a>notPrelude <font color=Magenta>"Monad"</font>   <font color=Red>=</font> <font color=Magenta>"AMonad"</font>+<a name="(line219)"></a>notPrelude <font color=Magenta>"Rational"</font><font color=Red>=</font> <font color=Magenta>"ARational"</font>+<a name="(line220)"></a>notPrelude <font color=Magenta>"Integral"</font><font color=Red>=</font> <font color=Magenta>"AIntegral"</font>+<a name="(line221)"></a>notPrelude <font color=Magenta>"Num"</font>     <font color=Red>=</font> <font color=Magenta>"ANum"</font>+<a name="(line222)"></a>notPrelude <font color=Magenta>"Real"</font>    <font color=Red>=</font> <font color=Magenta>"AReal"</font>+<a name="(line223)"></a>notPrelude <font color=Magenta>"RealFrac"</font><font color=Red>=</font> <font color=Magenta>"ARealFrac"</font>+<a name="(line224)"></a>notPrelude <font color=Magenta>"Floating"</font><font color=Red>=</font> <font color=Magenta>"AFloating"</font>+<a name="(line225)"></a>notPrelude <font color=Magenta>"RealFloat"</font> <font color=Red>=</font> <font color=Magenta>"ARealFloat"</font>+<a name="(line226)"></a>notPrelude <font color=Magenta>"Fractional"</font><font color=Red>=</font> <font color=Magenta>"AFractional"</font>+<a name="(line227)"></a>notPrelude <font color=Magenta>"Read"</font>    <font color=Red>=</font> <font color=Magenta>"ARead"</font>+<a name="(line228)"></a>notPrelude <font color=Magenta>"Show"</font>    <font color=Red>=</font> <font color=Magenta>"AShow"</font>+<a name="(line229)"></a>notPrelude <font color=Magenta>"ReadS"</font>   <font color=Red>=</font> <font color=Magenta>"AReadS"</font>+<a name="(line230)"></a>notPrelude <font color=Magenta>"ShowS"</font>   <font color=Red>=</font> <font color=Magenta>"AShowS"</font>+<a name="(line231)"></a>notPrelude n         <font color=Red>=</font> n+<a name="(line232)"></a>+<a name="(line233)"></a><a name="manglef"></a><font color=Blue>-- | Convert an XML name to a Haskell varid.</font>+<a name="(line234)"></a>manglef <font color=Red>::</font> String <font color=Red>-&gt;</font> String+<a name="(line235)"></a>manglef <font color=Cyan>(</font>n<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line236)"></a>    <font color=Red>|</font> isUpper n   <font color=Red>=</font> toLower n<font color=Red><b>:</b></font> map decolonify ns+<a name="(line237)"></a>    <font color=Red>|</font> isDigit n   <font color=Red>=</font> <font color=Magenta>'_'</font><font color=Red><b>:</b></font> n<font color=Red><b>:</b></font> map decolonify ns+<a name="(line238)"></a>    <font color=Red>|</font> otherwise   <font color=Red>=</font> n<font color=Red><b>:</b></font> map decolonify ns+<a name="(line239)"></a>+<a name="(line240)"></a><a name="decolonify"></a><font color=Blue>-- | Convert colon to prime, hyphen to underscore.</font>+<a name="(line241)"></a>decolonify <font color=Red>::</font> Char <font color=Red>-&gt;</font> Char+<a name="(line242)"></a>decolonify <font color=Magenta>':'</font> <font color=Red>=</font> <font color=Magenta>'\''</font>   <font color=Blue>-- TODO: turn namespaces into qualified identifiers</font>+<a name="(line243)"></a>decolonify <font color=Magenta>'-'</font> <font color=Red>=</font> <font color=Magenta>'_'</font>+<a name="(line244)"></a>decolonify <font color=Magenta>'.'</font> <font color=Red>=</font> <font color=Magenta>'_'</font>+<a name="(line245)"></a>decolonify  c  <font color=Red>=</font> c+<a name="(line246)"></a>+<a name="(line247)"></a><a name="commaList"></a>commaList <font color=Red>=</font> hcat <font color=Cyan>.</font> intersperse comma+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Escape.html view
@@ -0,0 +1,295 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>{- This module contains code for escaping/unescaping text in attributes+<a name="(line2)"></a>   and elements in the HaXml Element type, replacing characters by character +<a name="(line3)"></a>   references or vice-versa.  Two uses are envisaged for this:+<a name="(line4)"></a>+<a name="(line5)"></a>   (1) stopping HaXml generating incorrect XML when a character is included+<a name="(line6)"></a>       which is also the appropriate XML terminating character, for example+<a name="(line7)"></a>       when an attribute includes a double quote.+<a name="(line8)"></a>   (2) representing XML which contains non-ASCII characters as ASCII.+<a name="(line9)"></a>   -}</font>+<a name="(line10)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape<font color=Cyan>(</font>+<a name="(line11)"></a>   xmlEscape<font color=Cyan>,</font>+<a name="(line12)"></a>      <font color=Blue>-- :: XmlEscaper -&gt; Element i -&gt; Element i</font>+<a name="(line13)"></a>   xmlUnEscape<font color=Cyan>,</font>+<a name="(line14)"></a>      <font color=Blue>-- :: XmlEscaper -&gt; Element i -&gt; Element i</font>+<a name="(line15)"></a>   xmlEscapeContent<font color=Cyan>,</font>+<a name="(line16)"></a>      <font color=Blue>-- :: XmlEscaper -&gt; [Content i] -&gt; [Content i]</font>+<a name="(line17)"></a>   xmlUnEscapeContent<font color=Cyan>,</font>+<a name="(line18)"></a>      <font color=Blue>-- :: XmlEscaper -&gt; [Content i] -&gt; [Content i]</font>+<a name="(line19)"></a>+<a name="(line20)"></a>   XmlEscaper<font color=Cyan>,</font>+<a name="(line21)"></a>      <font color=Blue>-- Something describing a particular set of escapes.</font>+<a name="(line22)"></a>+<a name="(line23)"></a>   stdXmlEscaper<font color=Cyan>,</font>+<a name="(line24)"></a>      <font color=Blue>-- Standard boilerplate escaper, escaping everything that is </font>+<a name="(line25)"></a>      <font color=Blue>-- nonprintable, non-ASCII, or might conceivably cause problems by</font>+<a name="(line26)"></a>      <font color=Blue>-- parsing XML, for example quotes, &lt; signs, and ampersands.</font>+<a name="(line27)"></a>+<a name="(line28)"></a>   mkXmlEscaper<font color=Cyan>,</font>+<a name="(line29)"></a>      <font color=Blue>-- :: [(Char,String)] -&gt; (Char -&gt; Bool) -&gt; XmlEscaper</font>+<a name="(line30)"></a>      <font color=Blue>-- The first argument contains a list of characters, with their</font>+<a name="(line31)"></a>      <font color=Blue>--    corresponding character reference names.</font>+<a name="(line32)"></a>      <font color=Blue>--    For example [('\60',"lt"),('\62',"gt"),('\38',"amp"),</font>+<a name="(line33)"></a>      <font color=Blue>--       ('\39',"apos"),('\34',"quot")] will give you the "standard"</font>+<a name="(line34)"></a>      <font color=Blue>--       XML escapes listed in section 4.6 of the XML standard, so that</font>+<a name="(line35)"></a>      <font color=Blue>--       "&amp;quot;" will automatically get translated into a double</font>+<a name="(line36)"></a>      <font color=Blue>--       quotation mark.</font>+<a name="(line37)"></a>      <font color=Blue>--</font>+<a name="(line38)"></a>      <font color=Blue>--       It's the caller's responsibility to see that the reference</font>+<a name="(line39)"></a>      <font color=Blue>--       names ("lt","gt","amp","apos" and "quot" in the above example)</font>+<a name="(line40)"></a>      <font color=Blue>--       are valid XML reference names.  A sequence of letters, digits,</font>+<a name="(line41)"></a>      <font color=Blue>--       "." or ":" characters should be fine so long as the first one</font>+<a name="(line42)"></a>      <font color=Blue>--       isn't a digit.</font>+<a name="(line43)"></a>      <font color=Blue>--</font>+<a name="(line44)"></a>      <font color=Blue>-- The second argument is a function applied to each text character.</font>+<a name="(line45)"></a>      <font color=Blue>--    If it returns True, that means we should escape this character.</font>+<a name="(line46)"></a>+<a name="(line47)"></a>      <font color=Blue>-- Policy: on escaping, we expand all characters for which the</font>+<a name="(line48)"></a>      <font color=Blue>-- (Char -&gt; Bool) function returns True, either giving the corresponding</font>+<a name="(line49)"></a>      <font color=Blue>-- character reference name if one was supplied, or else using a</font>+<a name="(line50)"></a>      <font color=Blue>-- hexadecimal CharRef.</font>+<a name="(line51)"></a>      <font color=Blue>--</font>+<a name="(line52)"></a>      <font color=Blue>-- on unescaping, we translate all the references we understand</font>+<a name="(line53)"></a>      <font color=Blue>--   (hexadecimal,decimal, and the ones in the [(Char,String)] list,</font>+<a name="(line54)"></a>      <font color=Blue>--   and leave the others alone.</font>+<a name="(line55)"></a>+<a name="(line56)"></a>   <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line57)"></a>+<a name="(line58)"></a><font color=Green><u>import</u></font> Char+<a name="(line59)"></a><font color=Green><u>import</u></font> Numeric+<a name="(line60)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line61)"></a>+<a name="(line62)"></a><font color=Magenta><em>#if __GLASGOW_HASKELL__ &gt;= 604 || __NHC__ &gt;= 118 || defined(__HUGS__)</em></font>+<a name="(line63)"></a><font color=Blue>-- emulate older finite map interface using Data.Map, if it is available</font>+<a name="(line64)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>Map <font color=Green><u>as</u></font> Map+<a name="(line65)"></a><a name="FiniteMap"></a><font color=Green><u>type</u></font> FiniteMap a b <font color=Red>=</font> Map<font color=Cyan>.</font>Map a b+<a name="(line66)"></a><a name="listToFM"></a>listToFM <font color=Red>::</font> Ord a <font color=Red>=&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> FiniteMap a b+<a name="(line67)"></a>listToFM <font color=Red>=</font> Map<font color=Cyan>.</font>fromList+<a name="(line68)"></a><a name="lookupFM"></a>lookupFM <font color=Red>::</font> Ord a <font color=Red>=&gt;</font> FiniteMap a b <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe b+<a name="(line69)"></a>lookupFM <font color=Red>=</font> flip Map<font color=Cyan>.</font>lookup+<a name="(line70)"></a><font color=Magenta><em>#elif __GLASGOW_HASKELL__ &gt;= 504 || __NHC__ &gt; 114</em></font>+<a name="(line71)"></a><font color=Blue>-- real finite map, if it is available</font>+<a name="(line72)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>FiniteMap+<a name="(line73)"></a><font color=Magenta><em>#else</em></font>+<a name="(line74)"></a><a name="FiniteMap"></a><font color=Blue>-- otherwise, a very simple and inefficient implementation of a finite map</font>+<a name="(line75)"></a><a name="FiniteMap"></a><font color=Green><u>type</u></font> FiniteMap a b <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line76)"></a>listToFM <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> FiniteMap a b+<a name="(line77)"></a>listToFM <font color=Red>=</font> id+<a name="(line78)"></a>lookupFM <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> FiniteMap a b <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe b+<a name="(line79)"></a>lookupFM fm k <font color=Red>=</font> lookup k fm+<a name="(line80)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line81)"></a>+<a name="(line82)"></a>+<a name="(line83)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line84)"></a><font color=Blue>-- Data types</font>+<a name="(line85)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line86)"></a>+<a name="(line87)"></a><a name="XmlEscaper"></a><font color=Green><u>data</u></font> XmlEscaper <font color=Red>=</font> XmlEscaper <font color=Cyan>{</font>+<a name="(line88)"></a>   toEscape <font color=Red>::</font> FiniteMap Char String<font color=Cyan>,</font>+<a name="(line89)"></a>   fromEscape <font color=Red>::</font> FiniteMap String Char<font color=Cyan>,</font>+<a name="(line90)"></a>   isEscape <font color=Red>::</font> Char <font color=Red>-&gt;</font> Bool+<a name="(line91)"></a>   <font color=Cyan>}</font>+<a name="(line92)"></a>+<a name="(line93)"></a>+<a name="(line94)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line95)"></a><font color=Blue>-- Escaping</font>+<a name="(line96)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line97)"></a>+<a name="(line98)"></a>+<a name="(line99)"></a>+<a name="(line100)"></a><a name="xmlEscape"></a>xmlEscape <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> Element i <font color=Red>-&gt;</font> Element i+<a name="(line101)"></a>xmlEscape xmlEscaper element <font color=Red>=</font> +<a name="(line102)"></a>   compressElement <font color=Cyan>(</font>escapeElement xmlEscaper element<font color=Cyan>)</font>+<a name="(line103)"></a>+<a name="(line104)"></a><a name="xmlEscapeContent"></a>xmlEscapeContent <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line105)"></a>xmlEscapeContent xmlEscaper cs <font color=Red>=</font> +<a name="(line106)"></a>   compressContent <font color=Cyan>(</font>escapeContent xmlEscaper cs<font color=Cyan>)</font>+<a name="(line107)"></a>+<a name="(line108)"></a><a name="escapeElement"></a>escapeElement <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> Element i <font color=Red>-&gt;</font> Element i+<a name="(line109)"></a>escapeElement xmlEscaper <font color=Cyan>(</font>Elem name attributes content<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line110)"></a>   Elem name <font color=Cyan>(</font>escapeAttributes xmlEscaper attributes<font color=Cyan>)</font> +<a name="(line111)"></a>      <font color=Cyan>(</font>escapeContent xmlEscaper content<font color=Cyan>)</font>+<a name="(line112)"></a>+<a name="(line113)"></a><a name="escapeAttributes"></a>escapeAttributes <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font>+<a name="(line114)"></a>escapeAttributes xmlEscaper atts <font color=Red>=</font>+<a name="(line115)"></a>   map+<a name="(line116)"></a>      <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>name<font color=Cyan>,</font>av<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>name<font color=Cyan>,</font>escapeAttValue xmlEscaper av<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line117)"></a>      atts+<a name="(line118)"></a>   +<a name="(line119)"></a><a name="escapeAttValue"></a>escapeAttValue <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> AttValue <font color=Red>-&gt;</font> AttValue+<a name="(line120)"></a>escapeAttValue xmlEscaper <font color=Cyan>(</font>AttValue attValList<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line121)"></a>   AttValue <font color=Cyan>(</font>+<a name="(line122)"></a>      concat <font color=Cyan>(</font> +<a name="(line123)"></a>         map+<a name="(line124)"></a>            <font color=Cyan>(</font><font color=Red>\</font> av <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> av <font color=Green><u>of</u></font>+<a name="(line125)"></a>               Right ref <font color=Red>-&gt;</font> <font color=Red>[</font>av<font color=Red>]</font>+<a name="(line126)"></a>               Left s <font color=Red>-&gt;</font>+<a name="(line127)"></a>                  map+<a name="(line128)"></a>                     <font color=Cyan>(</font><font color=Red>\</font> c <font color=Red>-&gt;</font> <font color=Green><u>if</u></font> isEscape xmlEscaper c +<a name="(line129)"></a>                        <font color=Green><u>then</u></font>+<a name="(line130)"></a>                           Right <font color=Cyan>(</font>mkEscape xmlEscaper c<font color=Cyan>)</font>+<a name="(line131)"></a>                        <font color=Green><u>else</u></font>+<a name="(line132)"></a>                           Left <font color=Red>[</font>c<font color=Red>]</font>+<a name="(line133)"></a>                        <font color=Cyan>)</font>+<a name="(line134)"></a>                     s +<a name="(line135)"></a>               <font color=Cyan>)</font>+<a name="(line136)"></a>            attValList+<a name="(line137)"></a>         <font color=Cyan>)</font>+<a name="(line138)"></a>      <font color=Cyan>)</font>+<a name="(line139)"></a>+<a name="(line140)"></a><a name="escapeContent"></a>escapeContent <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line141)"></a>escapeContent xmlEscaper contents <font color=Red>=</font>+<a name="(line142)"></a>   concat+<a name="(line143)"></a>      <font color=Cyan>(</font>map+<a name="(line144)"></a>          <font color=Cyan>(</font><font color=Red>\</font> content <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> content <font color=Green><u>of</u></font>+<a name="(line145)"></a>             <font color=Cyan>(</font>CString b str i<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line146)"></a>                map+<a name="(line147)"></a>                   <font color=Cyan>(</font><font color=Red>\</font> c <font color=Red>-&gt;</font> <font color=Green><u>if</u></font> isEscape xmlEscaper c+<a name="(line148)"></a>                      <font color=Green><u>then</u></font>+<a name="(line149)"></a>                         CRef <font color=Cyan>(</font>mkEscape xmlEscaper c<font color=Cyan>)</font> i+<a name="(line150)"></a>                      <font color=Green><u>else</u></font>+<a name="(line151)"></a>                         CString b <font color=Red>[</font>c<font color=Red>]</font> i+<a name="(line152)"></a>                      <font color=Cyan>)</font>+<a name="(line153)"></a>                   str+<a name="(line154)"></a>             <font color=Cyan>(</font>CElem elem i<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>escapeElement xmlEscaper elem<font color=Cyan>)</font> i<font color=Red>]</font>+<a name="(line155)"></a>             <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font>content<font color=Red>]</font>+<a name="(line156)"></a>             <font color=Cyan>)</font>+<a name="(line157)"></a>          contents+<a name="(line158)"></a>          <font color=Cyan>)</font>+<a name="(line159)"></a>+<a name="(line160)"></a><a name="mkEscape"></a>mkEscape <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> Char <font color=Red>-&gt;</font> Reference+<a name="(line161)"></a>mkEscape <font color=Cyan>(</font>XmlEscaper <font color=Cyan>{</font>toEscape <font color=Red>=</font> toEscape<font color=Cyan>}</font><font color=Cyan>)</font> ch <font color=Red>=</font>+<a name="(line162)"></a>   <font color=Green><u>case</u></font> lookupFM toEscape ch <font color=Green><u>of</u></font>+<a name="(line163)"></a>      Nothing  <font color=Red>-&gt;</font> RefChar <font color=Cyan>(</font>ord ch<font color=Cyan>)</font>+<a name="(line164)"></a>      Just str <font color=Red>-&gt;</font> RefEntity str+<a name="(line165)"></a>   <font color=Green><u>where</u></font>+<a name="(line166)"></a>      showHex <font color=Red>=</font> showIntAtBase <font color=Magenta>16</font> intToDigit +<a name="(line167)"></a>      <font color=Blue>-- It should be, but in GHC it isn't.</font>+<a name="(line168)"></a>+<a name="(line169)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line170)"></a><font color=Blue>-- Unescaping</font>+<a name="(line171)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line172)"></a>+<a name="(line173)"></a><a name="xmlUnEscape"></a>xmlUnEscape <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> Element i <font color=Red>-&gt;</font> Element i+<a name="(line174)"></a>xmlUnEscape xmlEscaper element <font color=Red>=</font>+<a name="(line175)"></a>   compressElement <font color=Cyan>(</font>unEscapeElement xmlEscaper element<font color=Cyan>)</font>+<a name="(line176)"></a>+<a name="(line177)"></a><a name="xmlUnEscapeContent"></a>xmlUnEscapeContent <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line178)"></a>xmlUnEscapeContent xmlEscaper cs <font color=Red>=</font> +<a name="(line179)"></a>   compressContent <font color=Cyan>(</font>unEscapeContent xmlEscaper cs<font color=Cyan>)</font>+<a name="(line180)"></a>+<a name="(line181)"></a><a name="unEscapeElement"></a>unEscapeElement <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> Element i <font color=Red>-&gt;</font> Element i+<a name="(line182)"></a>unEscapeElement xmlEscaper <font color=Cyan>(</font>Elem name attributes content<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line183)"></a>   Elem name <font color=Cyan>(</font>unEscapeAttributes xmlEscaper attributes<font color=Cyan>)</font>+<a name="(line184)"></a>      <font color=Cyan>(</font>unEscapeContent xmlEscaper content<font color=Cyan>)</font>+<a name="(line185)"></a>+<a name="(line186)"></a><a name="unEscapeAttributes"></a>unEscapeAttributes <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font>+<a name="(line187)"></a>unEscapeAttributes xmlEscaper atts <font color=Red>=</font>+<a name="(line188)"></a>   map+<a name="(line189)"></a>      <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>name<font color=Cyan>,</font>av<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>name<font color=Cyan>,</font>unEscapeAttValue xmlEscaper av<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line190)"></a>      atts+<a name="(line191)"></a>+<a name="(line192)"></a><a name="unEscapeAttValue"></a>unEscapeAttValue <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> AttValue <font color=Red>-&gt;</font> AttValue+<a name="(line193)"></a>unEscapeAttValue xmlEscaper <font color=Cyan>(</font>AttValue attValList<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line194)"></a>   AttValue <font color=Cyan>(</font>+<a name="(line195)"></a>      map+<a name="(line196)"></a>         <font color=Cyan>(</font><font color=Red>\</font> av <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> av <font color=Green><u>of</u></font>+<a name="(line197)"></a>            Left s <font color=Red>-&gt;</font> av+<a name="(line198)"></a>            Right ref <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> unEscapeChar xmlEscaper ref <font color=Green><u>of</u></font>+<a name="(line199)"></a>               Just c <font color=Red>-&gt;</font> Left <font color=Red>[</font>c<font color=Red>]</font>+<a name="(line200)"></a>               Nothing <font color=Red>-&gt;</font> av+<a name="(line201)"></a>            <font color=Cyan>)</font>+<a name="(line202)"></a>         attValList+<a name="(line203)"></a>      <font color=Cyan>)</font>+<a name="(line204)"></a>+<a name="(line205)"></a><a name="unEscapeContent"></a>unEscapeContent <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line206)"></a>unEscapeContent xmlEscaper content <font color=Red>=</font>+<a name="(line207)"></a>   map+<a name="(line208)"></a>      <font color=Cyan>(</font><font color=Red>\</font> content <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> content <font color=Green><u>of</u></font>+<a name="(line209)"></a>         CRef ref i <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> unEscapeChar xmlEscaper ref <font color=Green><u>of</u></font>+<a name="(line210)"></a>            Just c <font color=Red>-&gt;</font> CString False <font color=Red>[</font>c<font color=Red>]</font> i+<a name="(line211)"></a>            Nothing <font color=Red>-&gt;</font> content+<a name="(line212)"></a>         CElem elem i <font color=Red>-&gt;</font> CElem <font color=Cyan>(</font>unEscapeElement xmlEscaper elem<font color=Cyan>)</font> i+<a name="(line213)"></a>         <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> content+<a name="(line214)"></a>         <font color=Cyan>)</font>+<a name="(line215)"></a>      content+<a name="(line216)"></a>+<a name="(line217)"></a><a name="unEscapeChar"></a>unEscapeChar <font color=Red>::</font> XmlEscaper <font color=Red>-&gt;</font> Reference <font color=Red>-&gt;</font> Maybe Char+<a name="(line218)"></a>unEscapeChar xmlEscaper ref <font color=Red>=</font>+<a name="(line219)"></a>   <font color=Green><u>case</u></font> ref <font color=Green><u>of</u></font>+<a name="(line220)"></a>      RefChar i      <font color=Red>-&gt;</font> Just <font color=Cyan>(</font>chr i<font color=Cyan>)</font>+<a name="(line221)"></a>      RefEntity name <font color=Red>-&gt;</font> lookupFM <font color=Cyan>(</font>fromEscape xmlEscaper<font color=Cyan>)</font> name+<a name="(line222)"></a>+<a name="(line223)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line224)"></a><font color=Blue>-- After escaping and unescaping we rebuild the lists, compressing</font>+<a name="(line225)"></a><font color=Blue>-- adjacent identical character data.</font>+<a name="(line226)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line227)"></a>+<a name="(line228)"></a><a name="compressElement"></a>compressElement <font color=Red>::</font> Element i <font color=Red>-&gt;</font> Element i+<a name="(line229)"></a>compressElement <font color=Cyan>(</font>Elem name attributes content<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line230)"></a>   Elem name <font color=Cyan>(</font>compressAttributes attributes<font color=Cyan>)</font> <font color=Cyan>(</font>compressContent content<font color=Cyan>)</font>+<a name="(line231)"></a>+<a name="(line232)"></a><a name="compressAttributes"></a>compressAttributes <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font>AttValue<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font>AttValue<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line233)"></a>compressAttributes atts <font color=Red>=</font>+<a name="(line234)"></a>   map+<a name="(line235)"></a>      <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>name<font color=Cyan>,</font>av<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>name<font color=Cyan>,</font>compressAttValue av<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line236)"></a>      atts+<a name="(line237)"></a>+<a name="(line238)"></a><a name="compressAttValue"></a>compressAttValue <font color=Red>::</font> AttValue <font color=Red>-&gt;</font> AttValue+<a name="(line239)"></a>compressAttValue <font color=Cyan>(</font>AttValue l<font color=Cyan>)</font> <font color=Red>=</font> AttValue <font color=Cyan>(</font>compress l<font color=Cyan>)</font>+<a name="(line240)"></a>   <font color=Green><u>where</u></font>+<a name="(line241)"></a>      compress <font color=Red>::</font> <font color=Red>[</font>Either String Reference<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Either String Reference<font color=Red>]</font>+<a name="(line242)"></a>      compress [] <font color=Red>=</font> []+<a name="(line243)"></a>      compress <font color=Cyan>(</font>Right ref <font color=Red><b>:</b></font> es<font color=Cyan>)</font> <font color=Red>=</font> Right ref <font color=Red><b>:</b></font> <font color=Cyan>(</font>compress es<font color=Cyan>)</font>+<a name="(line244)"></a>      compress <font color=Cyan>(</font> <font color=Cyan>(</font>ls <font color=Red>@</font> <font color=Cyan>(</font>Left s1<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red><b>:</b></font> es<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line245)"></a>         <font color=Green><u>case</u></font> compress es <font color=Green><u>of</u></font>+<a name="(line246)"></a>            <font color=Cyan>(</font>Left s2 <font color=Red><b>:</b></font> es2<font color=Cyan>)</font> <font color=Red>-&gt;</font> Left <font color=Cyan>(</font>s1 <font color=Cyan>++</font> s2<font color=Cyan>)</font> <font color=Red><b>:</b></font> es2+<a name="(line247)"></a>            es2 <font color=Red>-&gt;</font> ls <font color=Red><b>:</b></font> es2+<a name="(line248)"></a>+<a name="(line249)"></a><a name="compressContent"></a>compressContent <font color=Red>::</font> <font color=Red>[</font>Content i<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line250)"></a>compressContent [] <font color=Red>=</font> []+<a name="(line251)"></a>compressContent <font color=Cyan>(</font><font color=Cyan>(</font>csb <font color=Red>@</font> <font color=Cyan>(</font>CString b1 s1 i1<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red><b>:</b></font> cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line252)"></a>   <font color=Green><u>case</u></font> compressContent cs <font color=Green><u>of</u></font>+<a name="(line253)"></a>      <font color=Cyan>(</font>CString b2 s2 i2<font color=Cyan>)</font> <font color=Red><b>:</b></font> cs2+<a name="(line254)"></a>          <font color=Red>|</font> b1 <font color=Cyan>==</font> b2+<a name="(line255)"></a>          <font color=Red>-&gt;</font> CString b1 <font color=Cyan>(</font>s1 <font color=Cyan>++</font> s2<font color=Cyan>)</font> i1<font color=Red><b>:</b></font> cs2+<a name="(line256)"></a>      cs2 <font color=Red>-&gt;</font> csb <font color=Red><b>:</b></font> cs2+<a name="(line257)"></a>compressContent <font color=Cyan>(</font>CElem element i <font color=Red><b>:</b></font> cs<font color=Cyan>)</font> <font color=Red>=</font> +<a name="(line258)"></a>   CElem <font color=Cyan>(</font>compressElement element<font color=Cyan>)</font> i <font color=Red><b>:</b></font> compressContent cs+<a name="(line259)"></a>compressContent <font color=Cyan>(</font>c <font color=Red><b>:</b></font> cs<font color=Cyan>)</font> <font color=Red>=</font> c <font color=Red><b>:</b></font> compressContent cs+<a name="(line260)"></a>+<a name="(line261)"></a>+<a name="(line262)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line263)"></a><font color=Blue>-- Making XmlEscaper values.</font>+<a name="(line264)"></a><font color=Blue>-- ------------------------------------------------------------------------</font>+<a name="(line265)"></a>+<a name="(line266)"></a><a name="stdXmlEscaper"></a>stdXmlEscaper <font color=Red>::</font> XmlEscaper+<a name="(line267)"></a>stdXmlEscaper <font color=Red>=</font> mkXmlEscaper+<a name="(line268)"></a>   <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>'\60'</font><font color=Cyan>,</font><font color=Magenta>"lt"</font><font color=Cyan>)</font><font color=Cyan>,</font><font color=Cyan>(</font><font color=Magenta>'\62'</font><font color=Cyan>,</font><font color=Magenta>"gt"</font><font color=Cyan>)</font><font color=Cyan>,</font><font color=Cyan>(</font><font color=Magenta>'\38'</font><font color=Cyan>,</font><font color=Magenta>"amp"</font><font color=Cyan>)</font><font color=Cyan>,</font><font color=Cyan>(</font><font color=Magenta>'\39'</font><font color=Cyan>,</font><font color=Magenta>"apos"</font><font color=Cyan>)</font><font color=Cyan>,</font><font color=Cyan>(</font><font color=Magenta>'\34'</font><font color=Cyan>,</font><font color=Magenta>"quot"</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line269)"></a>   <font color=Cyan>(</font><font color=Red>\</font> ch <font color=Red>-&gt;</font> +<a name="(line270)"></a>      <font color=Green><u>let</u></font>+<a name="(line271)"></a>         i <font color=Red>=</font> ord ch+<a name="(line272)"></a>      <font color=Green><u>in</u></font>+<a name="(line273)"></a>         i <font color=Cyan>&lt;</font> <font color=Magenta>10</font> <font color=Cyan>||</font> <font color=Cyan>(</font><font color=Magenta>10</font><font color=Cyan>&lt;</font>i <font color=Cyan>&amp;&amp;</font> i<font color=Cyan>&lt;</font><font color=Magenta>32</font><font color=Cyan>)</font> <font color=Cyan>||</font> i <font color=Cyan>&gt;=</font> <font color=Magenta>127</font> <font color=Cyan>||</font>+<a name="(line274)"></a>            <font color=Green><u>case</u></font> ch <font color=Green><u>of</u></font>+<a name="(line275)"></a>               <font color=Magenta>'\''</font> <font color=Red>-&gt;</font> True+<a name="(line276)"></a>               <font color=Magenta>'\"'</font> <font color=Red>-&gt;</font> True+<a name="(line277)"></a>               <font color=Magenta>'&amp;'</font> <font color=Red>-&gt;</font> True+<a name="(line278)"></a>               <font color=Magenta>'&lt;'</font> <font color=Red>-&gt;</font> True+<a name="(line279)"></a>               <font color=Magenta>'&gt;'</font> <font color=Red>-&gt;</font> True+<a name="(line280)"></a>               <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> False+<a name="(line281)"></a>      <font color=Cyan>)</font>+<a name="(line282)"></a>             +<a name="(line283)"></a>            +<a name="(line284)"></a><a name="mkXmlEscaper"></a>mkXmlEscaper <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>Char<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Char <font color=Red>-&gt;</font> Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> XmlEscaper+<a name="(line285)"></a>mkXmlEscaper escapes isEscape <font color=Red>=</font>+<a name="(line286)"></a>   XmlEscaper <font color=Cyan>{</font>+<a name="(line287)"></a>      toEscape <font color=Red>=</font> listToFM escapes<font color=Cyan>,</font>+<a name="(line288)"></a>      fromEscape <font color=Red>=</font> listToFM <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>c<font color=Cyan>,</font>str<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>str<font color=Cyan>,</font>c<font color=Cyan>)</font><font color=Cyan>)</font> escapes<font color=Cyan>)</font><font color=Cyan>,</font>+<a name="(line289)"></a>      isEscape <font color=Red>=</font> isEscape+<a name="(line290)"></a>      <font color=Cyan>}</font>+<a name="(line291)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Html/Generate.html view
@@ -0,0 +1,179 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | These are just some common abbreviations for generating HTML</font>+<a name="(line2)"></a><font color=Blue>--   content within the XML transformation framework defined</font>+<a name="(line3)"></a><font color=Blue>--   by "Text.Xml.HaXml.Combinators".</font>+<a name="(line4)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Generate+<a name="(line5)"></a>  <font color=Cyan>(</font> <font color=Blue>-- * HTML construction filters</font>+<a name="(line6)"></a>  <font color=Blue>-- ** Containers</font>+<a name="(line7)"></a>    html+<a name="(line8)"></a>  <font color=Cyan>,</font> hhead+<a name="(line9)"></a>  <font color=Cyan>,</font> htitle+<a name="(line10)"></a>  <font color=Cyan>,</font> hbody+<a name="(line11)"></a>  <font color=Cyan>,</font> h1<font color=Cyan>,</font> h2<font color=Cyan>,</font> h3<font color=Cyan>,</font> h4+<a name="(line12)"></a>  <font color=Cyan>,</font> hpara+<a name="(line13)"></a>  <font color=Cyan>,</font> hdiv<font color=Cyan>,</font> hspan<font color=Cyan>,</font> margin+<a name="(line14)"></a>  <font color=Blue>-- ** Anchors</font>+<a name="(line15)"></a>  <font color=Cyan>,</font> anchor<font color=Cyan>,</font> makehref<font color=Cyan>,</font> anchorname+<a name="(line16)"></a>  <font color=Blue>-- ** Text style</font>+<a name="(line17)"></a>  <font color=Cyan>,</font> hpre+<a name="(line18)"></a>  <font color=Cyan>,</font> hcentre+<a name="(line19)"></a>  <font color=Cyan>,</font> hem<font color=Cyan>,</font> htt<font color=Cyan>,</font> hbold+<a name="(line20)"></a>  <font color=Cyan>,</font> parens<font color=Cyan>,</font> bullet+<a name="(line21)"></a>  <font color=Blue>-- ** Tables</font>+<a name="(line22)"></a>  <font color=Cyan>,</font> htable<font color=Cyan>,</font> hrow<font color=Cyan>,</font> hcol+<a name="(line23)"></a>  <font color=Blue>-- ** Breaks, lines</font>+<a name="(line24)"></a>  <font color=Cyan>,</font> hbr<font color=Cyan>,</font> hhr+<a name="(line25)"></a>  <font color=Blue>-- ** Attributes</font>+<a name="(line26)"></a>  <font color=Cyan>,</font> showattr<font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>!</font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>?</font><font color=Cyan>)</font>+<a name="(line27)"></a>  <font color=Blue>-- * A simple HTML pretty-printer</font>+<a name="(line28)"></a>  <font color=Cyan>,</font> htmlprint+<a name="(line29)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line30)"></a>+<a name="(line31)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>isSpace<font color=Cyan>)</font>+<a name="(line32)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>partition<font color=Cyan>)</font>+<a name="(line33)"></a>+<a name="(line34)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line35)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators+<a name="(line36)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Green><u>as</u></font> Pretty+<a name="(line37)"></a>+<a name="(line38)"></a><font color=Blue>---- Constructor functions</font>+<a name="(line39)"></a>+<a name="(line40)"></a><a name="html"></a>html<font color=Cyan>,</font> hhead<font color=Cyan>,</font> htitle<font color=Cyan>,</font> hbody<font color=Cyan>,</font> h1<font color=Cyan>,</font> h2<font color=Cyan>,</font> h3<font color=Cyan>,</font> h4<font color=Cyan>,</font> hpara<font color=Cyan>,</font> hpre<font color=Cyan>,</font> hcentre<font color=Cyan>,</font>+<a name="(line41)"></a>    hem<font color=Cyan>,</font> htt<font color=Cyan>,</font> hbold<font color=Cyan>,</font> htable<font color=Cyan>,</font> hrow<font color=Cyan>,</font> hcol<font color=Cyan>,</font> hdiv<font color=Cyan>,</font> hspan<font color=Cyan>,</font> margin+<a name="(line42)"></a>       <font color=Red>::</font> <font color=Red>[</font>CFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line43)"></a>html    <font color=Red>=</font> mkElem <font color=Magenta>"html"</font>+<a name="(line44)"></a><a name="hhead"></a>hhead   <font color=Red>=</font> mkElem <font color=Magenta>"head"</font>+<a name="(line45)"></a><a name="htitle"></a>htitle  <font color=Red>=</font> mkElem <font color=Magenta>"title"</font>+<a name="(line46)"></a><a name="hbody"></a>hbody   <font color=Red>=</font> mkElem <font color=Magenta>"body"</font>+<a name="(line47)"></a><a name="h1"></a>h1      <font color=Red>=</font> mkElem <font color=Magenta>"h1"</font>+<a name="(line48)"></a><a name="h2"></a>h2      <font color=Red>=</font> mkElem <font color=Magenta>"h2"</font>+<a name="(line49)"></a><a name="h3"></a>h3      <font color=Red>=</font> mkElem <font color=Magenta>"h3"</font>+<a name="(line50)"></a><a name="h4"></a>h4      <font color=Red>=</font> mkElem <font color=Magenta>"h4"</font>+<a name="(line51)"></a><a name="hpara"></a>hpara   <font color=Red>=</font> mkElem <font color=Magenta>"p"</font>+<a name="(line52)"></a><a name="hpre"></a>hpre    <font color=Red>=</font> mkElem <font color=Magenta>"pre"</font>+<a name="(line53)"></a><a name="hcentre"></a>hcentre <font color=Red>=</font> mkElem <font color=Magenta>"center"</font>+<a name="(line54)"></a><a name="hem"></a>hem     <font color=Red>=</font> mkElem <font color=Magenta>"em"</font>+<a name="(line55)"></a><a name="htt"></a>htt     <font color=Red>=</font> mkElem <font color=Magenta>"tt"</font>+<a name="(line56)"></a><a name="hbold"></a>hbold   <font color=Red>=</font> mkElem <font color=Magenta>"b"</font>+<a name="(line57)"></a>+<a name="(line58)"></a><a name="htable"></a>htable <font color=Red>=</font> mkElem <font color=Magenta>"table"</font>+<a name="(line59)"></a><a name="hrow"></a>hrow   <font color=Red>=</font> mkElem <font color=Magenta>"tr"</font>+<a name="(line60)"></a><a name="hcol"></a>hcol   <font color=Red>=</font> mkElem <font color=Magenta>"td"</font>+<a name="(line61)"></a>+<a name="(line62)"></a><a name="hdiv"></a>hdiv   <font color=Red>=</font> mkElem <font color=Magenta>"div"</font>+<a name="(line63)"></a><a name="hspan"></a>hspan  <font color=Red>=</font> mkElem <font color=Magenta>"span"</font>+<a name="(line64)"></a><a name="margin"></a>margin <font color=Red>=</font> mkElemAttr <font color=Magenta>"div"</font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"margin-left"</font><font color=Cyan>,</font><font color=Cyan>(</font><font color=Magenta>"2em"</font><font color=Cyan>!</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>,</font>+<a name="(line65)"></a>                           <font color=Cyan>(</font><font color=Magenta>"margin-top"</font><font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"1em"</font><font color=Cyan>!</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line66)"></a>+<a name="(line67)"></a><a name="anchor"></a>anchor      <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font> CFilter i<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>CFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> CFilter  i+<a name="(line68)"></a>anchor       <font color=Red>=</font> mkElemAttr <font color=Magenta>"a"</font>+<a name="(line69)"></a>+<a name="(line70)"></a><a name="makehref"></a>makehref<font color=Cyan>,</font> anchorname <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> <font color=Red>[</font>CFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line71)"></a>makehref r   <font color=Red>=</font> anchor <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"href"</font><font color=Cyan>,</font>r<font color=Cyan>)</font> <font color=Red>]</font>+<a name="(line72)"></a><a name="anchorname"></a>anchorname n <font color=Red>=</font> anchor <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"name"</font><font color=Cyan>,</font>n<font color=Cyan>)</font> <font color=Red>]</font>+<a name="(line73)"></a>+<a name="(line74)"></a>+<a name="(line75)"></a><a name="hbr"></a>hbr<font color=Cyan>,</font> hhr <font color=Red>::</font> CFilter i+<a name="(line76)"></a>hbr       <font color=Red>=</font> mkElem <font color=Magenta>"br"</font> []+<a name="(line77)"></a><a name="hhr"></a>hhr       <font color=Red>=</font> mkElem <font color=Magenta>"hr"</font> []+<a name="(line78)"></a>+<a name="(line79)"></a>+<a name="(line80)"></a><a name="showattr"></a>showattr<font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>!</font><font color=Cyan>)</font><font color=Cyan>,</font> <font color=Cyan>(</font><font color=Cyan>?</font><font color=Cyan>)</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> CFilter i+<a name="(line81)"></a>showattr n <font color=Red>=</font> find n literal+<a name="(line82)"></a><a name="!"></a><font color=Cyan>(</font><font color=Cyan>!</font><font color=Cyan>)</font> <font color=Red>=</font> literal+<a name="(line83)"></a><a name="?"></a><font color=Cyan>(</font><font color=Cyan>?</font><font color=Cyan>)</font> <font color=Red>=</font> showattr+<a name="(line84)"></a>+<a name="(line85)"></a><a name="parens"></a>parens <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line86)"></a>parens f <font color=Red>=</font> cat <font color=Red>[</font> literal <font color=Magenta>"("</font><font color=Cyan>,</font> f<font color=Cyan>,</font> literal <font color=Magenta>")"</font> <font color=Red>]</font>+<a name="(line87)"></a>+<a name="(line88)"></a><a name="bullet"></a>bullet <font color=Red>::</font> <font color=Red>[</font>CFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> CFilter i+<a name="(line89)"></a>bullet <font color=Red>=</font> cat <font color=Cyan>.</font> <font color=Cyan>(</font>literal <font color=Magenta>"M-^U"</font><font color=Red><b>:</b></font><font color=Cyan>)</font>+<a name="(line90)"></a>+<a name="(line91)"></a>+<a name="(line92)"></a><font color=Blue>---- Printing function</font>+<a name="(line93)"></a>+<a name="(line94)"></a><font color=Blue>-- htmlprint :: [Content] -&gt; String</font>+<a name="(line95)"></a><font color=Blue>-- htmlprint = concatMap cprint</font>+<a name="(line96)"></a><font color=Blue>--   where</font>+<a name="(line97)"></a><font color=Blue>--   cprint (CElem e _) = elem e </font>+<a name="(line98)"></a><font color=Blue>--   cprint (CString _ s) = s</font>+<a name="(line99)"></a><font color=Blue>--   cprint (CMisc m) = ""</font>+<a name="(line100)"></a><font color=Blue>--  </font>+<a name="(line101)"></a><font color=Blue>--   elem (Elem n as []) = "\n&lt;"++n++attrs as++" /&gt;"</font>+<a name="(line102)"></a><font color=Blue>--   elem (Elem n as cs) = "\n&lt;"++n++attrs as++"&gt;"++htmlprint cs++"\n&lt;/"++n++"&gt;"</font>+<a name="(line103)"></a><font color=Blue>-- </font>+<a name="(line104)"></a><font color=Blue>--   attrs = concatMap attr</font>+<a name="(line105)"></a><font color=Blue>--   attr (n,v) = " "++n++"='"++v++"'"</font>+<a name="(line106)"></a>+<a name="(line107)"></a>+<a name="(line108)"></a><a name="htmlprint"></a>htmlprint <font color=Red>::</font> <font color=Red>[</font>Content i<font color=Red>]</font> <font color=Red>-&gt;</font> Pretty<font color=Cyan>.</font>Doc+<a name="(line109)"></a>htmlprint <font color=Red>=</font> Pretty<font color=Cyan>.</font>cat <font color=Cyan>.</font> map cprint <font color=Cyan>.</font> foldrefs +<a name="(line110)"></a>  <font color=Green><u>where</u></font>+<a name="(line111)"></a>  foldrefs [] <font color=Red>=</font> []+<a name="(line112)"></a>  foldrefs <font color=Cyan>(</font>CString ws s1 i<font color=Red><b>:</b></font>CRef r <font color=Green><u>_</u></font><font color=Red><b>:</b></font>CString <font color=Green><u>_</u></font> s2 <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line113)"></a>              CString ws <font color=Cyan>(</font>s1<font color=Cyan>++</font><font color=Magenta>"&amp;"</font><font color=Cyan>++</font>ref r<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>++</font>s2<font color=Cyan>)</font> i<font color=Red><b>:</b></font> foldrefs cs+<a name="(line114)"></a>  foldrefs <font color=Cyan>(</font>c<font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>=</font> c <font color=Red><b>:</b></font> foldrefs cs+<a name="(line115)"></a>+<a name="(line116)"></a><font color=Blue>--ref (RefEntity (EntityRef n)) = n	-- Actually, should look-up symtable.</font>+<a name="(line117)"></a><font color=Blue>--ref (RefChar (CharRef s)) = s</font>+<a name="(line118)"></a>  ref <font color=Cyan>(</font>RefEntity n<font color=Cyan>)</font> <font color=Red>=</font> n	<font color=Blue>-- Actually, should look-up symtable.</font>+<a name="(line119)"></a>  ref <font color=Cyan>(</font>RefChar s<font color=Cyan>)</font> <font color=Red>=</font> show s+<a name="(line120)"></a>+<a name="(line121)"></a>  cprint <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> elem e+<a name="(line122)"></a>  cprint <font color=Cyan>(</font>CString ws s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> Pretty<font color=Cyan>.</font>cat <font color=Cyan>(</font>map Pretty<font color=Cyan>.</font>text <font color=Cyan>(</font>fmt <font color=Magenta>60</font>+<a name="(line123)"></a>                                             <font color=Cyan>(</font><font color=Cyan>(</font><font color=Green><u>if</u></font> ws <font color=Green><u>then</u></font> id <font color=Green><u>else</u></font> deSpace<font color=Cyan>)</font> s<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line124)"></a>  cprint <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font>       <font color=Red>=</font> Pretty<font color=Cyan>.</font>text <font color=Cyan>(</font><font color=Magenta>"&amp;"</font><font color=Cyan>++</font>ref r<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line125)"></a>  cprint <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> Pretty<font color=Cyan>.</font>empty+<a name="(line126)"></a> +<a name="(line127)"></a>  elem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> <font color=Red>=</font> Pretty<font color=Cyan>.</font>text <font color=Magenta>"&lt;"</font>   Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line128)"></a>                        Pretty<font color=Cyan>.</font>text n     Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line129)"></a>                        attrs <font color=Green><u>as</u></font>          Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line130)"></a>                        Pretty<font color=Cyan>.</font>text <font color=Magenta>" /&gt;"</font>+<a name="(line131)"></a>  elem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line132)"></a>                    <font color=Blue>--  ( Pretty.text "&lt;"   Pretty.&lt;&gt;</font>+<a name="(line133)"></a>                    <font color=Blue>--    Pretty.text n     Pretty.&lt;&gt;</font>+<a name="(line134)"></a>                    <font color=Blue>--    attrs as          Pretty.&lt;&gt;</font>+<a name="(line135)"></a>                    <font color=Blue>--    Pretty.text "&gt;")  Pretty.$$</font>+<a name="(line136)"></a>                    <font color=Blue>--  Pretty.nest 6 (htmlprint cs)  Pretty.$$</font>+<a name="(line137)"></a>                    <font color=Blue>--  ( Pretty.text "&lt;/"  Pretty.&lt;&gt;</font>+<a name="(line138)"></a>                    <font color=Blue>--    Pretty.text n     Pretty.&lt;&gt;</font>+<a name="(line139)"></a>                    <font color=Blue>--    Pretty.text "&gt;" )</font>+<a name="(line140)"></a>                        Pretty<font color=Cyan>.</font>fcat <font color=Red>[</font> <font color=Cyan>(</font> Pretty<font color=Cyan>.</font>text <font color=Magenta>"&lt;"</font>   Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line141)"></a>                                        Pretty<font color=Cyan>.</font>text n     Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line142)"></a>                                        attrs <font color=Green><u>as</u></font>          Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line143)"></a>                                        Pretty<font color=Cyan>.</font>text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line144)"></a>                                    <font color=Cyan>,</font> Pretty<font color=Cyan>.</font>nest <font color=Magenta>4</font> <font color=Cyan>(</font>htmlprint cs<font color=Cyan>)</font>+<a name="(line145)"></a>                                    <font color=Cyan>,</font> <font color=Cyan>(</font> Pretty<font color=Cyan>.</font>text <font color=Magenta>"&lt;/"</font>  Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line146)"></a>                                        Pretty<font color=Cyan>.</font>text n     Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line147)"></a>                                        Pretty<font color=Cyan>.</font>text <font color=Magenta>"&gt;"</font> <font color=Cyan>)</font>+<a name="(line148)"></a>                                    <font color=Red>]</font>+<a name="(line149)"></a>+<a name="(line150)"></a>  attrs <font color=Red>=</font> Pretty<font color=Cyan>.</font>cat <font color=Cyan>.</font> map attr+<a name="(line151)"></a>  attr <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line152)"></a>               Pretty<font color=Cyan>.</font>text <font color=Magenta>" "</font>  Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line153)"></a>               Pretty<font color=Cyan>.</font>text n    Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line154)"></a>               Pretty<font color=Cyan>.</font>text <font color=Magenta>"='"</font> Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line155)"></a>               Pretty<font color=Cyan>.</font>text <font color=Cyan>(</font>show v<font color=Cyan>)</font> Pretty<font color=Cyan>.&lt;&gt;</font>+<a name="(line156)"></a>               Pretty<font color=Cyan>.</font>text <font color=Magenta>"'"</font>+<a name="(line157)"></a>+<a name="(line158)"></a>  fmt n [] <font color=Red>=</font> []+<a name="(line159)"></a>  fmt n s  <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>top<font color=Cyan>,</font>bot<font color=Cyan>)</font> <font color=Red>=</font> splitAt n s+<a name="(line160)"></a>                 <font color=Cyan>(</font>word<font color=Cyan>,</font>left<font color=Cyan>)</font> <font color=Red>=</font> keepUntil isSpace <font color=Cyan>(</font>reverse top<font color=Cyan>)</font>+<a name="(line161)"></a>             <font color=Green><u>in</u></font> <font color=Green><u>if</u></font> length top <font color=Cyan>&lt;</font> n <font color=Green><u>then</u></font> <font color=Red>[</font>s<font color=Red>]</font>+<a name="(line162)"></a>                <font color=Green><u>else</u></font> <font color=Green><u>if</u></font> not <font color=Cyan>(</font>null left<font color=Cyan>)</font> <font color=Green><u>then</u></font>+<a name="(line163)"></a>                     reverse left<font color=Red><b>:</b></font> fmt n <font color=Cyan>(</font>word<font color=Cyan>++</font>bot<font color=Cyan>)</font>+<a name="(line164)"></a>                <font color=Green><u>else</u></font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>big<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> keepUntil isSpace s+<a name="(line165)"></a>                     <font color=Green><u>in</u></font> reverse big<font color=Red><b>:</b></font> fmt n rest+<a name="(line166)"></a>+<a name="(line167)"></a>  deSpace []     <font color=Red>=</font> []+<a name="(line168)"></a>  deSpace <font color=Cyan>(</font>c<font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>|</font> c<font color=Cyan>==</font><font color=Magenta>'\n'</font>   <font color=Red>=</font> deSpace <font color=Cyan>(</font><font color=Magenta>' '</font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>+<a name="(line169)"></a>                 <font color=Red>|</font> isSpace c <font color=Red>=</font> c <font color=Red><b>:</b></font> deSpace <font color=Cyan>(</font>dropWhile isSpace cs<font color=Cyan>)</font>+<a name="(line170)"></a>                 <font color=Red>|</font> otherwise <font color=Red>=</font> c <font color=Red><b>:</b></font> deSpace cs+<a name="(line171)"></a>+<a name="(line172)"></a>  keepUntil p xs <font color=Red>=</font> select p <font color=Cyan>(</font>[]<font color=Cyan>,</font>xs<font color=Cyan>)</font>+<a name="(line173)"></a>      <font color=Green><u>where</u></font> select p <font color=Cyan>(</font>ls<font color=Cyan>,</font>[]<font color=Cyan>)</font>     <font color=Red>=</font> <font color=Cyan>(</font>ls<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="(line174)"></a>            select p <font color=Cyan>(</font>ls<font color=Cyan>,</font><font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>|</font> p x       <font color=Red>=</font> <font color=Cyan>(</font>ls<font color=Cyan>,</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font>+<a name="(line175)"></a>                                 <font color=Red>|</font> otherwise <font color=Red>=</font> select p <font color=Cyan>(</font>x<font color=Red><b>:</b></font>ls<font color=Cyan>,</font>xs<font color=Cyan>)</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Html/Parse.html view
@@ -0,0 +1,728 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This is a parser for HTML documents.  Unlike for XML documents, it</font>+<a name="(line2)"></a><font color=Blue>--   must include a certain amount of error-correction to account for</font>+<a name="(line3)"></a><font color=Blue>--   HTML features like self-terminating tags, unterminated tags, and</font>+<a name="(line4)"></a><font color=Blue>--   incorrect nesting.  The input is tokenised by the</font>+<a name="(line5)"></a><font color=Blue>--   XML lexer (a separate lexer is not required for HTML).</font>+<a name="(line6)"></a>+<a name="(line7)"></a><font color=Blue>-- It uses a slightly extended version of the Hutton/Meijer parser</font>+<a name="(line8)"></a><font color=Blue>-- combinators.</font>+<a name="(line9)"></a>+<a name="(line10)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse+<a name="(line11)"></a>  <font color=Cyan>(</font> htmlParse+<a name="(line12)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line13)"></a>+<a name="(line14)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>either<font color=Cyan>,</font>maybe<font color=Cyan>,</font>sequence<font color=Cyan>)</font>+<a name="(line15)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Prelude <font color=Cyan>(</font>either<font color=Cyan>)</font>+<a name="(line16)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line17)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>toLower<font color=Cyan>,</font> isSpace<font color=Cyan>,</font> isDigit<font color=Cyan>,</font> isHexDigit<font color=Cyan>)</font>+<a name="(line18)"></a><font color=Green><u>import</u></font> Numeric <font color=Cyan>(</font>readDec<font color=Cyan>,</font>readHex<font color=Cyan>)</font>+<a name="(line19)"></a><font color=Green><u>import</u></font> Monad+<a name="(line20)"></a>+<a name="(line21)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line22)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Lex+<a name="(line23)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn+<a name="(line24)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly<font color=Cyan>.</font>NoLeak<font color=Cyan>.</font>Plain+<a name="(line25)"></a>+<a name="(line26)"></a><font color=Blue>--  #define DEBUG</font>+<a name="(line27)"></a> +<a name="(line28)"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>+<a name="(line29)"></a><font color=Magenta><em>#  if ( defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt; 502 ) || \</em></font>+<a name="(line30)"></a>      <font color=Cyan>(</font> defined<font color=Cyan>(</font><b><font color=Magenta>__NHC__</font></b><font color=Cyan>)</font> <font color=Cyan>&amp;&amp;</font> <b><font color=Magenta>__NHC__</font></b> <font color=Cyan>&gt;</font> <font color=Magenta>114</font> <font color=Cyan>)</font> <font color=Cyan>||</font> defined<font color=Cyan>(</font><b><font color=Magenta>__HUGS__</font></b><font color=Cyan>)</font>+<a name="(line31)"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line32)"></a><font color=Magenta><em>#  elif defined(__GLASGOW_HASKELL__)</em></font>+<a name="(line33)"></a><font color=Green><u>import</u></font> IOExts<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line34)"></a><font color=Magenta><em>#  elif defined(__NHC__) || defined(__HBC__)</em></font>+<a name="(line35)"></a><font color=Green><u>import</u></font> NonStdTrace+<a name="(line36)"></a><font color=Magenta><em>#  endif</em></font>+<a name="(line37)"></a><a name="debug"></a>debug <font color=Red>::</font> Monad m <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> m ()+<a name="(line38)"></a>debug s <font color=Red>=</font> trace s <font color=Cyan>(</font>return ()<font color=Cyan>)</font>+<a name="(line39)"></a><font color=Magenta><em>#else</em></font>+<a name="(line40)"></a>debug <font color=Red>::</font> Monad m <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> m ()+<a name="(line41)"></a>debug s <font color=Red>=</font> return ()+<a name="(line42)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line43)"></a>+<a name="(line44)"></a>+<a name="(line45)"></a><a name="htmlParse"></a><font color=Blue>-- | The first argument is the name of the file, the second is the string</font>+<a name="(line46)"></a><font color=Blue>--   contents of the file.  The result is the generic representation of</font>+<a name="(line47)"></a><font color=Blue>--   an XML document.  Any errors cause program failure with message to stderr.</font>+<a name="(line48)"></a>htmlParse <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Document Posn+<a name="(line49)"></a>htmlParse name <font color=Red>=</font> Prelude<font color=Cyan>.</font>either error id <font color=Cyan>.</font> htmlParse' name+<a name="(line50)"></a>+<a name="(line51)"></a><a name="htmlParse'"></a><font color=Blue>-- | The first argument is the name of the file, the second is the string</font>+<a name="(line52)"></a><font color=Blue>--   contents of the file.  The result is the generic representation of</font>+<a name="(line53)"></a><font color=Blue>--   an XML document.  Any parsing errors are returned in the @Either@ type.</font>+<a name="(line54)"></a>htmlParse' <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>Document Posn<font color=Cyan>)</font>+<a name="(line55)"></a>htmlParse' name <font color=Red>=</font> Prelude<font color=Cyan>.</font>either Left <font color=Cyan>(</font>Right <font color=Cyan>.</font> simplify<font color=Cyan>)</font> <font color=Cyan>.</font> fst+<a name="(line56)"></a>                  <font color=Cyan>.</font> runParser document <font color=Cyan>.</font> xmlLex name+<a name="(line57)"></a>+<a name="(line58)"></a><font color=Blue>---- Document simplification ----</font>+<a name="(line59)"></a>+<a name="(line60)"></a><a name="simplify"></a>simplify <font color=Red>::</font> Document i <font color=Red>-&gt;</font> Document i+<a name="(line61)"></a>simplify <font color=Cyan>(</font>Document p st <font color=Cyan>(</font>Elem n avs cs<font color=Cyan>)</font> ms<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line62)"></a>    Document p st <font color=Cyan>(</font>Elem n avs <font color=Cyan>(</font>deepfilter simp cs<font color=Cyan>)</font><font color=Cyan>)</font> ms+<a name="(line63)"></a>  <font color=Green><u>where</u></font>+<a name="(line64)"></a>    simp <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"null"</font> [] []<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> False+<a name="(line65)"></a>    simp <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem  n     <font color=Green><u>_</u></font>  []<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> n <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"font"</font><font color=Cyan>,</font><font color=Magenta>"p"</font><font color=Cyan>,</font><font color=Magenta>"i"</font><font color=Cyan>,</font><font color=Magenta>"b"</font><font color=Cyan>,</font><font color=Magenta>"em"</font>+<a name="(line66)"></a>                                                  <font color=Cyan>,</font><font color=Magenta>"tt"</font><font color=Cyan>,</font><font color=Magenta>"big"</font><font color=Cyan>,</font><font color=Magenta>"small"</font><font color=Red>]</font> <font color=Red>=</font> False+<a name="(line67)"></a> <font color=Blue>-- simp (CString False s _) | all isSpace s = False</font>+<a name="(line68)"></a>    simp <font color=Green><u>_</u></font> <font color=Red>=</font> True+<a name="(line69)"></a>    deepfilter p <font color=Red>=</font>+<a name="(line70)"></a>        filter p <font color=Cyan>.</font> map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>+<a name="(line71)"></a>                          CElem <font color=Cyan>(</font>Elem n avs cs<font color=Cyan>)</font> i+<a name="(line72)"></a>                                  <font color=Red>-&gt;</font> CElem <font color=Cyan>(</font>Elem n avs <font color=Cyan>(</font>deepfilter p cs<font color=Cyan>)</font><font color=Cyan>)</font> i+<a name="(line73)"></a>                          <font color=Green><u>_</u></font>       <font color=Red>-&gt;</font> c<font color=Cyan>)</font>+<a name="(line74)"></a>+<a name="(line75)"></a><a name="selfclosingtags"></a><font color=Blue>-- opening any of these, they close again immediately</font>+<a name="(line76)"></a>selfclosingtags <font color=Red>=</font> <font color=Red>[</font><font color=Magenta>"img"</font><font color=Cyan>,</font><font color=Magenta>"hr"</font><font color=Cyan>,</font><font color=Magenta>"br"</font><font color=Cyan>,</font><font color=Magenta>"meta"</font><font color=Cyan>,</font><font color=Magenta>"col"</font><font color=Cyan>,</font><font color=Magenta>"link"</font><font color=Cyan>,</font><font color=Magenta>"base"</font>+<a name="(line77)"></a>                  <font color=Cyan>,</font><font color=Magenta>"param"</font><font color=Cyan>,</font><font color=Magenta>"area"</font><font color=Cyan>,</font><font color=Magenta>"frame"</font><font color=Cyan>,</font><font color=Magenta>"input"</font><font color=Red>]</font>+<a name="(line78)"></a>+<a name="(line79)"></a><a name="closeInnerTags"></a><font color=Blue>--closing this, implicitly closes any of those which are contained in it</font>+<a name="(line80)"></a>closeInnerTags <font color=Red>=</font>+<a name="(line81)"></a>  <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"ul"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"li"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line82)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ol"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"li"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line83)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"dl"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"dt"</font><font color=Cyan>,</font><font color=Magenta>"dd"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line84)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tr"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line85)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"div"</font><font color=Cyan>,</font>     <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line86)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"thead"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line87)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tfoot"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line88)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tbody"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line89)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"table"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Cyan>,</font><font color=Magenta>"thead"</font><font color=Cyan>,</font><font color=Magenta>"tfoot"</font><font color=Cyan>,</font><font color=Magenta>"tbody"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line90)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"caption"</font><font color=Cyan>,</font> <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line91)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"th"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line92)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"td"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line93)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"li"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line94)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"dt"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line95)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"dd"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line96)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"object"</font><font color=Cyan>,</font>  <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line97)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"map"</font><font color=Cyan>,</font>     <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line98)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"body"</font><font color=Cyan>,</font>    <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line99)"></a>  <font color=Red>]</font>+<a name="(line100)"></a>+<a name="(line101)"></a><a name="closes"></a><font color=Blue>--opening this, implicitly closes that</font>+<a name="(line102)"></a>closes <font color=Red>::</font> Name <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> Bool+<a name="(line103)"></a><font color=Magenta>"a"</font>  <font color=Cyan>`closes`</font> <font color=Magenta>"a"</font>   <font color=Red>=</font>  True+<a name="(line104)"></a><font color=Magenta>"li"</font> <font color=Cyan>`closes`</font> <font color=Magenta>"li"</font>  <font color=Red>=</font>  True+<a name="(line105)"></a><font color=Magenta>"th"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line106)"></a><font color=Magenta>"td"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line107)"></a><font color=Magenta>"tr"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Red>]</font> <font color=Red>=</font>  True+<a name="(line108)"></a><font color=Magenta>"dt"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"dt"</font><font color=Cyan>,</font><font color=Magenta>"dd"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line109)"></a><font color=Magenta>"dd"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"dt"</font><font color=Cyan>,</font><font color=Magenta>"dd"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line110)"></a><font color=Magenta>"form"</font>  <font color=Cyan>`closes`</font> <font color=Magenta>"form"</font>      <font color=Red>=</font> True+<a name="(line111)"></a><font color=Magenta>"label"</font> <font color=Cyan>`closes`</font> <font color=Magenta>"label"</font>     <font color=Red>=</font> True+<a name="(line112)"></a><font color=Green><u>_</u></font>       <font color=Cyan>`closes`</font> <font color=Magenta>"option"</font>    <font color=Red>=</font> True+<a name="(line113)"></a><font color=Magenta>"thead"</font> <font color=Cyan>`closes`</font> t  <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"colgroup"</font><font color=Red>]</font>          <font color=Red>=</font> True+<a name="(line114)"></a><font color=Magenta>"tfoot"</font> <font color=Cyan>`closes`</font> t  <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"thead"</font><font color=Cyan>,</font><font color=Magenta>"colgroup"</font><font color=Red>]</font>  <font color=Red>=</font> True+<a name="(line115)"></a><font color=Magenta>"tbody"</font> <font color=Cyan>`closes`</font> t  <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"tbody"</font><font color=Cyan>,</font><font color=Magenta>"tfoot"</font><font color=Cyan>,</font><font color=Magenta>"thead"</font><font color=Cyan>,</font><font color=Magenta>"colgroup"</font><font color=Red>]</font> <font color=Red>=</font> True+<a name="(line116)"></a><font color=Magenta>"colgroup"</font> <font color=Cyan>`closes`</font> <font color=Magenta>"colgroup"</font>  <font color=Red>=</font> True+<a name="(line117)"></a><a name="closes"></a>t <font color=Cyan>`closes`</font> <font color=Magenta>"p"</font>+<a name="(line118)"></a>    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"p"</font><font color=Cyan>,</font><font color=Magenta>"h1"</font><font color=Cyan>,</font><font color=Magenta>"h2"</font><font color=Cyan>,</font><font color=Magenta>"h3"</font><font color=Cyan>,</font><font color=Magenta>"h4"</font><font color=Cyan>,</font><font color=Magenta>"h5"</font><font color=Cyan>,</font><font color=Magenta>"h6"</font>+<a name="(line119)"></a>               <font color=Cyan>,</font><font color=Magenta>"hr"</font><font color=Cyan>,</font><font color=Magenta>"div"</font><font color=Cyan>,</font><font color=Magenta>"ul"</font><font color=Cyan>,</font><font color=Magenta>"dl"</font><font color=Cyan>,</font><font color=Magenta>"ol"</font><font color=Cyan>,</font><font color=Magenta>"table"</font><font color=Red>]</font>  <font color=Red>=</font>  True+<a name="(line120)"></a><font color=Green><u>_</u></font> <font color=Cyan>`closes`</font> <font color=Green><u>_</u></font> <font color=Red>=</font> False+<a name="(line121)"></a>+<a name="(line122)"></a>+<a name="(line123)"></a>+<a name="(line124)"></a><font color=Blue>---- Misc ----</font>+<a name="(line125)"></a>+<a name="(line126)"></a><a name="fst3"></a>fst3 <font color=Cyan>(</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line127)"></a><a name="snd3"></a>snd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line128)"></a><a name="thd3"></a>thd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line129)"></a>+<a name="(line130)"></a>+<a name="(line131)"></a>+<a name="(line132)"></a><font color=Blue>---- Auxiliary Parsing Functions ----</font>+<a name="(line133)"></a>+<a name="(line134)"></a><a name="HParser"></a><font color=Green><u>type</u></font> HParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font> a+<a name="(line135)"></a>+<a name="(line136)"></a><a name="tok"></a>tok <font color=Red>::</font> TokenT <font color=Red>-&gt;</font> HParser TokenT+<a name="(line137)"></a>tok t <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t'<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line138)"></a>           <font color=Green><u>case</u></font> t' <font color=Green><u>of</u></font> TokError s    <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line139)"></a>                      <font color=Green><u>_</u></font> <font color=Red>|</font> t'<font color=Cyan>==</font>t     <font color=Red>-&gt;</font> return t+<a name="(line140)"></a>                        <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line141)"></a>+<a name="(line142)"></a><a name="name"></a>name <font color=Red>::</font> HParser Name+<a name="(line143)"></a><font color=Blue>--name = do {(p,TokName s) &lt;- next; return s}</font>+<a name="(line144)"></a>name <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>tok<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line145)"></a>          <font color=Green><u>case</u></font> tok <font color=Green><u>of</u></font> +<a name="(line146)"></a>            TokName s  <font color=Red>-&gt;</font> return s +<a name="(line147)"></a>            TokError s <font color=Red>-&gt;</font> report failBad <font color=Magenta>"a name"</font> p tok+<a name="(line148)"></a>            <font color=Green><u>_</u></font>          <font color=Red>-&gt;</font> report fail <font color=Magenta>"a name"</font> p tok+<a name="(line149)"></a>+<a name="(line150)"></a><a name="string"></a>string<font color=Cyan>,</font> freetext <font color=Red>::</font> HParser String+<a name="(line151)"></a>string   <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line152)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokName s <font color=Red>-&gt;</font> return s+<a name="(line153)"></a>                        <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line154)"></a><a name="freetext"></a>freetext <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line155)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokFreeText s <font color=Red>-&gt;</font> return s+<a name="(line156)"></a>                        <font color=Green><u>_</u></font>             <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line157)"></a>+<a name="(line158)"></a><a name="maybe"></a>maybe <font color=Red>::</font> HParser a <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font>+<a name="(line159)"></a>maybe p <font color=Red>=</font>+<a name="(line160)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Just<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line161)"></a>    <font color=Cyan>(</font> return Nothing<font color=Cyan>)</font>+<a name="(line162)"></a>+<a name="(line163)"></a><a name="either"></a>either <font color=Red>::</font> HParser a <font color=Red>-&gt;</font> HParser b <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Either a b<font color=Cyan>)</font>+<a name="(line164)"></a>either p q <font color=Red>=</font>+<a name="(line165)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Left<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line166)"></a>    <font color=Cyan>(</font> q <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Right<font color=Cyan>)</font>+<a name="(line167)"></a>+<a name="(line168)"></a><a name="word"></a>word <font color=Red>::</font> String <font color=Red>-&gt;</font> HParser ()+<a name="(line169)"></a>word s <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+<a name="(line170)"></a>            <font color=Cyan>;</font> <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>+<a name="(line171)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokName n<font color=Cyan>)</font>     <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line172)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokFreeText n<font color=Cyan>)</font> <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line173)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Red>@</font><font color=Cyan>(</font>TokError <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line174)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line175)"></a>            <font color=Cyan>}</font>+<a name="(line176)"></a>+<a name="(line177)"></a><a name="posn"></a>posn <font color=Red>::</font> HParser Posn+<a name="(line178)"></a>posn <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x<font color=Red>@</font><font color=Cyan>(</font>p<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line179)"></a>          <font color=Cyan>;</font> reparse <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line180)"></a>          <font color=Cyan>;</font> return p+<a name="(line181)"></a>          <font color=Cyan>}</font> <font color=Cyan>`onFail`</font> return noPos+<a name="(line182)"></a>+<a name="(line183)"></a><a name="nmtoken"></a>nmtoken <font color=Red>::</font> HParser NmToken+<a name="(line184)"></a>nmtoken <font color=Red>=</font> <font color=Cyan>(</font>string <font color=Cyan>`onFail`</font> freetext<font color=Cyan>)</font>+<a name="(line185)"></a>+<a name="(line186)"></a><a name="failP"></a>failP<font color=Cyan>,</font> failBadP <font color=Red>::</font> String <font color=Red>-&gt;</font> HParser a+<a name="(line187)"></a>failP msg    <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> fail <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line188)"></a><a name="failBadP"></a>failBadP msg <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> failBad <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line189)"></a>+<a name="(line190)"></a><a name="report"></a>report <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>HParser a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> TokenT <font color=Red>-&gt;</font> HParser a+<a name="(line191)"></a>report fail exp p t <font color=Red>=</font> fail <font color=Cyan>(</font><font color=Magenta>"Expected "</font><font color=Cyan>++</font>show exp<font color=Cyan>++</font><font color=Magenta>" but found "</font><font color=Cyan>++</font>show t+<a name="(line192)"></a>                           <font color=Cyan>++</font><font color=Magenta>"\n  at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line193)"></a>+<a name="(line194)"></a><a name="adjustErrP"></a>adjustErrP <font color=Red>::</font> HParser a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> HParser a+<a name="(line195)"></a><a name="adjustErrP"></a>p <font color=Cyan>`adjustErrP`</font> f <font color=Red>=</font> p <font color=Cyan>`onFail`</font> <font color=Green><u>do</u></font> pn <font color=Red>&lt;-</font> posn+<a name="(line196)"></a>                                 <font color=Cyan>(</font>p <font color=Cyan>`adjustErr`</font> f<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font>show pn<font color=Cyan>)</font>+<a name="(line197)"></a>+<a name="(line198)"></a><font color=Blue>---- XML Parsing Functions ----</font>+<a name="(line199)"></a>+<a name="(line200)"></a><a name="document"></a>document <font color=Red>::</font> HParser <font color=Cyan>(</font>Document Posn<font color=Cyan>)</font>+<a name="(line201)"></a>document <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line202)"></a>    p     <font color=Red>&lt;-</font> prolog <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"unrecognisable XML prolog\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line203)"></a>    es    <font color=Red>&lt;-</font> many1 <font color=Cyan>(</font>element <font color=Magenta>"HTML document"</font><font color=Cyan>)</font>+<a name="(line204)"></a>    ms    <font color=Red>&lt;-</font> many misc+<a name="(line205)"></a>    return <font color=Cyan>(</font>Document p emptyST <font color=Cyan>(</font><font color=Green><u>case</u></font> map snd es <font color=Green><u>of</u></font>+<a name="(line206)"></a>                                  <font color=Red>[</font>e<font color=Red>]</font> <font color=Red>-&gt;</font> e+<a name="(line207)"></a>                                  es  <font color=Red>-&gt;</font> Elem <font color=Magenta>"html"</font> [] <font color=Cyan>(</font>map mkCElem es<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line208)"></a>                               ms<font color=Cyan>)</font>+<a name="(line209)"></a>  <font color=Green><u>where</u></font> mkCElem e <font color=Red>=</font> CElem e noPos+<a name="(line210)"></a>+<a name="(line211)"></a><a name="comment"></a>comment <font color=Red>::</font> HParser Comment+<a name="(line212)"></a>comment <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line213)"></a>    bracket <font color=Cyan>(</font>tok TokCommentOpen<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokCommentClose<font color=Cyan>)</font> freetext+<a name="(line214)"></a>+<a name="(line215)"></a><a name="processinginstruction"></a>processinginstruction <font color=Red>::</font> HParser ProcessingInstruction+<a name="(line216)"></a>processinginstruction <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line217)"></a>    tok TokPIOpen+<a name="(line218)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line219)"></a>      n <font color=Red>&lt;-</font> string  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"processing instruction has no target"</font>+<a name="(line220)"></a>      f <font color=Red>&lt;-</font> freetext+<a name="(line221)"></a>      <font color=Cyan>(</font>tok TokPIClose <font color=Cyan>`onFail`</font> tok TokAnyClose<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing ?&gt; or &gt;"</font>+<a name="(line222)"></a>      return <font color=Cyan>(</font>n<font color=Cyan>,</font> f<font color=Cyan>)</font>+<a name="(line223)"></a>+<a name="(line224)"></a><a name="cdsect"></a>cdsect <font color=Red>::</font> HParser CDSect+<a name="(line225)"></a>cdsect <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line226)"></a>    tok TokSectionOpen+<a name="(line227)"></a>    bracket <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection CDATAx<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSectionClose<font color=Cyan>)</font> chardata+<a name="(line228)"></a>+<a name="(line229)"></a><a name="prolog"></a>prolog <font color=Red>::</font> HParser Prolog+<a name="(line230)"></a>prolog <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line231)"></a>    x <font color=Red>&lt;-</font> maybe xmldecl+<a name="(line232)"></a>    m1 <font color=Red>&lt;-</font> many misc+<a name="(line233)"></a>    dtd <font color=Red>&lt;-</font> maybe doctypedecl+<a name="(line234)"></a>    m2 <font color=Red>&lt;-</font> many misc+<a name="(line235)"></a>    return <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font>+<a name="(line236)"></a>+<a name="(line237)"></a><a name="xmldecl"></a>xmldecl <font color=Red>::</font> HParser XMLDecl+<a name="(line238)"></a>xmldecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line239)"></a>    tok TokPIOpen+<a name="(line240)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line241)"></a>    p <font color=Red>&lt;-</font> posn+<a name="(line242)"></a>    s <font color=Red>&lt;-</font> freetext+<a name="(line243)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing ?&gt; in &lt;?xml ...?&gt;"</font>+<a name="(line244)"></a>    <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>either failP return <font color=Cyan>.</font> fst <font color=Cyan>.</font> runParser aux <font color=Cyan>.</font> xmlReLex p<font color=Cyan>)</font> s+<a name="(line245)"></a>  <font color=Green><u>where</u></font>+<a name="(line246)"></a>    aux <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line247)"></a>      v <font color=Red>&lt;-</font> versioninfo  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing XML version info"</font>+<a name="(line248)"></a>      e <font color=Red>&lt;-</font> maybe encodingdecl+<a name="(line249)"></a>      s <font color=Red>&lt;-</font> maybe sddecl+<a name="(line250)"></a>      return <font color=Cyan>(</font>XMLDecl v e s<font color=Cyan>)</font>+<a name="(line251)"></a>+<a name="(line252)"></a><a name="versioninfo"></a>versioninfo <font color=Red>::</font> HParser VersionInfo+<a name="(line253)"></a>versioninfo <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line254)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"version"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"VERSION"</font><font color=Cyan>)</font>+<a name="(line255)"></a>    tok TokEqual+<a name="(line256)"></a>    bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line257)"></a>+<a name="(line258)"></a><a name="misc"></a>misc <font color=Red>::</font> HParser Misc+<a name="(line259)"></a>misc <font color=Red>=</font> +<a name="(line260)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"&lt;!--comment--&gt;"</font><font color=Cyan>,</font> comment <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Comment<font color=Cyan>)</font>+<a name="(line261)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"&lt;?PI?&gt;"</font><font color=Cyan>,</font>         processinginstruction <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PI<font color=Cyan>)</font>+<a name="(line262)"></a>           <font color=Red>]</font>+<a name="(line263)"></a>+<a name="(line264)"></a>+<a name="(line265)"></a><font color=Blue>-- Question: for HTML, should we disallow in-line DTDs, allowing only externals?</font>+<a name="(line266)"></a><font color=Blue>-- Answer: I think so.</font>+<a name="(line267)"></a>+<a name="(line268)"></a><a name="doctypedecl"></a>doctypedecl <font color=Red>::</font> HParser DocTypeDecl+<a name="(line269)"></a>doctypedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line270)"></a>    tok TokSpecialOpen+<a name="(line271)"></a>    tok <font color=Cyan>(</font>TokSpecial DOCTYPEx<font color=Cyan>)</font>+<a name="(line272)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line273)"></a>      n <font color=Red>&lt;-</font> name+<a name="(line274)"></a>      eid <font color=Red>&lt;-</font> maybe externalid+<a name="(line275)"></a><font color=Blue>--    es &lt;- maybe (bracket (tok TokSqOpen) (tok TokSqClose)) (many markupdecl)</font>+<a name="(line276)"></a>      tok TokAnyClose  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing &gt; in DOCTYPE decl"</font>+<a name="(line277)"></a><font color=Blue>--    return (DTD n eid (case es of { Nothing -&gt; []; Just e -&gt; e }))</font>+<a name="(line278)"></a>      return <font color=Cyan>(</font>DTD n eid []<font color=Cyan>)</font>+<a name="(line279)"></a>+<a name="(line280)"></a><font color=Blue>--markupdecl :: HParser MarkupDecl</font>+<a name="(line281)"></a><font color=Blue>--markupdecl =</font>+<a name="(line282)"></a><font color=Blue>--    ( elementdecl &gt;&gt;= return . Element) `onFail`</font>+<a name="(line283)"></a><font color=Blue>--    ( attlistdecl &gt;&gt;= return . AttList) `onFail`</font>+<a name="(line284)"></a><font color=Blue>--    ( entitydecl &gt;&gt;= return . Entity) `onFail`</font>+<a name="(line285)"></a><font color=Blue>--    ( notationdecl &gt;&gt;= return . Notation) `onFail`</font>+<a name="(line286)"></a><font color=Blue>--    ( misc &gt;&gt;= return . MarkupMisc) `onFail`</font>+<a name="(line287)"></a><font color=Blue>--    PEREF(MarkupPE,markupdecl)</font>+<a name="(line288)"></a><font color=Blue>--</font>+<a name="(line289)"></a><font color=Blue>--extsubset :: HParser ExtSubset</font>+<a name="(line290)"></a><font color=Blue>--extsubset = do</font>+<a name="(line291)"></a><font color=Blue>--    td &lt;- maybe textdecl</font>+<a name="(line292)"></a><font color=Blue>--    ds &lt;- many extsubsetdecl</font>+<a name="(line293)"></a><font color=Blue>--    return (ExtSubset td ds)</font>+<a name="(line294)"></a><font color=Blue>--</font>+<a name="(line295)"></a><font color=Blue>--extsubsetdecl :: HParser ExtSubsetDecl</font>+<a name="(line296)"></a><font color=Blue>--extsubsetdecl =</font>+<a name="(line297)"></a><font color=Blue>--    ( markupdecl &gt;&gt;= return . ExtMarkupDecl) `onFail`</font>+<a name="(line298)"></a><font color=Blue>--    ( conditionalsect &gt;&gt;= return . ExtConditionalSect) `onFail`</font>+<a name="(line299)"></a><font color=Blue>--    PEREF(ExtPEReference,extsubsetdecl)</font>+<a name="(line300)"></a>+<a name="(line301)"></a><a name="sddecl"></a>sddecl <font color=Red>::</font> HParser SDDecl+<a name="(line302)"></a>sddecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line303)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"standalone"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"STANDALONE"</font><font color=Cyan>)</font>+<a name="(line304)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line305)"></a>      tok TokEqual <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing = in 'standalone' decl"</font>+<a name="(line306)"></a>      bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line307)"></a>              <font color=Cyan>(</font> <font color=Cyan>(</font>word <font color=Magenta>"yes"</font> <font color=Cyan>&gt;&gt;</font> return True<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line308)"></a>                <font color=Cyan>(</font>word <font color=Magenta>"no"</font> <font color=Cyan>&gt;&gt;</font> return False<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line309)"></a>                failP <font color=Magenta>"'standalone' decl requires 'yes' or 'no' value"</font> <font color=Cyan>)</font>+<a name="(line310)"></a>+<a name="(line311)"></a>+<a name="(line312)"></a>+<a name="(line313)"></a>+<a name="(line314)"></a><a name="Stack"></a><font color=Blue>----</font>+<a name="(line315)"></a><a name="Stack"></a><font color=Blue>-- VERY IMPORTANT NOTE: The stack returned here contains those tags which</font>+<a name="(line316)"></a><a name="Stack"></a><font color=Blue>-- have been closed implicitly and need to be reopened again at the</font>+<a name="(line317)"></a><a name="Stack"></a><font color=Blue>-- earliest opportunity.</font>+<a name="(line318)"></a><a name="Stack"></a><font color=Green><u>type</u></font> Stack <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>Attribute<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line319)"></a>+<a name="(line320)"></a><a name="element"></a>element <font color=Red>::</font> Name <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Stack<font color=Cyan>,</font>Element Posn<font color=Cyan>)</font>+<a name="(line321)"></a>element ctx <font color=Red>=</font>+<a name="(line322)"></a>  <font color=Green><u>do</u></font>+<a name="(line323)"></a>    tok TokAnyOpen+<a name="(line324)"></a>    <font color=Cyan>(</font>ElemTag e avs<font color=Cyan>)</font> <font color=Red>&lt;-</font> elemtag+<a name="(line325)"></a>    <font color=Cyan>(</font> <font color=Green><u>if</u></font> e <font color=Cyan>`closes`</font> ctx <font color=Green><u>then</u></font>+<a name="(line326)"></a>         <font color=Blue>-- insert the missing close-tag, fail forward, and reparse.</font>+<a name="(line327)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> debug <font color=Cyan>(</font><font color=Magenta>"/"</font><font color=Cyan>)</font>+<a name="(line328)"></a>              unparse <font color=Cyan>(</font><font color=Red>[</font>TokEndOpen<font color=Cyan>,</font> TokName ctx<font color=Cyan>,</font> TokAnyClose<font color=Cyan>,</font>+<a name="(line329)"></a>                        TokAnyOpen<font color=Cyan>,</font> TokName e<font color=Red>]</font> <font color=Cyan>++</font> reformatAttrs avs<font color=Cyan>)</font>+<a name="(line330)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem <font color=Magenta>"null"</font> [] []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line331)"></a>      <font color=Green><u>else</u></font> <font color=Green><u>if</u></font> e <font color=Cyan>`elem`</font> selfclosingtags <font color=Green><u>then</u></font>+<a name="(line332)"></a>         <font color=Blue>-- complete the parse straightaway.</font>+<a name="(line333)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokEndClose	<font color=Blue>-- self-closing &lt;tag /&gt; </font>+<a name="(line334)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"[+]"</font><font color=Cyan>)</font>+<a name="(line335)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem e avs []<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line336)"></a>     <font color=Blue>--  ( do tok TokAnyClose	-- sequence &lt;tag&gt;&lt;/tag&gt;	(**not HTML?**)</font>+<a name="(line337)"></a>     <font color=Blue>--       debug (e++"[+")</font>+<a name="(line338)"></a>     <font color=Blue>--       n &lt;- bracket (tok TokEndOpen) (tok TokAnyClose) name</font>+<a name="(line339)"></a>     <font color=Blue>--       debug "]"</font>+<a name="(line340)"></a>     <font color=Blue>--       if e == (map toLower n :: Name) </font>+<a name="(line341)"></a>     <font color=Blue>--         then return ([], Elem e avs [])      </font>+<a name="(line342)"></a>     <font color=Blue>--         else return (error "no nesting in empty tag")) `onFail`</font>+<a name="(line343)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokAnyClose	<font color=Blue>-- &lt;tag&gt; with no close (e.g. &lt;IMG&gt;)</font>+<a name="(line344)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"[+]"</font><font color=Cyan>)</font>+<a name="(line345)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem e avs []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line346)"></a>      <font color=Green><u>else</u></font>+<a name="(line347)"></a>        <font color=Cyan>(</font><font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokEndClose+<a name="(line348)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"[]"</font><font color=Cyan>)</font>+<a name="(line349)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem e avs []<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line350)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokAnyClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing &gt; or /&gt; in element tag"</font>+<a name="(line351)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"["</font><font color=Cyan>)</font>+<a name="(line352)"></a>           <font color=Blue>-- zz &lt;- many (content e)</font>+<a name="(line353)"></a>           <font color=Blue>-- n &lt;- bracket (tok TokEndOpen) (tok TokAnyClose) name</font>+<a name="(line354)"></a>              zz <font color=Red>&lt;-</font> manyFinally <font color=Cyan>(</font>content e<font color=Cyan>)</font>+<a name="(line355)"></a>                                <font color=Cyan>(</font>tok TokEndOpen<font color=Cyan>)</font>+<a name="(line356)"></a>              n <font color=Red>&lt;-</font> name+<a name="(line357)"></a>              commit <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font>+<a name="(line358)"></a>              debug <font color=Magenta>"]"</font>+<a name="(line359)"></a>              <font color=Green><u>let</u></font> <font color=Cyan>(</font>ss<font color=Cyan>,</font>cs<font color=Cyan>)</font> <font color=Red>=</font> unzip zz+<a name="(line360)"></a>              <font color=Green><u>let</u></font> s       <font color=Red>=</font> <font color=Green><u>if</u></font> null ss <font color=Green><u>then</u></font> [] <font color=Green><u>else</u></font> last ss+<a name="(line361)"></a>              <font color=Cyan>(</font> <font color=Green><u>if</u></font> e <font color=Cyan>==</font> <font color=Cyan>(</font>map toLower n <font color=Red>::</font> Name<font color=Cyan>)</font> <font color=Green><u>then</u></font>+<a name="(line362)"></a>                  <font color=Green><u>do</u></font> unparse <font color=Cyan>(</font>reformatTags <font color=Cyan>(</font>closeInner e s<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line363)"></a>                     debug <font color=Magenta>"^"</font>+<a name="(line364)"></a>                     return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem e avs cs<font color=Cyan>)</font>+<a name="(line365)"></a>                <font color=Green><u>else</u></font>+<a name="(line366)"></a>                  <font color=Green><u>do</u></font> unparse <font color=Red>[</font>TokEndOpen<font color=Cyan>,</font> TokName n<font color=Cyan>,</font> TokAnyClose<font color=Red>]</font>+<a name="(line367)"></a>                     debug <font color=Magenta>"-"</font>+<a name="(line368)"></a>                     return <font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>avs<font color=Cyan>)</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font><font color=Cyan>,</font> Elem e avs cs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line369)"></a>         <font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failP <font color=Cyan>(</font><font color=Magenta>"failed to repair non-matching tags in context: "</font><font color=Cyan>++</font>ctx<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line370)"></a>+<a name="(line371)"></a><a name="closeInner"></a>closeInner <font color=Red>::</font> Name <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>Attribute<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>Attribute<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line372)"></a>closeInner c ts <font color=Red>=</font>+<a name="(line373)"></a>    <font color=Green><u>case</u></font> lookup c closeInnerTags <font color=Green><u>of</u></font>+<a name="(line374)"></a>      <font color=Cyan>(</font>Just these<font color=Cyan>)</font> <font color=Red>-&gt;</font> filter <font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>`notElem`</font> these<font color=Cyan>)</font><font color=Cyan>.</font>fst<font color=Cyan>)</font> ts+<a name="(line375)"></a>      Nothing      <font color=Red>-&gt;</font> ts+<a name="(line376)"></a>+<a name="(line377)"></a><a name="unparse"></a>unparse ts <font color=Red>=</font> <font color=Green><u>do</u></font> p <font color=Red>&lt;-</font> posn+<a name="(line378)"></a>                reparse <font color=Cyan>(</font>zip <font color=Cyan>(</font>repeat p<font color=Cyan>)</font> ts<font color=Cyan>)</font>+<a name="(line379)"></a>+<a name="(line380)"></a><a name="reformatAttrs"></a>reformatAttrs avs <font color=Red>=</font> concatMap f0 avs+<a name="(line381)"></a>    <font color=Green><u>where</u></font> f0 <font color=Cyan>(</font>a<font color=Cyan>,</font> v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>TokName a<font color=Cyan>,</font> TokEqual<font color=Cyan>,</font> TokQuote<font color=Cyan>,</font>+<a name="(line382)"></a>                                       TokFreeText <font color=Cyan>(</font>show v<font color=Cyan>)</font><font color=Cyan>,</font> TokQuote<font color=Red>]</font>+<a name="(line383)"></a><a name="reformatTags"></a>reformatTags ts <font color=Red>=</font> concatMap f0 ts+<a name="(line384)"></a>    <font color=Green><u>where</u></font> f0 <font color=Cyan>(</font>t<font color=Cyan>,</font>avs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>TokAnyOpen<font color=Cyan>,</font> TokName t<font color=Red>]</font><font color=Cyan>++</font>reformatAttrs avs<font color=Cyan>++</font><font color=Red>[</font>TokAnyClose<font color=Red>]</font>+<a name="(line385)"></a>+<a name="(line386)"></a><a name="content"></a>content <font color=Red>::</font> Name <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Stack<font color=Cyan>,</font>Content Posn<font color=Cyan>)</font>+<a name="(line387)"></a>content ctx <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn <font color=Cyan>;</font> content' p ctx <font color=Cyan>}</font>+<a name="(line388)"></a>  <font color=Green><u>where</u></font> content' p ctx <font color=Red>=</font> oneOf'+<a name="(line389)"></a>          <font color=Red>[</font> <font color=Cyan>(</font> <font color=Magenta>"element"</font><font color=Cyan>,</font> element ctx <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font><font color=Cyan>(</font>s<font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Red>-&gt;</font> return <font color=Cyan>(</font>s<font color=Cyan>,</font> CElem e p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line390)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"chardata"</font><font color=Cyan>,</font> chardata <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>s<font color=Red>-&gt;</font> return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CString False s p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line391)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>r<font color=Red>-&gt;</font> return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CRef r p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line392)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"cdsect"</font><font color=Cyan>,</font> cdsect <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>c<font color=Red>-&gt;</font> return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CString True c p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line393)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"misc"</font><font color=Cyan>,</font> misc <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>m<font color=Red>-&gt;</font>  return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CMisc m p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line394)"></a>          <font color=Red>]</font> <font color=Cyan>`adjustErrP`</font> <font color=Cyan>(</font><font color=Magenta>"when looking for a content item,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line395)"></a>+<a name="(line396)"></a><a name="elemtag"></a><font color=Blue>----</font>+<a name="(line397)"></a>elemtag <font color=Red>::</font> HParser ElemTag+<a name="(line398)"></a>elemtag <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line399)"></a>    n <font color=Red>&lt;-</font> name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"malformed element tag\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line400)"></a>    <font color=Green><u>as</u></font> <font color=Red>&lt;-</font> many attribute+<a name="(line401)"></a>    return <font color=Cyan>(</font>ElemTag <font color=Cyan>(</font>map toLower n<font color=Cyan>)</font> <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line402)"></a>+<a name="(line403)"></a><a name="attribute"></a>attribute <font color=Red>::</font> HParser Attribute+<a name="(line404)"></a>attribute <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line405)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line406)"></a>    v <font color=Red>&lt;-</font> <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokEqual+<a name="(line407)"></a>             attvalue<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line408)"></a>         <font color=Cyan>(</font>return <font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Magenta>"TRUE"</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line409)"></a>    return <font color=Cyan>(</font>map toLower n<font color=Cyan>,</font>v<font color=Cyan>)</font>+<a name="(line410)"></a>+<a name="(line411)"></a><font color=Blue>--elementdecl :: HParser ElementDecl</font>+<a name="(line412)"></a><font color=Blue>--elementdecl = do</font>+<a name="(line413)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line414)"></a><font color=Blue>--    tok (TokSpecial ELEMENTx)</font>+<a name="(line415)"></a><font color=Blue>--    n &lt;- name `onFail` failP "missing identifier in ELEMENT decl"</font>+<a name="(line416)"></a><font color=Blue>--    c &lt;- contentspec `onFail` failP "missing content spec in ELEMENT decl"</font>+<a name="(line417)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating ELEMENT decl"</font>+<a name="(line418)"></a><font color=Blue>--    return (ElementDecl n c)</font>+<a name="(line419)"></a><font color=Blue>--</font>+<a name="(line420)"></a><font color=Blue>--contentspec :: HParser ContentSpec</font>+<a name="(line421)"></a><font color=Blue>--contentspec =</font>+<a name="(line422)"></a><font color=Blue>--    ( word "EMPTY" &gt;&gt; return EMPTY) `onFail`</font>+<a name="(line423)"></a><font color=Blue>--    ( word "ANY" &gt;&gt; return ANY) `onFail`</font>+<a name="(line424)"></a><font color=Blue>--    ( mixed &gt;&gt;= return . Mixed) `onFail`</font>+<a name="(line425)"></a><font color=Blue>--    ( cp &gt;&gt;= return . ContentSpec) `onFail`</font>+<a name="(line426)"></a><font color=Blue>--    PEREF(ContentPE,contentspec)</font>+<a name="(line427)"></a><font color=Blue>--</font>+<a name="(line428)"></a><font color=Blue>--choice :: HParser [CP]</font>+<a name="(line429)"></a><font color=Blue>--choice = do</font>+<a name="(line430)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line431)"></a><font color=Blue>--            (cp `sepby1` (tok TokPipe))</font>+<a name="(line432)"></a><font color=Blue>--</font>+<a name="(line433)"></a><font color=Blue>--sequence :: HParser [CP]</font>+<a name="(line434)"></a><font color=Blue>--sequence = do</font>+<a name="(line435)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line436)"></a><font color=Blue>--            (cp `sepby1` (tok TokComma))</font>+<a name="(line437)"></a><font color=Blue>--</font>+<a name="(line438)"></a><font color=Blue>--cp :: HParser CP</font>+<a name="(line439)"></a><font color=Blue>--cp =</font>+<a name="(line440)"></a><font color=Blue>--    ( do n &lt;- name</font>+<a name="(line441)"></a><font color=Blue>--         m &lt;- modifier</font>+<a name="(line442)"></a><font color=Blue>--         return (TagName n m)) `onFail`</font>+<a name="(line443)"></a><font color=Blue>--    ( do ss &lt;- sequence</font>+<a name="(line444)"></a><font color=Blue>--         m &lt;- modifier</font>+<a name="(line445)"></a><font color=Blue>--         return (Seq ss m)) `onFail`</font>+<a name="(line446)"></a><font color=Blue>--    ( do cs &lt;- choice</font>+<a name="(line447)"></a><font color=Blue>--         m &lt;- modifier</font>+<a name="(line448)"></a><font color=Blue>--         return (Choice cs m)) `onFail`</font>+<a name="(line449)"></a><font color=Blue>--    PEREF(CPPE,cp)</font>+<a name="(line450)"></a><font color=Blue>--</font>+<a name="(line451)"></a><font color=Blue>--modifier :: HParser Modifier</font>+<a name="(line452)"></a><font color=Blue>--modifier =</font>+<a name="(line453)"></a><font color=Blue>--    ( tok TokStar &gt;&gt; return Star) `onFail`</font>+<a name="(line454)"></a><font color=Blue>--    ( tok TokQuery &gt;&gt; return Query) `onFail`</font>+<a name="(line455)"></a><font color=Blue>--    ( tok TokPlus &gt;&gt; return Plus) `onFail`</font>+<a name="(line456)"></a><font color=Blue>--    ( return None)</font>+<a name="(line457)"></a><font color=Blue>--</font>+<a name="(line458)"></a><font color=Blue>--mixed :: HParser Mixed</font>+<a name="(line459)"></a><font color=Blue>--mixed = do</font>+<a name="(line460)"></a><font color=Blue>--    tok TokBraOpen</font>+<a name="(line461)"></a><font color=Blue>--    tok TokHash</font>+<a name="(line462)"></a><font color=Blue>--    word "PCDATA"</font>+<a name="(line463)"></a><font color=Blue>--    cont</font>+<a name="(line464)"></a><font color=Blue>--  where</font>+<a name="(line465)"></a><font color=Blue>--    cont = ( tok TokBraClose &gt;&gt; return PCDATA) `onFail`</font>+<a name="(line466)"></a><font color=Blue>--           ( do cs &lt;- many ( do tok TokPipe</font>+<a name="(line467)"></a><font color=Blue>--                                n &lt;- name</font>+<a name="(line468)"></a><font color=Blue>--                                return n)</font>+<a name="(line469)"></a><font color=Blue>--                tok TokBraClose</font>+<a name="(line470)"></a><font color=Blue>--                tok TokStar</font>+<a name="(line471)"></a><font color=Blue>--                return (PCDATAplus cs))</font>+<a name="(line472)"></a><font color=Blue>--</font>+<a name="(line473)"></a><font color=Blue>--attlistdecl :: HParser AttListDecl</font>+<a name="(line474)"></a><font color=Blue>--attlistdecl = do</font>+<a name="(line475)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line476)"></a><font color=Blue>--    tok (TokSpecial ATTLISTx)</font>+<a name="(line477)"></a><font color=Blue>--    n &lt;- name `onFail` failP "missing identifier in ATTLIST"</font>+<a name="(line478)"></a><font color=Blue>--    ds &lt;- many attdef</font>+<a name="(line479)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "missing &gt; terminating ATTLIST"</font>+<a name="(line480)"></a><font color=Blue>--    return (AttListDecl n ds)</font>+<a name="(line481)"></a><font color=Blue>--</font>+<a name="(line482)"></a><font color=Blue>--attdef :: HParser AttDef</font>+<a name="(line483)"></a><font color=Blue>--attdef = do</font>+<a name="(line484)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line485)"></a><font color=Blue>--    t &lt;- atttype `onFail` failP "missing attribute type in attlist defn"</font>+<a name="(line486)"></a><font color=Blue>--    d &lt;- defaultdecl</font>+<a name="(line487)"></a><font color=Blue>--    return (AttDef n t d)</font>+<a name="(line488)"></a><font color=Blue>--</font>+<a name="(line489)"></a><font color=Blue>--atttype :: HParser AttType</font>+<a name="(line490)"></a><font color=Blue>--atttype =</font>+<a name="(line491)"></a><font color=Blue>--    ( word "CDATA" &gt;&gt; return StringType) `onFail`</font>+<a name="(line492)"></a><font color=Blue>--    ( tokenizedtype &gt;&gt;= return . TokenizedType) `onFail`</font>+<a name="(line493)"></a><font color=Blue>--    ( enumeratedtype &gt;&gt;= return . EnumeratedType)</font>+<a name="(line494)"></a><font color=Blue>--</font>+<a name="(line495)"></a><font color=Blue>--tokenizedtype :: HParser TokenizedType</font>+<a name="(line496)"></a><font color=Blue>--tokenizedtype =</font>+<a name="(line497)"></a><font color=Blue>--    ( word "ID" &gt;&gt; return ID) `onFail`</font>+<a name="(line498)"></a><font color=Blue>--    ( word "IDREF" &gt;&gt; return IDREF) `onFail`</font>+<a name="(line499)"></a><font color=Blue>--    ( word "IDREFS" &gt;&gt; return IDREFS) `onFail`</font>+<a name="(line500)"></a><font color=Blue>--    ( word "ENTITY" &gt;&gt; return ENTITY) `onFail`</font>+<a name="(line501)"></a><font color=Blue>--    ( word "ENTITIES" &gt;&gt; return ENTITIES) `onFail`</font>+<a name="(line502)"></a><font color=Blue>--    ( word "NMTOKEN" &gt;&gt; return NMTOKEN) `onFail`</font>+<a name="(line503)"></a><font color=Blue>--    ( word "NMTOKENS" &gt;&gt; return NMTOKENS)</font>+<a name="(line504)"></a><font color=Blue>--</font>+<a name="(line505)"></a><font color=Blue>--enumeratedtype :: HParser EnumeratedType</font>+<a name="(line506)"></a><font color=Blue>--enumeratedtype =</font>+<a name="(line507)"></a><font color=Blue>--    ( notationtype &gt;&gt;= return . NotationType) `onFail`</font>+<a name="(line508)"></a><font color=Blue>--    ( enumeration &gt;&gt;= return . Enumeration)</font>+<a name="(line509)"></a><font color=Blue>--</font>+<a name="(line510)"></a><font color=Blue>--notationtype :: HParser NotationType</font>+<a name="(line511)"></a><font color=Blue>--notationtype = do</font>+<a name="(line512)"></a><font color=Blue>--    word "NOTATION"</font>+<a name="(line513)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line514)"></a><font color=Blue>--            (name `sepby1` (tok TokPipe))</font>+<a name="(line515)"></a><font color=Blue>--</font>+<a name="(line516)"></a><font color=Blue>--enumeration :: HParser Enumeration</font>+<a name="(line517)"></a><font color=Blue>--enumeration =</font>+<a name="(line518)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line519)"></a><font color=Blue>--            (nmtoken `sepby1` (tok TokPipe))</font>+<a name="(line520)"></a><font color=Blue>--</font>+<a name="(line521)"></a><font color=Blue>--defaultdecl :: HParser DefaultDecl</font>+<a name="(line522)"></a><font color=Blue>--defaultdecl =</font>+<a name="(line523)"></a><font color=Blue>--    ( tok TokHash &gt;&gt; word "REQUIRED" &gt;&gt; return REQUIRED) `onFail`</font>+<a name="(line524)"></a><font color=Blue>--    ( tok TokHash &gt;&gt; word "IMPLIED" &gt;&gt; return IMPLIED) `onFail`</font>+<a name="(line525)"></a><font color=Blue>--    ( do f &lt;- maybe (tok TokHash &gt;&gt; word "FIXED" &gt;&gt; return FIXED)</font>+<a name="(line526)"></a><font color=Blue>--         a &lt;- attvalue</font>+<a name="(line527)"></a><font color=Blue>--         return (DefaultTo a f))</font>+<a name="(line528)"></a><font color=Blue>--</font>+<a name="(line529)"></a><font color=Blue>--conditionalsect :: HParser ConditionalSect</font>+<a name="(line530)"></a><font color=Blue>--conditionalsect =</font>+<a name="(line531)"></a><font color=Blue>--    ( do tok TokSectionOpen</font>+<a name="(line532)"></a><font color=Blue>--         tok (TokSection INCLUDEx)</font>+<a name="(line533)"></a><font color=Blue>--         tok TokSqOpen `onFail` failP "missing [ after INCLUDE"</font>+<a name="(line534)"></a><font color=Blue>--         i &lt;- extsubsetdecl `onFail` failP "missing ExtSubsetDecl in INCLUDE"</font>+<a name="(line535)"></a><font color=Blue>--         tok TokSectionClose `onFail` failP "missing ] after INCLUDE"</font>+<a name="(line536)"></a><font color=Blue>--         return (IncludeSect i)) `onFail`</font>+<a name="(line537)"></a><font color=Blue>--    ( do tok TokSectionOpen</font>+<a name="(line538)"></a><font color=Blue>--         tok (TokSection IGNOREx)</font>+<a name="(line539)"></a><font color=Blue>--         tok TokSqOpen `onFail` failP "missing [ after IGNORE"</font>+<a name="(line540)"></a><font color=Blue>--         i &lt;- many ignoresectcontents</font>+<a name="(line541)"></a><font color=Blue>--         tok TokSectionClose `onFail` failP "missing ] after IGNORE"</font>+<a name="(line542)"></a><font color=Blue>--         return (IgnoreSect i))</font>+<a name="(line543)"></a><font color=Blue>--</font>+<a name="(line544)"></a><font color=Blue>--ignoresectcontents :: HParser IgnoreSectContents</font>+<a name="(line545)"></a><font color=Blue>--ignoresectcontents = do</font>+<a name="(line546)"></a><font color=Blue>--    i &lt;- ignore</font>+<a name="(line547)"></a><font color=Blue>--    is &lt;- many (do tok TokSectionOpen</font>+<a name="(line548)"></a><font color=Blue>--                   ic &lt;- ignoresectcontents</font>+<a name="(line549)"></a><font color=Blue>--                   tok TokSectionClose</font>+<a name="(line550)"></a><font color=Blue>--                   ig &lt;- ignore</font>+<a name="(line551)"></a><font color=Blue>--                   return (ic,ig))</font>+<a name="(line552)"></a><font color=Blue>--    return (IgnoreSectContents i is)</font>+<a name="(line553)"></a><font color=Blue>--</font>+<a name="(line554)"></a><font color=Blue>--ignore :: HParser Ignore</font>+<a name="(line555)"></a><font color=Blue>--ignore = freetext &gt;&gt;= return . Ignore</font>+<a name="(line556)"></a>+<a name="(line557)"></a><a name="reference"></a>reference <font color=Red>::</font> HParser Reference+<a name="(line558)"></a>reference <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line559)"></a>    bracket <font color=Cyan>(</font>tok TokAmp<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSemi<font color=Cyan>)</font> <font color=Cyan>(</font>freetext <font color=Cyan>&gt;&gt;=</font> val<font color=Cyan>)</font>+<a name="(line560)"></a>  <font color=Green><u>where</u></font>+<a name="(line561)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font><font color=Magenta>'x'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font> <font color=Red>|</font> all isHexDigit i+<a name="(line562)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readHex <font color=Cyan>$</font> i+<a name="(line563)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font>     <font color=Red>|</font> all isDigit i+<a name="(line564)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readDec <font color=Cyan>$</font> i+<a name="(line565)"></a>    val name        <font color=Red>=</font> return <font color=Cyan>.</font> RefEntity <font color=Cyan>$</font> name+<a name="(line566)"></a>+<a name="(line567)"></a><font color=Blue>{-+<a name="(line568)"></a>reference :: HParser Reference+<a name="(line569)"></a>reference =+<a name="(line570)"></a>    ( charref &gt;&gt;= return . RefChar) `onFail`+<a name="(line571)"></a>    ( entityref &gt;&gt;= return . RefEntity)+<a name="(line572)"></a>+<a name="(line573)"></a>entityref :: HParser EntityRef+<a name="(line574)"></a>entityref = do+<a name="(line575)"></a>    n &lt;- bracket (tok TokAmp) (tok TokSemi) name+<a name="(line576)"></a>    return n+<a name="(line577)"></a>+<a name="(line578)"></a>charref :: HParser CharRef+<a name="(line579)"></a>charref = do+<a name="(line580)"></a>    bracket (tok TokAmp) (tok TokSemi) (freetext &gt;&gt;= readCharVal)+<a name="(line581)"></a>  where+<a name="(line582)"></a>    readCharVal ('#':'x':i) = return . fst . head . readHex $ i+<a name="(line583)"></a>    readCharVal ('#':i)     = return . fst . head . readDec $ i+<a name="(line584)"></a>    readCharVal _           = mzero+<a name="(line585)"></a>-}</font>+<a name="(line586)"></a>+<a name="(line587)"></a><font color=Blue>--pereference :: HParser PEReference</font>+<a name="(line588)"></a><font color=Blue>--pereference = do</font>+<a name="(line589)"></a><font color=Blue>--    bracket (tok TokPercent) (tok TokSemi) nmtoken</font>+<a name="(line590)"></a><font color=Blue>--</font>+<a name="(line591)"></a><font color=Blue>--entitydecl :: HParser EntityDecl</font>+<a name="(line592)"></a><font color=Blue>--entitydecl =</font>+<a name="(line593)"></a><font color=Blue>--    ( gedecl &gt;&gt;= return . EntityGEDecl) `onFail`</font>+<a name="(line594)"></a><font color=Blue>--    ( pedecl &gt;&gt;= return . EntityPEDecl)</font>+<a name="(line595)"></a><font color=Blue>--</font>+<a name="(line596)"></a><font color=Blue>--gedecl :: HParser GEDecl</font>+<a name="(line597)"></a><font color=Blue>--gedecl = do</font>+<a name="(line598)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line599)"></a><font color=Blue>--    tok (TokSpecial ENTITYx)</font>+<a name="(line600)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line601)"></a><font color=Blue>--    e &lt;- entitydef `onFail` failP "missing entity defn in G ENTITY decl"</font>+<a name="(line602)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating G ENTITY decl"</font>+<a name="(line603)"></a><font color=Blue>--    return (GEDecl n e)</font>+<a name="(line604)"></a><font color=Blue>--</font>+<a name="(line605)"></a><font color=Blue>--pedecl :: HParser PEDecl</font>+<a name="(line606)"></a><font color=Blue>--pedecl = do</font>+<a name="(line607)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line608)"></a><font color=Blue>--    tok (TokSpecial ENTITYx)</font>+<a name="(line609)"></a><font color=Blue>--    tok TokPercent</font>+<a name="(line610)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line611)"></a><font color=Blue>--    e &lt;- pedef `onFail` failP "missing entity defn in P ENTITY decl"</font>+<a name="(line612)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating P ENTITY decl"</font>+<a name="(line613)"></a><font color=Blue>--    return (PEDecl n e)</font>+<a name="(line614)"></a><font color=Blue>--</font>+<a name="(line615)"></a><font color=Blue>--entitydef :: HParser EntityDef</font>+<a name="(line616)"></a><font color=Blue>--entitydef =</font>+<a name="(line617)"></a><font color=Blue>--    ( entityvalue &gt;&gt;= return . DefEntityValue) `onFail`</font>+<a name="(line618)"></a><font color=Blue>--    ( do eid &lt;- externalid</font>+<a name="(line619)"></a><font color=Blue>--         ndd &lt;- maybe ndatadecl</font>+<a name="(line620)"></a><font color=Blue>--         return (DefExternalID eid ndd))</font>+<a name="(line621)"></a><font color=Blue>--</font>+<a name="(line622)"></a><font color=Blue>--pedef :: HParser PEDef</font>+<a name="(line623)"></a><font color=Blue>--pedef =</font>+<a name="(line624)"></a><font color=Blue>--    ( entityvalue &gt;&gt;= return . PEDefEntityValue) `onFail`</font>+<a name="(line625)"></a><font color=Blue>--    ( externalid &gt;&gt;= return . PEDefExternalID)</font>+<a name="(line626)"></a>+<a name="(line627)"></a><a name="externalid"></a>externalid <font color=Red>::</font> HParser ExternalID+<a name="(line628)"></a>externalid <font color=Red>=</font>+<a name="(line629)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> word <font color=Magenta>"SYSTEM"</font>+<a name="(line630)"></a>         s <font color=Red>&lt;-</font> systemliteral+<a name="(line631)"></a>         return <font color=Cyan>(</font>SYSTEM s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line632)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> word <font color=Magenta>"PUBLIC"</font>+<a name="(line633)"></a>         p <font color=Red>&lt;-</font> pubidliteral+<a name="(line634)"></a>         s <font color=Red>&lt;-</font> <font color=Cyan>(</font>systemliteral <font color=Cyan>`onFail`</font> return <font color=Cyan>(</font>SystemLiteral <font color=Magenta>""</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line635)"></a>         return <font color=Cyan>(</font>PUBLIC p s<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line636)"></a>+<a name="(line637)"></a><font color=Blue>--ndatadecl :: HParser NDataDecl</font>+<a name="(line638)"></a><font color=Blue>--ndatadecl = do</font>+<a name="(line639)"></a><font color=Blue>--    word "NDATA"</font>+<a name="(line640)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line641)"></a><font color=Blue>--    return (NDATA n)</font>+<a name="(line642)"></a>+<a name="(line643)"></a><a name="textdecl"></a>textdecl <font color=Red>::</font> HParser TextDecl+<a name="(line644)"></a>textdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line645)"></a>    tok TokPIOpen+<a name="(line646)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line647)"></a>    v <font color=Red>&lt;-</font> maybe versioninfo+<a name="(line648)"></a>    e <font color=Red>&lt;-</font> encodingdecl+<a name="(line649)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"expected ?&gt; terminating text decl"</font>+<a name="(line650)"></a>    return <font color=Cyan>(</font>TextDecl v e<font color=Cyan>)</font>+<a name="(line651)"></a>+<a name="(line652)"></a><font color=Blue>--extparsedent :: HParser ExtParsedEnt</font>+<a name="(line653)"></a><font color=Blue>--extparsedent = do</font>+<a name="(line654)"></a><font color=Blue>--    t &lt;- maybe textdecl</font>+<a name="(line655)"></a><font color=Blue>--    (_,c) &lt;- (content "")</font>+<a name="(line656)"></a><font color=Blue>--    return (ExtParsedEnt t c)</font>+<a name="(line657)"></a><font color=Blue>--</font>+<a name="(line658)"></a><font color=Blue>--extpe :: HParser ExtPE</font>+<a name="(line659)"></a><font color=Blue>--extpe = do</font>+<a name="(line660)"></a><font color=Blue>--    t &lt;- maybe textdecl</font>+<a name="(line661)"></a><font color=Blue>--    e &lt;- extsubsetdecl</font>+<a name="(line662)"></a><font color=Blue>--    return (ExtPE t e)</font>+<a name="(line663)"></a>+<a name="(line664)"></a><a name="encodingdecl"></a>encodingdecl <font color=Red>::</font> HParser EncodingDecl+<a name="(line665)"></a>encodingdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line666)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"encoding"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"ENCODING"</font><font color=Cyan>)</font>+<a name="(line667)"></a>    tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected = in 'encoding' decl"</font>+<a name="(line668)"></a>    f <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line669)"></a>    return <font color=Cyan>(</font>EncodingDecl f<font color=Cyan>)</font>+<a name="(line670)"></a>+<a name="(line671)"></a><font color=Blue>--notationdecl :: HParser NotationDecl</font>+<a name="(line672)"></a><font color=Blue>--notationdecl = do</font>+<a name="(line673)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line674)"></a><font color=Blue>--    word "NOTATION"</font>+<a name="(line675)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line676)"></a><font color=Blue>--    e &lt;- either externalid publicid</font>+<a name="(line677)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating NOTATION decl"</font>+<a name="(line678)"></a><font color=Blue>--    return (NOTATION n e)</font>+<a name="(line679)"></a>+<a name="(line680)"></a><a name="publicid"></a>publicid <font color=Red>::</font> HParser PublicID+<a name="(line681)"></a>publicid <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line682)"></a>    word <font color=Magenta>"PUBLICID"</font>+<a name="(line683)"></a>    p <font color=Red>&lt;-</font> pubidliteral+<a name="(line684)"></a>    return <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>+<a name="(line685)"></a>+<a name="(line686)"></a><a name="entityvalue"></a>entityvalue <font color=Red>::</font> HParser EntityValue+<a name="(line687)"></a>entityvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line688)"></a>    evs <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>many ev<font color=Cyan>)</font>+<a name="(line689)"></a>    return <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>+<a name="(line690)"></a>+<a name="(line691)"></a><a name="ev"></a>ev <font color=Red>::</font> HParser EV+<a name="(line692)"></a>ev <font color=Red>=</font>+<a name="(line693)"></a>    <font color=Cyan>(</font> freetext <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVString<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line694)"></a><font color=Blue>--  PEREF(EVPERef,ev) `onFail`</font>+<a name="(line695)"></a>    <font color=Cyan>(</font> reference <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVRef<font color=Cyan>)</font>+<a name="(line696)"></a>+<a name="(line697)"></a><a name="attvalue"></a>attvalue <font color=Red>::</font> HParser AttValue+<a name="(line698)"></a>attvalue <font color=Red>=</font>+<a name="(line699)"></a>  <font color=Cyan>(</font> <font color=Green><u>do</u></font> avs <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line700)"></a>                      <font color=Cyan>(</font>many <font color=Cyan>(</font>either freetext reference<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line701)"></a>       return <font color=Cyan>(</font>AttValue avs<font color=Cyan>)</font> <font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line702)"></a>  <font color=Cyan>(</font> <font color=Green><u>do</u></font> v <font color=Red>&lt;-</font> nmtoken+<a name="(line703)"></a>       s <font color=Red>&lt;-</font> <font color=Cyan>(</font>tok TokPercent <font color=Cyan>&gt;&gt;</font> return <font color=Magenta>"%"</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font> return <font color=Magenta>""</font>+<a name="(line704)"></a>       return <font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Cyan>(</font>v<font color=Cyan>++</font>s<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line705)"></a>  <font color=Cyan>(</font> <font color=Green><u>do</u></font> s <font color=Red>&lt;-</font> oneOf <font color=Red>[</font> tok TokPlus <font color=Cyan>&gt;&gt;</font> return <font color=Magenta>"+"</font>+<a name="(line706)"></a>                  <font color=Cyan>,</font> tok TokHash <font color=Cyan>&gt;&gt;</font> return <font color=Magenta>"#"</font>+<a name="(line707)"></a>                  <font color=Red>]</font>+<a name="(line708)"></a>       v <font color=Red>&lt;-</font> nmtoken+<a name="(line709)"></a>       return <font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Cyan>(</font>s<font color=Cyan>++</font>v<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line710)"></a>  failP <font color=Magenta>"Badly formatted attribute value"</font>+<a name="(line711)"></a>+<a name="(line712)"></a><a name="systemliteral"></a>systemliteral <font color=Red>::</font> HParser SystemLiteral+<a name="(line713)"></a>systemliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line714)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line715)"></a>    return <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>		<font color=Blue>-- note: need to fold &amp;...; escapes</font>+<a name="(line716)"></a>+<a name="(line717)"></a><a name="pubidliteral"></a>pubidliteral <font color=Red>::</font> HParser PubidLiteral+<a name="(line718)"></a>pubidliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line719)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line720)"></a>    return <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>		<font color=Blue>-- note: need to fold &amp;...; escapes</font>+<a name="(line721)"></a>+<a name="(line722)"></a><a name="chardata"></a>chardata <font color=Red>::</font> HParser CharData+<a name="(line723)"></a>chardata <font color=Red>=</font> freetext <font color=Blue>-- &gt;&gt;= return . CharData</font>+<a name="(line724)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Html/ParseLazy.html view
@@ -0,0 +1,732 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This is a parser for HTML documents.  Unlike for XML documents, it</font>+<a name="(line2)"></a><font color=Blue>--   must include a certain amount of error-correction to account for</font>+<a name="(line3)"></a><font color=Blue>--   HTML features like self-terminating tags, unterminated tags, and</font>+<a name="(line4)"></a><font color=Blue>--   incorrect nesting.  The input is tokenised by the</font>+<a name="(line5)"></a><font color=Blue>--   XML lexer (a separate lexer is not required for HTML).</font>+<a name="(line6)"></a>+<a name="(line7)"></a><font color=Blue>-- It uses a slightly extended version of the Hutton/Meijer parser</font>+<a name="(line8)"></a><font color=Blue>-- combinators.</font>+<a name="(line9)"></a>+<a name="(line10)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>ParseLazy+<a name="(line11)"></a>  <font color=Cyan>(</font> htmlParse+<a name="(line12)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line13)"></a>+<a name="(line14)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>either<font color=Cyan>,</font>maybe<font color=Cyan>,</font>sequence<font color=Cyan>)</font>+<a name="(line15)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Prelude <font color=Cyan>(</font>either<font color=Cyan>)</font>+<a name="(line16)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line17)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>toLower<font color=Cyan>,</font> isSpace<font color=Cyan>,</font> isDigit<font color=Cyan>,</font> isHexDigit<font color=Cyan>)</font>+<a name="(line18)"></a><font color=Green><u>import</u></font> Numeric <font color=Cyan>(</font>readDec<font color=Cyan>,</font>readHex<font color=Cyan>)</font>+<a name="(line19)"></a><font color=Green><u>import</u></font> Monad+<a name="(line20)"></a>+<a name="(line21)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line22)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Lex+<a name="(line23)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn+<a name="(line24)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly<font color=Cyan>.</font>NoLeak<font color=Cyan>.</font>Lazy+<a name="(line25)"></a>+<a name="(line26)"></a><font color=Blue>--  #define DEBUG</font>+<a name="(line27)"></a> +<a name="(line28)"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>+<a name="(line29)"></a><font color=Magenta><em>#  if ( defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt; 502 ) || \</em></font>+<a name="(line30)"></a>      <font color=Cyan>(</font> defined<font color=Cyan>(</font><b><font color=Magenta>__NHC__</font></b><font color=Cyan>)</font> <font color=Cyan>&amp;&amp;</font> <b><font color=Magenta>__NHC__</font></b> <font color=Cyan>&gt;</font> <font color=Magenta>114</font> <font color=Cyan>)</font> <font color=Cyan>||</font> defined<font color=Cyan>(</font><b><font color=Magenta>__HUGS__</font></b><font color=Cyan>)</font>+<a name="(line31)"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line32)"></a><font color=Magenta><em>#  elif defined(__GLASGOW_HASKELL__)</em></font>+<a name="(line33)"></a><font color=Green><u>import</u></font> IOExts<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line34)"></a><font color=Magenta><em>#  elif defined(__NHC__) || defined(__HBC__)</em></font>+<a name="(line35)"></a><font color=Green><u>import</u></font> NonStdTrace+<a name="(line36)"></a><font color=Magenta><em>#  endif</em></font>+<a name="(line37)"></a><a name="debug"></a>debug <font color=Red>::</font> Monad m <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> m ()+<a name="(line38)"></a>debug s <font color=Red>=</font> trace s <font color=Cyan>(</font>return ()<font color=Cyan>)</font>+<a name="(line39)"></a><font color=Magenta><em>#else</em></font>+<a name="(line40)"></a>debug <font color=Red>::</font> Monad m <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> m ()+<a name="(line41)"></a>debug s <font color=Red>=</font> return ()+<a name="(line42)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line43)"></a>+<a name="(line44)"></a>+<a name="(line45)"></a><a name="htmlParse"></a><font color=Blue>-- | The first argument is the name of the file, the second is the string</font>+<a name="(line46)"></a><font color=Blue>--   contents of the file.  The result is the generic representation of</font>+<a name="(line47)"></a><font color=Blue>--   an XML document.  Any errors cause program failure with message to stderr.</font>+<a name="(line48)"></a>htmlParse <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Document Posn+<a name="(line49)"></a>htmlParse name <font color=Red>=</font> <font color=Blue>{-simplify .-}</font> fst <font color=Cyan>.</font> runParser document <font color=Cyan>.</font> xmlLex name+<a name="(line50)"></a>+<a name="(line51)"></a><font color=Blue>{-+<a name="(line52)"></a>-- | The first argument is the name of the file, the second is the string+<a name="(line53)"></a>--   contents of the file.  The result is the generic representation of+<a name="(line54)"></a>--   an XML document.  Any parsing errors are returned in the @Either@ type.+<a name="(line55)"></a>htmlParse' :: String -&gt; String -&gt; Either String (Document Posn)+<a name="(line56)"></a>htmlParse' name = Prelude.either Left (Right . simplify) . fst+<a name="(line57)"></a>                  . runParser document . xmlLex name+<a name="(line58)"></a>-}</font>+<a name="(line59)"></a>+<a name="(line60)"></a><font color=Blue>---- Document simplification ----</font>+<a name="(line61)"></a>+<a name="(line62)"></a><a name="simplify"></a>simplify <font color=Red>::</font> Document i <font color=Red>-&gt;</font> Document i+<a name="(line63)"></a>simplify <font color=Cyan>(</font>Document p st <font color=Cyan>(</font>Elem n avs cs<font color=Cyan>)</font> ms<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line64)"></a>    Document p st <font color=Cyan>(</font>Elem n avs <font color=Cyan>(</font>deepfilter simp cs<font color=Cyan>)</font><font color=Cyan>)</font> ms+<a name="(line65)"></a>  <font color=Green><u>where</u></font>+<a name="(line66)"></a>    simp <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"null"</font> [] []<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> False+<a name="(line67)"></a>    simp <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem  n     <font color=Green><u>_</u></font>  []<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> n <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"font"</font><font color=Cyan>,</font><font color=Magenta>"p"</font><font color=Cyan>,</font><font color=Magenta>"i"</font><font color=Cyan>,</font><font color=Magenta>"b"</font><font color=Cyan>,</font><font color=Magenta>"em"</font>+<a name="(line68)"></a>                                                  <font color=Cyan>,</font><font color=Magenta>"tt"</font><font color=Cyan>,</font><font color=Magenta>"big"</font><font color=Cyan>,</font><font color=Magenta>"small"</font><font color=Red>]</font> <font color=Red>=</font> False+<a name="(line69)"></a> <font color=Blue>-- simp (CString False s _) | all isSpace s = False</font>+<a name="(line70)"></a>    simp <font color=Green><u>_</u></font> <font color=Red>=</font> True+<a name="(line71)"></a>    deepfilter p <font color=Red>=</font>+<a name="(line72)"></a>        filter p <font color=Cyan>.</font> map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>+<a name="(line73)"></a>                          CElem <font color=Cyan>(</font>Elem n avs cs<font color=Cyan>)</font> i+<a name="(line74)"></a>                                  <font color=Red>-&gt;</font> CElem <font color=Cyan>(</font>Elem n avs <font color=Cyan>(</font>deepfilter p cs<font color=Cyan>)</font><font color=Cyan>)</font> i+<a name="(line75)"></a>                          <font color=Green><u>_</u></font>       <font color=Red>-&gt;</font> c<font color=Cyan>)</font>+<a name="(line76)"></a>+<a name="(line77)"></a><a name="selfclosingtags"></a><font color=Blue>-- opening any of these, they close again immediately</font>+<a name="(line78)"></a>selfclosingtags <font color=Red>=</font> <font color=Red>[</font><font color=Magenta>"img"</font><font color=Cyan>,</font><font color=Magenta>"hr"</font><font color=Cyan>,</font><font color=Magenta>"br"</font><font color=Cyan>,</font><font color=Magenta>"meta"</font><font color=Cyan>,</font><font color=Magenta>"col"</font><font color=Cyan>,</font><font color=Magenta>"link"</font><font color=Cyan>,</font><font color=Magenta>"base"</font>+<a name="(line79)"></a>                  <font color=Cyan>,</font><font color=Magenta>"param"</font><font color=Cyan>,</font><font color=Magenta>"area"</font><font color=Cyan>,</font><font color=Magenta>"frame"</font><font color=Cyan>,</font><font color=Magenta>"input"</font><font color=Red>]</font>+<a name="(line80)"></a>+<a name="(line81)"></a><a name="closeInnerTags"></a><font color=Blue>--closing this, implicitly closes any of those which are contained in it</font>+<a name="(line82)"></a>closeInnerTags <font color=Red>=</font>+<a name="(line83)"></a>  <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"ul"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"li"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line84)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ol"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"li"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line85)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"dl"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"dt"</font><font color=Cyan>,</font><font color=Magenta>"dd"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line86)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tr"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line87)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"div"</font><font color=Cyan>,</font>     <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line88)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"thead"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line89)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tfoot"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line90)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tbody"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line91)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"table"</font><font color=Cyan>,</font>   <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Cyan>,</font><font color=Magenta>"thead"</font><font color=Cyan>,</font><font color=Magenta>"tfoot"</font><font color=Cyan>,</font><font color=Magenta>"tbody"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line92)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"caption"</font><font color=Cyan>,</font> <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line93)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"th"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line94)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"td"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line95)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"li"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line96)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"dt"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line97)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"dd"</font><font color=Cyan>,</font>      <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line98)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"object"</font><font color=Cyan>,</font>  <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line99)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"map"</font><font color=Cyan>,</font>     <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line100)"></a>  <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"body"</font><font color=Cyan>,</font>    <font color=Red>[</font><font color=Magenta>"p"</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line101)"></a>  <font color=Red>]</font>+<a name="(line102)"></a>+<a name="(line103)"></a><a name="closes"></a><font color=Blue>--opening this, implicitly closes that</font>+<a name="(line104)"></a>closes <font color=Red>::</font> Name <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> Bool+<a name="(line105)"></a><font color=Magenta>"a"</font>  <font color=Cyan>`closes`</font> <font color=Magenta>"a"</font>   <font color=Red>=</font>  True+<a name="(line106)"></a><font color=Magenta>"li"</font> <font color=Cyan>`closes`</font> <font color=Magenta>"li"</font>  <font color=Red>=</font>  True+<a name="(line107)"></a><font color=Magenta>"th"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line108)"></a><font color=Magenta>"td"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line109)"></a><font color=Magenta>"tr"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"th"</font><font color=Cyan>,</font><font color=Magenta>"td"</font><font color=Cyan>,</font><font color=Magenta>"tr"</font><font color=Red>]</font> <font color=Red>=</font>  True+<a name="(line110)"></a><font color=Magenta>"dt"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"dt"</font><font color=Cyan>,</font><font color=Magenta>"dd"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line111)"></a><font color=Magenta>"dd"</font> <font color=Cyan>`closes`</font>  t    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"dt"</font><font color=Cyan>,</font><font color=Magenta>"dd"</font><font color=Red>]</font>      <font color=Red>=</font>  True+<a name="(line112)"></a><font color=Magenta>"form"</font>  <font color=Cyan>`closes`</font> <font color=Magenta>"form"</font>      <font color=Red>=</font> True+<a name="(line113)"></a><font color=Magenta>"label"</font> <font color=Cyan>`closes`</font> <font color=Magenta>"label"</font>     <font color=Red>=</font> True+<a name="(line114)"></a><font color=Green><u>_</u></font>       <font color=Cyan>`closes`</font> <font color=Magenta>"option"</font>    <font color=Red>=</font> True+<a name="(line115)"></a><font color=Magenta>"thead"</font> <font color=Cyan>`closes`</font> t  <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"colgroup"</font><font color=Red>]</font>          <font color=Red>=</font> True+<a name="(line116)"></a><font color=Magenta>"tfoot"</font> <font color=Cyan>`closes`</font> t  <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"thead"</font><font color=Cyan>,</font><font color=Magenta>"colgroup"</font><font color=Red>]</font>  <font color=Red>=</font> True+<a name="(line117)"></a><font color=Magenta>"tbody"</font> <font color=Cyan>`closes`</font> t  <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"tbody"</font><font color=Cyan>,</font><font color=Magenta>"tfoot"</font><font color=Cyan>,</font><font color=Magenta>"thead"</font><font color=Cyan>,</font><font color=Magenta>"colgroup"</font><font color=Red>]</font> <font color=Red>=</font> True+<a name="(line118)"></a><font color=Magenta>"colgroup"</font> <font color=Cyan>`closes`</font> <font color=Magenta>"colgroup"</font>  <font color=Red>=</font> True+<a name="(line119)"></a><a name="closes"></a>t <font color=Cyan>`closes`</font> <font color=Magenta>"p"</font>+<a name="(line120)"></a>    <font color=Red>|</font> t <font color=Cyan>`elem`</font> <font color=Red>[</font><font color=Magenta>"p"</font><font color=Cyan>,</font><font color=Magenta>"h1"</font><font color=Cyan>,</font><font color=Magenta>"h2"</font><font color=Cyan>,</font><font color=Magenta>"h3"</font><font color=Cyan>,</font><font color=Magenta>"h4"</font><font color=Cyan>,</font><font color=Magenta>"h5"</font><font color=Cyan>,</font><font color=Magenta>"h6"</font>+<a name="(line121)"></a>               <font color=Cyan>,</font><font color=Magenta>"hr"</font><font color=Cyan>,</font><font color=Magenta>"div"</font><font color=Cyan>,</font><font color=Magenta>"ul"</font><font color=Cyan>,</font><font color=Magenta>"dl"</font><font color=Cyan>,</font><font color=Magenta>"ol"</font><font color=Cyan>,</font><font color=Magenta>"table"</font><font color=Red>]</font>  <font color=Red>=</font>  True+<a name="(line122)"></a><font color=Green><u>_</u></font> <font color=Cyan>`closes`</font> <font color=Green><u>_</u></font> <font color=Red>=</font> False+<a name="(line123)"></a>+<a name="(line124)"></a>+<a name="(line125)"></a>+<a name="(line126)"></a><font color=Blue>---- Misc ----</font>+<a name="(line127)"></a>+<a name="(line128)"></a><a name="fst3"></a>fst3 <font color=Cyan>(</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line129)"></a><a name="snd3"></a>snd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line130)"></a><a name="thd3"></a>thd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line131)"></a>+<a name="(line132)"></a>+<a name="(line133)"></a>+<a name="(line134)"></a><font color=Blue>---- Auxiliary Parsing Functions ----</font>+<a name="(line135)"></a>+<a name="(line136)"></a><a name="HParser"></a><font color=Green><u>type</u></font> HParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font> a+<a name="(line137)"></a>+<a name="(line138)"></a><a name="tok"></a>tok <font color=Red>::</font> TokenT <font color=Red>-&gt;</font> HParser TokenT+<a name="(line139)"></a>tok t <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t'<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line140)"></a>           <font color=Green><u>case</u></font> t' <font color=Green><u>of</u></font> TokError s    <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line141)"></a>                      <font color=Green><u>_</u></font> <font color=Red>|</font> t'<font color=Cyan>==</font>t     <font color=Red>-&gt;</font> return t+<a name="(line142)"></a>                        <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line143)"></a>+<a name="(line144)"></a><a name="name"></a>name <font color=Red>::</font> HParser Name+<a name="(line145)"></a><font color=Blue>--name = do {(p,TokName s) &lt;- next; return s}</font>+<a name="(line146)"></a>name <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>tok<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line147)"></a>          <font color=Green><u>case</u></font> tok <font color=Green><u>of</u></font> +<a name="(line148)"></a>            TokName s  <font color=Red>-&gt;</font> return s +<a name="(line149)"></a>            TokError s <font color=Red>-&gt;</font> report failBad <font color=Magenta>"a name"</font> p tok+<a name="(line150)"></a>            <font color=Green><u>_</u></font>          <font color=Red>-&gt;</font> report fail <font color=Magenta>"a name"</font> p tok+<a name="(line151)"></a>+<a name="(line152)"></a><a name="string"></a>string<font color=Cyan>,</font> freetext <font color=Red>::</font> HParser String+<a name="(line153)"></a>string   <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line154)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokName s <font color=Red>-&gt;</font> return s+<a name="(line155)"></a>                        <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line156)"></a><a name="freetext"></a>freetext <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line157)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokFreeText s <font color=Red>-&gt;</font> return s+<a name="(line158)"></a>                        <font color=Green><u>_</u></font>             <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line159)"></a>+<a name="(line160)"></a><a name="maybe"></a>maybe <font color=Red>::</font> HParser a <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font>+<a name="(line161)"></a>maybe p <font color=Red>=</font>+<a name="(line162)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Just<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line163)"></a>    <font color=Cyan>(</font> return Nothing<font color=Cyan>)</font>+<a name="(line164)"></a>+<a name="(line165)"></a><a name="either"></a>either <font color=Red>::</font> HParser a <font color=Red>-&gt;</font> HParser b <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Either a b<font color=Cyan>)</font>+<a name="(line166)"></a>either p q <font color=Red>=</font>+<a name="(line167)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Left<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line168)"></a>    <font color=Cyan>(</font> q <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Right<font color=Cyan>)</font>+<a name="(line169)"></a>+<a name="(line170)"></a><a name="word"></a>word <font color=Red>::</font> String <font color=Red>-&gt;</font> HParser ()+<a name="(line171)"></a>word s <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+<a name="(line172)"></a>            <font color=Cyan>;</font> <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>+<a name="(line173)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokName n<font color=Cyan>)</font>     <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line174)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokFreeText n<font color=Cyan>)</font> <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line175)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Red>@</font><font color=Cyan>(</font>TokError <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line176)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line177)"></a>            <font color=Cyan>}</font>+<a name="(line178)"></a>+<a name="(line179)"></a><a name="posn"></a>posn <font color=Red>::</font> HParser Posn+<a name="(line180)"></a>posn <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x<font color=Red>@</font><font color=Cyan>(</font>p<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line181)"></a>          <font color=Cyan>;</font> reparse <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line182)"></a>          <font color=Cyan>;</font> return p+<a name="(line183)"></a>          <font color=Cyan>}</font> <font color=Cyan>`onFail`</font> return noPos+<a name="(line184)"></a>+<a name="(line185)"></a><a name="nmtoken"></a>nmtoken <font color=Red>::</font> HParser NmToken+<a name="(line186)"></a>nmtoken <font color=Red>=</font> <font color=Cyan>(</font>string <font color=Cyan>`onFail`</font> freetext<font color=Cyan>)</font>+<a name="(line187)"></a>+<a name="(line188)"></a><a name="failP"></a>failP<font color=Cyan>,</font> failBadP <font color=Red>::</font> String <font color=Red>-&gt;</font> HParser a+<a name="(line189)"></a>failP msg    <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> fail <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line190)"></a><a name="failBadP"></a>failBadP msg <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> failBad <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line191)"></a>+<a name="(line192)"></a><a name="report"></a>report <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>HParser a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> TokenT <font color=Red>-&gt;</font> HParser a+<a name="(line193)"></a>report fail exp p t <font color=Red>=</font> fail <font color=Cyan>(</font><font color=Magenta>"Expected "</font><font color=Cyan>++</font>show exp<font color=Cyan>++</font><font color=Magenta>" but found "</font><font color=Cyan>++</font>show t+<a name="(line194)"></a>                           <font color=Cyan>++</font><font color=Magenta>"\n  at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line195)"></a>+<a name="(line196)"></a><a name="adjustErrP"></a>adjustErrP <font color=Red>::</font> HParser a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> HParser a+<a name="(line197)"></a><a name="adjustErrP"></a>p <font color=Cyan>`adjustErrP`</font> f <font color=Red>=</font> p <font color=Cyan>`onFail`</font> <font color=Green><u>do</u></font> pn <font color=Red>&lt;-</font> posn+<a name="(line198)"></a>                                 <font color=Cyan>(</font>p <font color=Cyan>`adjustErr`</font> f<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font>show pn<font color=Cyan>)</font>+<a name="(line199)"></a>+<a name="(line200)"></a><font color=Blue>---- XML Parsing Functions ----</font>+<a name="(line201)"></a>+<a name="(line202)"></a><a name="document"></a>document <font color=Red>::</font> HParser <font color=Cyan>(</font>Document Posn<font color=Cyan>)</font>+<a name="(line203)"></a>document <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line204)"></a>    return Document+<a name="(line205)"></a>        <font color=Cyan>`apply`</font> <font color=Cyan>(</font>prolog <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"unrecognisable XML prolog\n"</font><font color=Cyan>++</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line206)"></a>        <font color=Cyan>`apply`</font> <font color=Cyan>(</font>return emptyST<font color=Cyan>)</font>+<a name="(line207)"></a>        <font color=Cyan>`apply`</font> <font color=Cyan>(</font><font color=Green><u>do</u></font> es <font color=Red>&lt;-</font> many1 <font color=Cyan>(</font>element <font color=Magenta>"HTML document"</font><font color=Cyan>)</font>+<a name="(line208)"></a>                    return <font color=Cyan>(</font><font color=Green><u>case</u></font> map snd es <font color=Green><u>of</u></font>+<a name="(line209)"></a>                                <font color=Red>[</font>e<font color=Red>]</font> <font color=Red>-&gt;</font> e+<a name="(line210)"></a>                                es  <font color=Red>-&gt;</font> Elem <font color=Magenta>"html"</font> [] <font color=Cyan>(</font>map mkCElem es<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line211)"></a>        <font color=Cyan>`apply`</font> <font color=Cyan>(</font>many misc<font color=Cyan>)</font>+<a name="(line212)"></a>  <font color=Green><u>where</u></font> mkCElem e <font color=Red>=</font> CElem e noPos+<a name="(line213)"></a>+<a name="(line214)"></a><a name="comment"></a>comment <font color=Red>::</font> HParser Comment+<a name="(line215)"></a>comment <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line216)"></a>    bracket <font color=Cyan>(</font>tok TokCommentOpen<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokCommentClose<font color=Cyan>)</font> freetext+<a name="(line217)"></a>+<a name="(line218)"></a><a name="processinginstruction"></a>processinginstruction <font color=Red>::</font> HParser ProcessingInstruction+<a name="(line219)"></a>processinginstruction <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line220)"></a>    tok TokPIOpen+<a name="(line221)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line222)"></a>      n <font color=Red>&lt;-</font> string  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"processing instruction has no target"</font>+<a name="(line223)"></a>      f <font color=Red>&lt;-</font> freetext+<a name="(line224)"></a>      <font color=Cyan>(</font>tok TokPIClose <font color=Cyan>`onFail`</font> tok TokAnyClose<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing ?&gt; or &gt;"</font>+<a name="(line225)"></a>      return <font color=Cyan>(</font>n<font color=Cyan>,</font> f<font color=Cyan>)</font>+<a name="(line226)"></a>+<a name="(line227)"></a><a name="cdsect"></a>cdsect <font color=Red>::</font> HParser CDSect+<a name="(line228)"></a>cdsect <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line229)"></a>    tok TokSectionOpen+<a name="(line230)"></a>    bracket <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection CDATAx<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSectionClose<font color=Cyan>)</font> chardata+<a name="(line231)"></a>+<a name="(line232)"></a><a name="prolog"></a>prolog <font color=Red>::</font> HParser Prolog+<a name="(line233)"></a>prolog <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line234)"></a>    x <font color=Red>&lt;-</font> maybe xmldecl+<a name="(line235)"></a>    m1 <font color=Red>&lt;-</font> many misc+<a name="(line236)"></a>    dtd <font color=Red>&lt;-</font> maybe doctypedecl+<a name="(line237)"></a>    m2 <font color=Red>&lt;-</font> many misc+<a name="(line238)"></a>    return <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font>+<a name="(line239)"></a>+<a name="(line240)"></a><a name="xmldecl"></a>xmldecl <font color=Red>::</font> HParser XMLDecl+<a name="(line241)"></a>xmldecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line242)"></a>    tok TokPIOpen+<a name="(line243)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line244)"></a>    p <font color=Red>&lt;-</font> posn+<a name="(line245)"></a>    s <font color=Red>&lt;-</font> freetext+<a name="(line246)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing ?&gt; in &lt;?xml ...?&gt;"</font>+<a name="(line247)"></a>    <font color=Cyan>(</font>return <font color=Cyan>.</font> fst <font color=Cyan>.</font> runParser aux <font color=Cyan>.</font> xmlReLex p<font color=Cyan>)</font> s+<a name="(line248)"></a>  <font color=Green><u>where</u></font>+<a name="(line249)"></a>    aux <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line250)"></a>      v <font color=Red>&lt;-</font> versioninfo  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing XML version info"</font>+<a name="(line251)"></a>      e <font color=Red>&lt;-</font> maybe encodingdecl+<a name="(line252)"></a>      s <font color=Red>&lt;-</font> maybe sddecl+<a name="(line253)"></a>      return <font color=Cyan>(</font>XMLDecl v e s<font color=Cyan>)</font>+<a name="(line254)"></a>+<a name="(line255)"></a><a name="versioninfo"></a>versioninfo <font color=Red>::</font> HParser VersionInfo+<a name="(line256)"></a>versioninfo <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line257)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"version"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"VERSION"</font><font color=Cyan>)</font>+<a name="(line258)"></a>    tok TokEqual+<a name="(line259)"></a>    bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line260)"></a>+<a name="(line261)"></a><a name="misc"></a>misc <font color=Red>::</font> HParser Misc+<a name="(line262)"></a>misc <font color=Red>=</font> +<a name="(line263)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"&lt;!--comment--&gt;"</font><font color=Cyan>,</font> comment <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Comment<font color=Cyan>)</font>+<a name="(line264)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"&lt;?PI?&gt;"</font><font color=Cyan>,</font>         processinginstruction <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PI<font color=Cyan>)</font>+<a name="(line265)"></a>           <font color=Red>]</font>+<a name="(line266)"></a>+<a name="(line267)"></a>+<a name="(line268)"></a><font color=Blue>-- Question: for HTML, should we disallow in-line DTDs, allowing only externals?</font>+<a name="(line269)"></a><font color=Blue>-- Answer: I think so.</font>+<a name="(line270)"></a>+<a name="(line271)"></a><a name="doctypedecl"></a>doctypedecl <font color=Red>::</font> HParser DocTypeDecl+<a name="(line272)"></a>doctypedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line273)"></a>    tok TokSpecialOpen+<a name="(line274)"></a>    tok <font color=Cyan>(</font>TokSpecial DOCTYPEx<font color=Cyan>)</font>+<a name="(line275)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line276)"></a>      n <font color=Red>&lt;-</font> name+<a name="(line277)"></a>      eid <font color=Red>&lt;-</font> maybe externalid+<a name="(line278)"></a><font color=Blue>--    es &lt;- maybe (bracket (tok TokSqOpen) (tok TokSqClose)) (many markupdecl)</font>+<a name="(line279)"></a>      tok TokAnyClose  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing &gt; in DOCTYPE decl"</font>+<a name="(line280)"></a><font color=Blue>--    return (DTD n eid (case es of { Nothing -&gt; []; Just e -&gt; e }))</font>+<a name="(line281)"></a>      return <font color=Cyan>(</font>DTD n eid []<font color=Cyan>)</font>+<a name="(line282)"></a>+<a name="(line283)"></a><font color=Blue>--markupdecl :: HParser MarkupDecl</font>+<a name="(line284)"></a><font color=Blue>--markupdecl =</font>+<a name="(line285)"></a><font color=Blue>--    ( elementdecl &gt;&gt;= return . Element) `onFail`</font>+<a name="(line286)"></a><font color=Blue>--    ( attlistdecl &gt;&gt;= return . AttList) `onFail`</font>+<a name="(line287)"></a><font color=Blue>--    ( entitydecl &gt;&gt;= return . Entity) `onFail`</font>+<a name="(line288)"></a><font color=Blue>--    ( notationdecl &gt;&gt;= return . Notation) `onFail`</font>+<a name="(line289)"></a><font color=Blue>--    ( misc &gt;&gt;= return . MarkupMisc) `onFail`</font>+<a name="(line290)"></a><font color=Blue>--    PEREF(MarkupPE,markupdecl)</font>+<a name="(line291)"></a><font color=Blue>--</font>+<a name="(line292)"></a><font color=Blue>--extsubset :: HParser ExtSubset</font>+<a name="(line293)"></a><font color=Blue>--extsubset = do</font>+<a name="(line294)"></a><font color=Blue>--    td &lt;- maybe textdecl</font>+<a name="(line295)"></a><font color=Blue>--    ds &lt;- many extsubsetdecl</font>+<a name="(line296)"></a><font color=Blue>--    return (ExtSubset td ds)</font>+<a name="(line297)"></a><font color=Blue>--</font>+<a name="(line298)"></a><font color=Blue>--extsubsetdecl :: HParser ExtSubsetDecl</font>+<a name="(line299)"></a><font color=Blue>--extsubsetdecl =</font>+<a name="(line300)"></a><font color=Blue>--    ( markupdecl &gt;&gt;= return . ExtMarkupDecl) `onFail`</font>+<a name="(line301)"></a><font color=Blue>--    ( conditionalsect &gt;&gt;= return . ExtConditionalSect) `onFail`</font>+<a name="(line302)"></a><font color=Blue>--    PEREF(ExtPEReference,extsubsetdecl)</font>+<a name="(line303)"></a>+<a name="(line304)"></a><a name="sddecl"></a>sddecl <font color=Red>::</font> HParser SDDecl+<a name="(line305)"></a>sddecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line306)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"standalone"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"STANDALONE"</font><font color=Cyan>)</font>+<a name="(line307)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line308)"></a>      tok TokEqual <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing = in 'standalone' decl"</font>+<a name="(line309)"></a>      bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line310)"></a>              <font color=Cyan>(</font> <font color=Cyan>(</font>word <font color=Magenta>"yes"</font> <font color=Cyan>&gt;&gt;</font> return True<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line311)"></a>                <font color=Cyan>(</font>word <font color=Magenta>"no"</font> <font color=Cyan>&gt;&gt;</font> return False<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line312)"></a>                failP <font color=Magenta>"'standalone' decl requires 'yes' or 'no' value"</font> <font color=Cyan>)</font>+<a name="(line313)"></a>+<a name="(line314)"></a>+<a name="(line315)"></a>+<a name="(line316)"></a>+<a name="(line317)"></a><a name="Stack"></a><font color=Blue>----</font>+<a name="(line318)"></a><a name="Stack"></a><font color=Blue>-- VERY IMPORTANT NOTE: The stack returned here contains those tags which</font>+<a name="(line319)"></a><a name="Stack"></a><font color=Blue>-- have been closed implicitly and need to be reopened again at the</font>+<a name="(line320)"></a><a name="Stack"></a><font color=Blue>-- earliest opportunity.</font>+<a name="(line321)"></a><a name="Stack"></a><font color=Green><u>type</u></font> Stack <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>Attribute<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line322)"></a>+<a name="(line323)"></a><a name="element"></a>element <font color=Red>::</font> Name <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Stack<font color=Cyan>,</font>Element Posn<font color=Cyan>)</font>+<a name="(line324)"></a>element ctx <font color=Red>=</font>+<a name="(line325)"></a>  <font color=Green><u>do</u></font>+<a name="(line326)"></a>    tok TokAnyOpen+<a name="(line327)"></a>    <font color=Cyan>(</font>ElemTag e avs<font color=Cyan>)</font> <font color=Red>&lt;-</font> elemtag+<a name="(line328)"></a>    <font color=Cyan>(</font> <font color=Green><u>if</u></font> e <font color=Cyan>`closes`</font> ctx <font color=Green><u>then</u></font>+<a name="(line329)"></a>         <font color=Blue>-- insert the missing close-tag, fail forward, and reparse.</font>+<a name="(line330)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> debug <font color=Cyan>(</font><font color=Magenta>"/"</font><font color=Cyan>)</font>+<a name="(line331)"></a>              unparse <font color=Cyan>(</font><font color=Red>[</font>TokEndOpen<font color=Cyan>,</font> TokName ctx<font color=Cyan>,</font> TokAnyClose<font color=Cyan>,</font>+<a name="(line332)"></a>                        TokAnyOpen<font color=Cyan>,</font> TokName e<font color=Red>]</font> <font color=Cyan>++</font> reformatAttrs avs<font color=Cyan>)</font>+<a name="(line333)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem <font color=Magenta>"null"</font> [] []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line334)"></a>      <font color=Green><u>else</u></font> <font color=Green><u>if</u></font> e <font color=Cyan>`elem`</font> selfclosingtags <font color=Green><u>then</u></font>+<a name="(line335)"></a>         <font color=Blue>-- complete the parse straightaway.</font>+<a name="(line336)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokEndClose	<font color=Blue>-- self-closing &lt;tag /&gt; </font>+<a name="(line337)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"[+]"</font><font color=Cyan>)</font>+<a name="(line338)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem e avs []<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line339)"></a>     <font color=Blue>--  ( do tok TokAnyClose	-- sequence &lt;tag&gt;&lt;/tag&gt;	(**not HTML?**)</font>+<a name="(line340)"></a>     <font color=Blue>--       debug (e++"[+")</font>+<a name="(line341)"></a>     <font color=Blue>--       n &lt;- bracket (tok TokEndOpen) (tok TokAnyClose) name</font>+<a name="(line342)"></a>     <font color=Blue>--       debug "]"</font>+<a name="(line343)"></a>     <font color=Blue>--       if e == (map toLower n :: Name) </font>+<a name="(line344)"></a>     <font color=Blue>--         then return ([], Elem e avs [])      </font>+<a name="(line345)"></a>     <font color=Blue>--         else return (error "no nesting in empty tag")) `onFail`</font>+<a name="(line346)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokAnyClose	<font color=Blue>-- &lt;tag&gt; with no close (e.g. &lt;IMG&gt;)</font>+<a name="(line347)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"[+]"</font><font color=Cyan>)</font>+<a name="(line348)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem e avs []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line349)"></a>      <font color=Green><u>else</u></font>+<a name="(line350)"></a>        <font color=Cyan>(</font><font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokEndClose+<a name="(line351)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"[]"</font><font color=Cyan>)</font>+<a name="(line352)"></a>              return <font color=Cyan>(</font>[]<font color=Cyan>,</font> Elem e avs []<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line353)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokAnyClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing &gt; or /&gt; in element tag"</font>+<a name="(line354)"></a>              debug <font color=Cyan>(</font>e<font color=Cyan>++</font><font color=Magenta>"["</font><font color=Cyan>)</font>+<a name="(line355)"></a>              return <font color=Cyan>(</font><font color=Red>\</font> interior<font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>stack<font color=Cyan>,</font>contained<font color=Cyan>)</font> <font color=Red>=</font> interior+<a name="(line356)"></a>                                   <font color=Green><u>in</u></font>  <font color=Cyan>(</font>stack<font color=Cyan>,</font> Elem e avs contained<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line357)"></a>                  <font color=Cyan>`apply`</font>+<a name="(line358)"></a>                  <font color=Cyan>(</font><font color=Green><u>do</u></font> zz <font color=Red>&lt;-</font> manyFinally <font color=Cyan>(</font>content e<font color=Cyan>)</font>+<a name="(line359)"></a>                                        <font color=Cyan>(</font>tok TokEndOpen<font color=Cyan>)</font>+<a name="(line360)"></a>                      n <font color=Red>&lt;-</font> name+<a name="(line361)"></a>                      commit <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font>+<a name="(line362)"></a>                      debug <font color=Magenta>"]"</font>+<a name="(line363)"></a>                      <font color=Green><u>let</u></font> <font color=Cyan>(</font>ss<font color=Cyan>,</font>cs<font color=Cyan>)</font> <font color=Red>=</font> unzip zz+<a name="(line364)"></a>                      <font color=Green><u>let</u></font> s       <font color=Red>=</font> <font color=Green><u>if</u></font> null ss <font color=Green><u>then</u></font> [] <font color=Green><u>else</u></font> last ss+<a name="(line365)"></a>                      <font color=Cyan>(</font> <font color=Green><u>if</u></font> e <font color=Cyan>==</font> <font color=Cyan>(</font>map toLower n <font color=Red>::</font> Name<font color=Cyan>)</font> <font color=Green><u>then</u></font>+<a name="(line366)"></a>                          <font color=Green><u>do</u></font> unparse <font color=Cyan>(</font>reformatTags <font color=Cyan>(</font>closeInner e s<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line367)"></a>                             debug <font color=Magenta>"^"</font>+<a name="(line368)"></a>                             return <font color=Cyan>(</font>[]<font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line369)"></a>                        <font color=Green><u>else</u></font>+<a name="(line370)"></a>                          <font color=Green><u>do</u></font> unparse <font color=Red>[</font>TokEndOpen<font color=Cyan>,</font> TokName n<font color=Cyan>,</font> TokAnyClose<font color=Red>]</font>+<a name="(line371)"></a>                             debug <font color=Magenta>"-"</font>+<a name="(line372)"></a>                             return <font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>(</font>e<font color=Cyan>,</font>avs<font color=Cyan>)</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line373)"></a>         <font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failP <font color=Cyan>(</font><font color=Magenta>"failed to repair non-matching tags in context: "</font><font color=Cyan>++</font>ctx<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line374)"></a>+<a name="(line375)"></a><a name="closeInner"></a>closeInner <font color=Red>::</font> Name <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>Attribute<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font><font color=Red>[</font>Attribute<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line376)"></a>closeInner c ts <font color=Red>=</font>+<a name="(line377)"></a>    <font color=Green><u>case</u></font> lookup c closeInnerTags <font color=Green><u>of</u></font>+<a name="(line378)"></a>      <font color=Cyan>(</font>Just these<font color=Cyan>)</font> <font color=Red>-&gt;</font> filter <font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>`notElem`</font> these<font color=Cyan>)</font><font color=Cyan>.</font>fst<font color=Cyan>)</font> ts+<a name="(line379)"></a>      Nothing      <font color=Red>-&gt;</font> ts+<a name="(line380)"></a>+<a name="(line381)"></a><a name="unparse"></a>unparse ts <font color=Red>=</font> <font color=Green><u>do</u></font> p <font color=Red>&lt;-</font> posn+<a name="(line382)"></a>                reparse <font color=Cyan>(</font>zip <font color=Cyan>(</font>repeat p<font color=Cyan>)</font> ts<font color=Cyan>)</font>+<a name="(line383)"></a>+<a name="(line384)"></a><a name="reformatAttrs"></a>reformatAttrs avs <font color=Red>=</font> concatMap f0 avs+<a name="(line385)"></a>    <font color=Green><u>where</u></font> f0 <font color=Cyan>(</font>a<font color=Cyan>,</font> v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>TokName a<font color=Cyan>,</font> TokEqual<font color=Cyan>,</font> TokQuote<font color=Cyan>,</font>+<a name="(line386)"></a>                                       TokFreeText <font color=Cyan>(</font>show v<font color=Cyan>)</font><font color=Cyan>,</font> TokQuote<font color=Red>]</font>+<a name="(line387)"></a><a name="reformatTags"></a>reformatTags ts <font color=Red>=</font> concatMap f0 ts+<a name="(line388)"></a>    <font color=Green><u>where</u></font> f0 <font color=Cyan>(</font>t<font color=Cyan>,</font>avs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>TokAnyOpen<font color=Cyan>,</font> TokName t<font color=Red>]</font><font color=Cyan>++</font>reformatAttrs avs<font color=Cyan>++</font><font color=Red>[</font>TokAnyClose<font color=Red>]</font>+<a name="(line389)"></a>+<a name="(line390)"></a><a name="content"></a>content <font color=Red>::</font> Name <font color=Red>-&gt;</font> HParser <font color=Cyan>(</font>Stack<font color=Cyan>,</font>Content Posn<font color=Cyan>)</font>+<a name="(line391)"></a>content ctx <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn <font color=Cyan>;</font> content' p ctx <font color=Cyan>}</font>+<a name="(line392)"></a>  <font color=Green><u>where</u></font> content' p ctx <font color=Red>=</font> oneOf'+<a name="(line393)"></a>          <font color=Red>[</font> <font color=Cyan>(</font> <font color=Magenta>"element"</font><font color=Cyan>,</font> element ctx <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font><font color=Cyan>(</font>s<font color=Cyan>,</font>e<font color=Cyan>)</font><font color=Red>-&gt;</font> return <font color=Cyan>(</font>s<font color=Cyan>,</font> CElem e p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line394)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"chardata"</font><font color=Cyan>,</font> chardata <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>s<font color=Red>-&gt;</font> return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CString False s p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line395)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>r<font color=Red>-&gt;</font> return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CRef r p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line396)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"cdsect"</font><font color=Cyan>,</font> cdsect <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>c<font color=Red>-&gt;</font> return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CString True c p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line397)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"misc"</font><font color=Cyan>,</font> misc <font color=Cyan>&gt;&gt;=</font> <font color=Red>\</font>m<font color=Red>-&gt;</font>  return <font color=Cyan>(</font>[]<font color=Cyan>,</font> CMisc m p<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line398)"></a>          <font color=Red>]</font> <font color=Cyan>`adjustErrP`</font> <font color=Cyan>(</font><font color=Magenta>"when looking for a content item,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line399)"></a>+<a name="(line400)"></a><a name="elemtag"></a><font color=Blue>----</font>+<a name="(line401)"></a>elemtag <font color=Red>::</font> HParser ElemTag+<a name="(line402)"></a>elemtag <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line403)"></a>    n <font color=Red>&lt;-</font> name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"malformed element tag\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line404)"></a>    <font color=Green><u>as</u></font> <font color=Red>&lt;-</font> many attribute+<a name="(line405)"></a>    return <font color=Cyan>(</font>ElemTag <font color=Cyan>(</font>map toLower n<font color=Cyan>)</font> <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line406)"></a>+<a name="(line407)"></a><a name="attribute"></a>attribute <font color=Red>::</font> HParser Attribute+<a name="(line408)"></a>attribute <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line409)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line410)"></a>    v <font color=Red>&lt;-</font> <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokEqual+<a name="(line411)"></a>             attvalue<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line412)"></a>         <font color=Cyan>(</font>return <font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Magenta>"TRUE"</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line413)"></a>    return <font color=Cyan>(</font>map toLower n<font color=Cyan>,</font>v<font color=Cyan>)</font>+<a name="(line414)"></a>+<a name="(line415)"></a><font color=Blue>--elementdecl :: HParser ElementDecl</font>+<a name="(line416)"></a><font color=Blue>--elementdecl = do</font>+<a name="(line417)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line418)"></a><font color=Blue>--    tok (TokSpecial ELEMENTx)</font>+<a name="(line419)"></a><font color=Blue>--    n &lt;- name `onFail` failP "missing identifier in ELEMENT decl"</font>+<a name="(line420)"></a><font color=Blue>--    c &lt;- contentspec `onFail` failP "missing content spec in ELEMENT decl"</font>+<a name="(line421)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating ELEMENT decl"</font>+<a name="(line422)"></a><font color=Blue>--    return (ElementDecl n c)</font>+<a name="(line423)"></a><font color=Blue>--</font>+<a name="(line424)"></a><font color=Blue>--contentspec :: HParser ContentSpec</font>+<a name="(line425)"></a><font color=Blue>--contentspec =</font>+<a name="(line426)"></a><font color=Blue>--    ( word "EMPTY" &gt;&gt; return EMPTY) `onFail`</font>+<a name="(line427)"></a><font color=Blue>--    ( word "ANY" &gt;&gt; return ANY) `onFail`</font>+<a name="(line428)"></a><font color=Blue>--    ( mixed &gt;&gt;= return . Mixed) `onFail`</font>+<a name="(line429)"></a><font color=Blue>--    ( cp &gt;&gt;= return . ContentSpec) `onFail`</font>+<a name="(line430)"></a><font color=Blue>--    PEREF(ContentPE,contentspec)</font>+<a name="(line431)"></a><font color=Blue>--</font>+<a name="(line432)"></a><font color=Blue>--choice :: HParser [CP]</font>+<a name="(line433)"></a><font color=Blue>--choice = do</font>+<a name="(line434)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line435)"></a><font color=Blue>--            (cp `sepby1` (tok TokPipe))</font>+<a name="(line436)"></a><font color=Blue>--</font>+<a name="(line437)"></a><font color=Blue>--sequence :: HParser [CP]</font>+<a name="(line438)"></a><font color=Blue>--sequence = do</font>+<a name="(line439)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line440)"></a><font color=Blue>--            (cp `sepby1` (tok TokComma))</font>+<a name="(line441)"></a><font color=Blue>--</font>+<a name="(line442)"></a><font color=Blue>--cp :: HParser CP</font>+<a name="(line443)"></a><font color=Blue>--cp =</font>+<a name="(line444)"></a><font color=Blue>--    ( do n &lt;- name</font>+<a name="(line445)"></a><font color=Blue>--         m &lt;- modifier</font>+<a name="(line446)"></a><font color=Blue>--         return (TagName n m)) `onFail`</font>+<a name="(line447)"></a><font color=Blue>--    ( do ss &lt;- sequence</font>+<a name="(line448)"></a><font color=Blue>--         m &lt;- modifier</font>+<a name="(line449)"></a><font color=Blue>--         return (Seq ss m)) `onFail`</font>+<a name="(line450)"></a><font color=Blue>--    ( do cs &lt;- choice</font>+<a name="(line451)"></a><font color=Blue>--         m &lt;- modifier</font>+<a name="(line452)"></a><font color=Blue>--         return (Choice cs m)) `onFail`</font>+<a name="(line453)"></a><font color=Blue>--    PEREF(CPPE,cp)</font>+<a name="(line454)"></a><font color=Blue>--</font>+<a name="(line455)"></a><font color=Blue>--modifier :: HParser Modifier</font>+<a name="(line456)"></a><font color=Blue>--modifier =</font>+<a name="(line457)"></a><font color=Blue>--    ( tok TokStar &gt;&gt; return Star) `onFail`</font>+<a name="(line458)"></a><font color=Blue>--    ( tok TokQuery &gt;&gt; return Query) `onFail`</font>+<a name="(line459)"></a><font color=Blue>--    ( tok TokPlus &gt;&gt; return Plus) `onFail`</font>+<a name="(line460)"></a><font color=Blue>--    ( return None)</font>+<a name="(line461)"></a><font color=Blue>--</font>+<a name="(line462)"></a><font color=Blue>--mixed :: HParser Mixed</font>+<a name="(line463)"></a><font color=Blue>--mixed = do</font>+<a name="(line464)"></a><font color=Blue>--    tok TokBraOpen</font>+<a name="(line465)"></a><font color=Blue>--    tok TokHash</font>+<a name="(line466)"></a><font color=Blue>--    word "PCDATA"</font>+<a name="(line467)"></a><font color=Blue>--    cont</font>+<a name="(line468)"></a><font color=Blue>--  where</font>+<a name="(line469)"></a><font color=Blue>--    cont = ( tok TokBraClose &gt;&gt; return PCDATA) `onFail`</font>+<a name="(line470)"></a><font color=Blue>--           ( do cs &lt;- many ( do tok TokPipe</font>+<a name="(line471)"></a><font color=Blue>--                                n &lt;- name</font>+<a name="(line472)"></a><font color=Blue>--                                return n)</font>+<a name="(line473)"></a><font color=Blue>--                tok TokBraClose</font>+<a name="(line474)"></a><font color=Blue>--                tok TokStar</font>+<a name="(line475)"></a><font color=Blue>--                return (PCDATAplus cs))</font>+<a name="(line476)"></a><font color=Blue>--</font>+<a name="(line477)"></a><font color=Blue>--attlistdecl :: HParser AttListDecl</font>+<a name="(line478)"></a><font color=Blue>--attlistdecl = do</font>+<a name="(line479)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line480)"></a><font color=Blue>--    tok (TokSpecial ATTLISTx)</font>+<a name="(line481)"></a><font color=Blue>--    n &lt;- name `onFail` failP "missing identifier in ATTLIST"</font>+<a name="(line482)"></a><font color=Blue>--    ds &lt;- many attdef</font>+<a name="(line483)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "missing &gt; terminating ATTLIST"</font>+<a name="(line484)"></a><font color=Blue>--    return (AttListDecl n ds)</font>+<a name="(line485)"></a><font color=Blue>--</font>+<a name="(line486)"></a><font color=Blue>--attdef :: HParser AttDef</font>+<a name="(line487)"></a><font color=Blue>--attdef = do</font>+<a name="(line488)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line489)"></a><font color=Blue>--    t &lt;- atttype `onFail` failP "missing attribute type in attlist defn"</font>+<a name="(line490)"></a><font color=Blue>--    d &lt;- defaultdecl</font>+<a name="(line491)"></a><font color=Blue>--    return (AttDef n t d)</font>+<a name="(line492)"></a><font color=Blue>--</font>+<a name="(line493)"></a><font color=Blue>--atttype :: HParser AttType</font>+<a name="(line494)"></a><font color=Blue>--atttype =</font>+<a name="(line495)"></a><font color=Blue>--    ( word "CDATA" &gt;&gt; return StringType) `onFail`</font>+<a name="(line496)"></a><font color=Blue>--    ( tokenizedtype &gt;&gt;= return . TokenizedType) `onFail`</font>+<a name="(line497)"></a><font color=Blue>--    ( enumeratedtype &gt;&gt;= return . EnumeratedType)</font>+<a name="(line498)"></a><font color=Blue>--</font>+<a name="(line499)"></a><font color=Blue>--tokenizedtype :: HParser TokenizedType</font>+<a name="(line500)"></a><font color=Blue>--tokenizedtype =</font>+<a name="(line501)"></a><font color=Blue>--    ( word "ID" &gt;&gt; return ID) `onFail`</font>+<a name="(line502)"></a><font color=Blue>--    ( word "IDREF" &gt;&gt; return IDREF) `onFail`</font>+<a name="(line503)"></a><font color=Blue>--    ( word "IDREFS" &gt;&gt; return IDREFS) `onFail`</font>+<a name="(line504)"></a><font color=Blue>--    ( word "ENTITY" &gt;&gt; return ENTITY) `onFail`</font>+<a name="(line505)"></a><font color=Blue>--    ( word "ENTITIES" &gt;&gt; return ENTITIES) `onFail`</font>+<a name="(line506)"></a><font color=Blue>--    ( word "NMTOKEN" &gt;&gt; return NMTOKEN) `onFail`</font>+<a name="(line507)"></a><font color=Blue>--    ( word "NMTOKENS" &gt;&gt; return NMTOKENS)</font>+<a name="(line508)"></a><font color=Blue>--</font>+<a name="(line509)"></a><font color=Blue>--enumeratedtype :: HParser EnumeratedType</font>+<a name="(line510)"></a><font color=Blue>--enumeratedtype =</font>+<a name="(line511)"></a><font color=Blue>--    ( notationtype &gt;&gt;= return . NotationType) `onFail`</font>+<a name="(line512)"></a><font color=Blue>--    ( enumeration &gt;&gt;= return . Enumeration)</font>+<a name="(line513)"></a><font color=Blue>--</font>+<a name="(line514)"></a><font color=Blue>--notationtype :: HParser NotationType</font>+<a name="(line515)"></a><font color=Blue>--notationtype = do</font>+<a name="(line516)"></a><font color=Blue>--    word "NOTATION"</font>+<a name="(line517)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line518)"></a><font color=Blue>--            (name `sepby1` (tok TokPipe))</font>+<a name="(line519)"></a><font color=Blue>--</font>+<a name="(line520)"></a><font color=Blue>--enumeration :: HParser Enumeration</font>+<a name="(line521)"></a><font color=Blue>--enumeration =</font>+<a name="(line522)"></a><font color=Blue>--    bracket (tok TokBraOpen) (tok TokBraClose)</font>+<a name="(line523)"></a><font color=Blue>--            (nmtoken `sepby1` (tok TokPipe))</font>+<a name="(line524)"></a><font color=Blue>--</font>+<a name="(line525)"></a><font color=Blue>--defaultdecl :: HParser DefaultDecl</font>+<a name="(line526)"></a><font color=Blue>--defaultdecl =</font>+<a name="(line527)"></a><font color=Blue>--    ( tok TokHash &gt;&gt; word "REQUIRED" &gt;&gt; return REQUIRED) `onFail`</font>+<a name="(line528)"></a><font color=Blue>--    ( tok TokHash &gt;&gt; word "IMPLIED" &gt;&gt; return IMPLIED) `onFail`</font>+<a name="(line529)"></a><font color=Blue>--    ( do f &lt;- maybe (tok TokHash &gt;&gt; word "FIXED" &gt;&gt; return FIXED)</font>+<a name="(line530)"></a><font color=Blue>--         a &lt;- attvalue</font>+<a name="(line531)"></a><font color=Blue>--         return (DefaultTo a f))</font>+<a name="(line532)"></a><font color=Blue>--</font>+<a name="(line533)"></a><font color=Blue>--conditionalsect :: HParser ConditionalSect</font>+<a name="(line534)"></a><font color=Blue>--conditionalsect =</font>+<a name="(line535)"></a><font color=Blue>--    ( do tok TokSectionOpen</font>+<a name="(line536)"></a><font color=Blue>--         tok (TokSection INCLUDEx)</font>+<a name="(line537)"></a><font color=Blue>--         tok TokSqOpen `onFail` failP "missing [ after INCLUDE"</font>+<a name="(line538)"></a><font color=Blue>--         i &lt;- extsubsetdecl `onFail` failP "missing ExtSubsetDecl in INCLUDE"</font>+<a name="(line539)"></a><font color=Blue>--         tok TokSectionClose `onFail` failP "missing ] after INCLUDE"</font>+<a name="(line540)"></a><font color=Blue>--         return (IncludeSect i)) `onFail`</font>+<a name="(line541)"></a><font color=Blue>--    ( do tok TokSectionOpen</font>+<a name="(line542)"></a><font color=Blue>--         tok (TokSection IGNOREx)</font>+<a name="(line543)"></a><font color=Blue>--         tok TokSqOpen `onFail` failP "missing [ after IGNORE"</font>+<a name="(line544)"></a><font color=Blue>--         i &lt;- many ignoresectcontents</font>+<a name="(line545)"></a><font color=Blue>--         tok TokSectionClose `onFail` failP "missing ] after IGNORE"</font>+<a name="(line546)"></a><font color=Blue>--         return (IgnoreSect i))</font>+<a name="(line547)"></a><font color=Blue>--</font>+<a name="(line548)"></a><font color=Blue>--ignoresectcontents :: HParser IgnoreSectContents</font>+<a name="(line549)"></a><font color=Blue>--ignoresectcontents = do</font>+<a name="(line550)"></a><font color=Blue>--    i &lt;- ignore</font>+<a name="(line551)"></a><font color=Blue>--    is &lt;- many (do tok TokSectionOpen</font>+<a name="(line552)"></a><font color=Blue>--                   ic &lt;- ignoresectcontents</font>+<a name="(line553)"></a><font color=Blue>--                   tok TokSectionClose</font>+<a name="(line554)"></a><font color=Blue>--                   ig &lt;- ignore</font>+<a name="(line555)"></a><font color=Blue>--                   return (ic,ig))</font>+<a name="(line556)"></a><font color=Blue>--    return (IgnoreSectContents i is)</font>+<a name="(line557)"></a><font color=Blue>--</font>+<a name="(line558)"></a><font color=Blue>--ignore :: HParser Ignore</font>+<a name="(line559)"></a><font color=Blue>--ignore = freetext &gt;&gt;= return . Ignore</font>+<a name="(line560)"></a>+<a name="(line561)"></a><a name="reference"></a>reference <font color=Red>::</font> HParser Reference+<a name="(line562)"></a>reference <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line563)"></a>    bracket <font color=Cyan>(</font>tok TokAmp<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSemi<font color=Cyan>)</font> <font color=Cyan>(</font>freetext <font color=Cyan>&gt;&gt;=</font> val<font color=Cyan>)</font>+<a name="(line564)"></a>  <font color=Green><u>where</u></font>+<a name="(line565)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font><font color=Magenta>'x'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font> <font color=Red>|</font> all isHexDigit i+<a name="(line566)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readHex <font color=Cyan>$</font> i+<a name="(line567)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font>     <font color=Red>|</font> all isDigit i+<a name="(line568)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readDec <font color=Cyan>$</font> i+<a name="(line569)"></a>    val name        <font color=Red>=</font> return <font color=Cyan>.</font> RefEntity <font color=Cyan>$</font> name+<a name="(line570)"></a>+<a name="(line571)"></a><font color=Blue>{-+<a name="(line572)"></a>reference :: HParser Reference+<a name="(line573)"></a>reference =+<a name="(line574)"></a>    ( charref &gt;&gt;= return . RefChar) `onFail`+<a name="(line575)"></a>    ( entityref &gt;&gt;= return . RefEntity)+<a name="(line576)"></a>+<a name="(line577)"></a>entityref :: HParser EntityRef+<a name="(line578)"></a>entityref = do+<a name="(line579)"></a>    n &lt;- bracket (tok TokAmp) (tok TokSemi) name+<a name="(line580)"></a>    return n+<a name="(line581)"></a>+<a name="(line582)"></a>charref :: HParser CharRef+<a name="(line583)"></a>charref = do+<a name="(line584)"></a>    bracket (tok TokAmp) (tok TokSemi) (freetext &gt;&gt;= readCharVal)+<a name="(line585)"></a>  where+<a name="(line586)"></a>    readCharVal ('#':'x':i) = return . fst . head . readHex $ i+<a name="(line587)"></a>    readCharVal ('#':i)     = return . fst . head . readDec $ i+<a name="(line588)"></a>    readCharVal _           = mzero+<a name="(line589)"></a>-}</font>+<a name="(line590)"></a>+<a name="(line591)"></a><font color=Blue>--pereference :: HParser PEReference</font>+<a name="(line592)"></a><font color=Blue>--pereference = do</font>+<a name="(line593)"></a><font color=Blue>--    bracket (tok TokPercent) (tok TokSemi) nmtoken</font>+<a name="(line594)"></a><font color=Blue>--</font>+<a name="(line595)"></a><font color=Blue>--entitydecl :: HParser EntityDecl</font>+<a name="(line596)"></a><font color=Blue>--entitydecl =</font>+<a name="(line597)"></a><font color=Blue>--    ( gedecl &gt;&gt;= return . EntityGEDecl) `onFail`</font>+<a name="(line598)"></a><font color=Blue>--    ( pedecl &gt;&gt;= return . EntityPEDecl)</font>+<a name="(line599)"></a><font color=Blue>--</font>+<a name="(line600)"></a><font color=Blue>--gedecl :: HParser GEDecl</font>+<a name="(line601)"></a><font color=Blue>--gedecl = do</font>+<a name="(line602)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line603)"></a><font color=Blue>--    tok (TokSpecial ENTITYx)</font>+<a name="(line604)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line605)"></a><font color=Blue>--    e &lt;- entitydef `onFail` failP "missing entity defn in G ENTITY decl"</font>+<a name="(line606)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating G ENTITY decl"</font>+<a name="(line607)"></a><font color=Blue>--    return (GEDecl n e)</font>+<a name="(line608)"></a><font color=Blue>--</font>+<a name="(line609)"></a><font color=Blue>--pedecl :: HParser PEDecl</font>+<a name="(line610)"></a><font color=Blue>--pedecl = do</font>+<a name="(line611)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line612)"></a><font color=Blue>--    tok (TokSpecial ENTITYx)</font>+<a name="(line613)"></a><font color=Blue>--    tok TokPercent</font>+<a name="(line614)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line615)"></a><font color=Blue>--    e &lt;- pedef `onFail` failP "missing entity defn in P ENTITY decl"</font>+<a name="(line616)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating P ENTITY decl"</font>+<a name="(line617)"></a><font color=Blue>--    return (PEDecl n e)</font>+<a name="(line618)"></a><font color=Blue>--</font>+<a name="(line619)"></a><font color=Blue>--entitydef :: HParser EntityDef</font>+<a name="(line620)"></a><font color=Blue>--entitydef =</font>+<a name="(line621)"></a><font color=Blue>--    ( entityvalue &gt;&gt;= return . DefEntityValue) `onFail`</font>+<a name="(line622)"></a><font color=Blue>--    ( do eid &lt;- externalid</font>+<a name="(line623)"></a><font color=Blue>--         ndd &lt;- maybe ndatadecl</font>+<a name="(line624)"></a><font color=Blue>--         return (DefExternalID eid ndd))</font>+<a name="(line625)"></a><font color=Blue>--</font>+<a name="(line626)"></a><font color=Blue>--pedef :: HParser PEDef</font>+<a name="(line627)"></a><font color=Blue>--pedef =</font>+<a name="(line628)"></a><font color=Blue>--    ( entityvalue &gt;&gt;= return . PEDefEntityValue) `onFail`</font>+<a name="(line629)"></a><font color=Blue>--    ( externalid &gt;&gt;= return . PEDefExternalID)</font>+<a name="(line630)"></a>+<a name="(line631)"></a><a name="externalid"></a>externalid <font color=Red>::</font> HParser ExternalID+<a name="(line632)"></a>externalid <font color=Red>=</font>+<a name="(line633)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> word <font color=Magenta>"SYSTEM"</font>+<a name="(line634)"></a>         s <font color=Red>&lt;-</font> systemliteral+<a name="(line635)"></a>         return <font color=Cyan>(</font>SYSTEM s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line636)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> word <font color=Magenta>"PUBLIC"</font>+<a name="(line637)"></a>         p <font color=Red>&lt;-</font> pubidliteral+<a name="(line638)"></a>         s <font color=Red>&lt;-</font> <font color=Cyan>(</font>systemliteral <font color=Cyan>`onFail`</font> return <font color=Cyan>(</font>SystemLiteral <font color=Magenta>""</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line639)"></a>         return <font color=Cyan>(</font>PUBLIC p s<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line640)"></a>+<a name="(line641)"></a><font color=Blue>--ndatadecl :: HParser NDataDecl</font>+<a name="(line642)"></a><font color=Blue>--ndatadecl = do</font>+<a name="(line643)"></a><font color=Blue>--    word "NDATA"</font>+<a name="(line644)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line645)"></a><font color=Blue>--    return (NDATA n)</font>+<a name="(line646)"></a>+<a name="(line647)"></a><a name="textdecl"></a>textdecl <font color=Red>::</font> HParser TextDecl+<a name="(line648)"></a>textdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line649)"></a>    tok TokPIOpen+<a name="(line650)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line651)"></a>    v <font color=Red>&lt;-</font> maybe versioninfo+<a name="(line652)"></a>    e <font color=Red>&lt;-</font> encodingdecl+<a name="(line653)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"expected ?&gt; terminating text decl"</font>+<a name="(line654)"></a>    return <font color=Cyan>(</font>TextDecl v e<font color=Cyan>)</font>+<a name="(line655)"></a>+<a name="(line656)"></a><font color=Blue>--extparsedent :: HParser ExtParsedEnt</font>+<a name="(line657)"></a><font color=Blue>--extparsedent = do</font>+<a name="(line658)"></a><font color=Blue>--    t &lt;- maybe textdecl</font>+<a name="(line659)"></a><font color=Blue>--    (_,c) &lt;- (content "")</font>+<a name="(line660)"></a><font color=Blue>--    return (ExtParsedEnt t c)</font>+<a name="(line661)"></a><font color=Blue>--</font>+<a name="(line662)"></a><font color=Blue>--extpe :: HParser ExtPE</font>+<a name="(line663)"></a><font color=Blue>--extpe = do</font>+<a name="(line664)"></a><font color=Blue>--    t &lt;- maybe textdecl</font>+<a name="(line665)"></a><font color=Blue>--    e &lt;- extsubsetdecl</font>+<a name="(line666)"></a><font color=Blue>--    return (ExtPE t e)</font>+<a name="(line667)"></a>+<a name="(line668)"></a><a name="encodingdecl"></a>encodingdecl <font color=Red>::</font> HParser EncodingDecl+<a name="(line669)"></a>encodingdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line670)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"encoding"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"ENCODING"</font><font color=Cyan>)</font>+<a name="(line671)"></a>    tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected = in 'encoding' decl"</font>+<a name="(line672)"></a>    f <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line673)"></a>    return <font color=Cyan>(</font>EncodingDecl f<font color=Cyan>)</font>+<a name="(line674)"></a>+<a name="(line675)"></a><font color=Blue>--notationdecl :: HParser NotationDecl</font>+<a name="(line676)"></a><font color=Blue>--notationdecl = do</font>+<a name="(line677)"></a><font color=Blue>--    tok TokSpecialOpen</font>+<a name="(line678)"></a><font color=Blue>--    word "NOTATION"</font>+<a name="(line679)"></a><font color=Blue>--    n &lt;- name</font>+<a name="(line680)"></a><font color=Blue>--    e &lt;- either externalid publicid</font>+<a name="(line681)"></a><font color=Blue>--    tok TokAnyClose `onFail` failP "expected &gt; terminating NOTATION decl"</font>+<a name="(line682)"></a><font color=Blue>--    return (NOTATION n e)</font>+<a name="(line683)"></a>+<a name="(line684)"></a><a name="publicid"></a>publicid <font color=Red>::</font> HParser PublicID+<a name="(line685)"></a>publicid <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line686)"></a>    word <font color=Magenta>"PUBLICID"</font>+<a name="(line687)"></a>    p <font color=Red>&lt;-</font> pubidliteral+<a name="(line688)"></a>    return <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>+<a name="(line689)"></a>+<a name="(line690)"></a><a name="entityvalue"></a>entityvalue <font color=Red>::</font> HParser EntityValue+<a name="(line691)"></a>entityvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line692)"></a>    evs <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>many ev<font color=Cyan>)</font>+<a name="(line693)"></a>    return <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>+<a name="(line694)"></a>+<a name="(line695)"></a><a name="ev"></a>ev <font color=Red>::</font> HParser EV+<a name="(line696)"></a>ev <font color=Red>=</font>+<a name="(line697)"></a>    <font color=Cyan>(</font> freetext <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVString<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line698)"></a><font color=Blue>--  PEREF(EVPERef,ev) `onFail`</font>+<a name="(line699)"></a>    <font color=Cyan>(</font> reference <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVRef<font color=Cyan>)</font>+<a name="(line700)"></a>+<a name="(line701)"></a><a name="attvalue"></a>attvalue <font color=Red>::</font> HParser AttValue+<a name="(line702)"></a>attvalue <font color=Red>=</font>+<a name="(line703)"></a>  <font color=Cyan>(</font> <font color=Green><u>do</u></font> avs <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line704)"></a>                      <font color=Cyan>(</font>many <font color=Cyan>(</font>either freetext reference<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line705)"></a>       return <font color=Cyan>(</font>AttValue avs<font color=Cyan>)</font> <font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line706)"></a>  <font color=Cyan>(</font> <font color=Green><u>do</u></font> v <font color=Red>&lt;-</font> nmtoken+<a name="(line707)"></a>       s <font color=Red>&lt;-</font> <font color=Cyan>(</font>tok TokPercent <font color=Cyan>&gt;&gt;</font> return <font color=Magenta>"%"</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font> return <font color=Magenta>""</font>+<a name="(line708)"></a>       return <font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Cyan>(</font>v<font color=Cyan>++</font>s<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line709)"></a>  <font color=Cyan>(</font> <font color=Green><u>do</u></font> s <font color=Red>&lt;-</font> oneOf <font color=Red>[</font> tok TokPlus <font color=Cyan>&gt;&gt;</font> return <font color=Magenta>"+"</font>+<a name="(line710)"></a>                  <font color=Cyan>,</font> tok TokHash <font color=Cyan>&gt;&gt;</font> return <font color=Magenta>"#"</font>+<a name="(line711)"></a>                  <font color=Red>]</font>+<a name="(line712)"></a>       v <font color=Red>&lt;-</font> nmtoken+<a name="(line713)"></a>       return <font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Cyan>(</font>s<font color=Cyan>++</font>v<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line714)"></a>  failP <font color=Magenta>"Badly formatted attribute value"</font>+<a name="(line715)"></a>+<a name="(line716)"></a><a name="systemliteral"></a>systemliteral <font color=Red>::</font> HParser SystemLiteral+<a name="(line717)"></a>systemliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line718)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line719)"></a>    return <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>		<font color=Blue>-- note: need to fold &amp;...; escapes</font>+<a name="(line720)"></a>+<a name="(line721)"></a><a name="pubidliteral"></a>pubidliteral <font color=Red>::</font> HParser PubidLiteral+<a name="(line722)"></a>pubidliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line723)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line724)"></a>    return <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>		<font color=Blue>-- note: need to fold &amp;...; escapes</font>+<a name="(line725)"></a>+<a name="(line726)"></a><a name="chardata"></a>chardata <font color=Red>::</font> HParser CharData+<a name="(line727)"></a>chardata <font color=Red>=</font> freetext <font color=Blue>-- &gt;&gt;= return . CharData</font>+<a name="(line728)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Html/Pretty.html view
@@ -0,0 +1,238 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This is a separate pretty-printer for HTML documents, recognising</font>+<a name="(line2)"></a><font color=Blue>--   some of the differences between HTML and true XML.</font>+<a name="(line3)"></a>+<a name="(line4)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Pretty+<a name="(line5)"></a>  <font color=Cyan>(</font> document+<a name="(line6)"></a>  <font color=Cyan>,</font> element+<a name="(line7)"></a>  <font color=Cyan>,</font> attribute+<a name="(line8)"></a>  <font color=Cyan>,</font> content+<a name="(line9)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line10)"></a>+<a name="(line11)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>maybe<font color=Cyan>,</font>either<font color=Cyan>)</font>+<a name="(line12)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line13)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>+<a name="(line14)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>isSpace<font color=Cyan>)</font>+<a name="(line15)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ+<a name="(line16)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line17)"></a>+<a name="(line18)"></a><a name="either"></a>either f g <font color=Cyan>(</font>Left x<font color=Cyan>)</font>  <font color=Red>=</font> f x+<a name="(line19)"></a>either f g <font color=Cyan>(</font>Right x<font color=Cyan>)</font> <font color=Red>=</font> g x+<a name="(line20)"></a>+<a name="(line21)"></a><a name="maybe"></a>maybe f Nothing  <font color=Red>=</font> empty+<a name="(line22)"></a>maybe f <font color=Cyan>(</font>Just x<font color=Cyan>)</font> <font color=Red>=</font> f x+<a name="(line23)"></a>+<a name="(line24)"></a><font color=Blue>--peref p   = text "%" &lt;&gt; text p &lt;&gt; text ";"</font>+<a name="(line25)"></a>+<a name="(line26)"></a><font color=Blue>----</font>+<a name="(line27)"></a>+<a name="(line28)"></a><a name="document"></a>document <font color=Red>::</font> Document i <font color=Red>-&gt;</font> Doc+<a name="(line29)"></a><a name="prolog"></a>prolog   <font color=Red>::</font> Prolog <font color=Red>-&gt;</font> Doc+<a name="(line30)"></a><a name="xmldecl"></a>xmldecl  <font color=Red>::</font> XMLDecl <font color=Red>-&gt;</font> Doc+<a name="(line31)"></a><a name="misc"></a>misc     <font color=Red>::</font> Misc <font color=Red>-&gt;</font> Doc+<a name="(line32)"></a><a name="sddecl"></a>sddecl   <font color=Red>::</font> Bool <font color=Red>-&gt;</font> Doc+<a name="(line33)"></a>+<a name="(line34)"></a><a name="doctypedecl"></a>doctypedecl <font color=Red>::</font> DocTypeDecl <font color=Red>-&gt;</font> Doc+<a name="(line35)"></a><a name="markupdecl"></a>markupdecl  <font color=Red>::</font> MarkupDecl <font color=Red>-&gt;</font> Doc+<a name="(line36)"></a><a name="extsubset"></a>extsubset   <font color=Red>::</font> ExtSubset <font color=Red>-&gt;</font> Doc+<a name="(line37)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> ExtSubsetDecl <font color=Red>-&gt;</font> Doc+<a name="(line38)"></a>+<a name="(line39)"></a><a name="element"></a>element   <font color=Red>::</font> Element i <font color=Red>-&gt;</font> Doc+<a name="(line40)"></a><a name="attribute"></a>attribute <font color=Red>::</font> Attribute <font color=Red>-&gt;</font> Doc                     <font color=Cyan>--etc</font>+<a name="(line41)"></a><a name="content"></a>content   <font color=Red>::</font> Content i <font color=Red>-&gt;</font> Doc+<a name="(line42)"></a>+<a name="(line43)"></a><font color=Blue>----</font>+<a name="(line44)"></a>+<a name="(line45)"></a>document <font color=Cyan>(</font>Document p <font color=Green><u>_</u></font> e m<font color=Cyan>)</font><font color=Red>=</font> prolog p <font color=Cyan>$$</font> element e <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>map misc m<font color=Cyan>)</font>+<a name="(line46)"></a>prolog <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font><font color=Red>=</font> maybe xmldecl x <font color=Cyan>$$</font>+<a name="(line47)"></a>                             vcat <font color=Cyan>(</font>map misc m1<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line48)"></a>                             maybe doctypedecl dtd <font color=Cyan>$$</font>+<a name="(line49)"></a>                             vcat <font color=Cyan>(</font>map misc m2<font color=Cyan>)</font>+<a name="(line50)"></a>xmldecl <font color=Cyan>(</font>XMLDecl v e sd<font color=Cyan>)</font>   <font color=Red>=</font> text <font color=Magenta>"&lt;?xml version='"</font> <font color=Cyan>&lt;&gt;</font> text v <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line51)"></a>                             maybe encodingdecl e <font color=Cyan>&lt;+&gt;</font>+<a name="(line52)"></a>                             maybe sddecl sd <font color=Cyan>&lt;+&gt;</font>+<a name="(line53)"></a>                             text <font color=Magenta>"?&gt;"</font>+<a name="(line54)"></a>misc <font color=Cyan>(</font>Comment s<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!--"</font> <font color=Cyan>&lt;+&gt;</font> text s <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"--&gt;"</font>+<a name="(line55)"></a>misc <font color=Cyan>(</font>PI <font color=Cyan>(</font>n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"&lt;?"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> text s <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line56)"></a>sddecl sd   <font color=Red>|</font> sd           <font color=Red>=</font> text <font color=Magenta>"standalone='yes'"</font>+<a name="(line57)"></a>            <font color=Red>|</font> otherwise    <font color=Red>=</font> text <font color=Magenta>"standalone='no'"</font>+<a name="(line58)"></a>doctypedecl <font color=Cyan>(</font>DTD n eid ds<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>if</u></font> null ds <font color=Green><u>then</u></font> +<a name="(line59)"></a>                                  hd <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line60)"></a>                             <font color=Green><u>else</u></font> hd <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>" ["</font> <font color=Cyan>$$</font>+<a name="(line61)"></a>                                  vcat <font color=Cyan>(</font>map markupdecl ds<font color=Cyan>)</font> <font color=Cyan>$$</font> text <font color=Magenta>"]&gt;"</font>+<a name="(line62)"></a>                           <font color=Green><u>where</u></font> hd <font color=Red>=</font> text <font color=Magenta>"&lt;!DOCTYPE"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line63)"></a>                                      maybe externalid eid+<a name="(line64)"></a>markupdecl <font color=Cyan>(</font>Element e<font color=Cyan>)</font>     <font color=Red>=</font> elementdecl e+<a name="(line65)"></a>markupdecl <font color=Cyan>(</font>AttList a<font color=Cyan>)</font>     <font color=Red>=</font> attlistdecl a+<a name="(line66)"></a>markupdecl <font color=Cyan>(</font>Entity e<font color=Cyan>)</font>      <font color=Red>=</font> entitydecl e+<a name="(line67)"></a>markupdecl <font color=Cyan>(</font>Notation n<font color=Cyan>)</font>    <font color=Red>=</font> notationdecl n+<a name="(line68)"></a>markupdecl <font color=Cyan>(</font>MarkupMisc m<font color=Cyan>)</font>  <font color=Red>=</font> misc m+<a name="(line69)"></a><font color=Blue>--markupdecl (MarkupPE p m)  = peref p</font>+<a name="(line70)"></a>extsubset <font color=Cyan>(</font>ExtSubset t ds<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan>$$</font>+<a name="(line71)"></a>                             vcat <font color=Cyan>(</font>map extsubsetdecl ds<font color=Cyan>)</font>+<a name="(line72)"></a>extsubsetdecl <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font>      <font color=Red>=</font> markupdecl m+<a name="(line73)"></a>extsubsetdecl <font color=Cyan>(</font>ExtConditionalSect c<font color=Cyan>)</font> <font color=Red>=</font> conditionalsect c+<a name="(line74)"></a><font color=Blue>--extsubsetdecl (ExtPEReference p e)   = peref p</font>+<a name="(line75)"></a>+<a name="(line76)"></a>element <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line77)"></a>                         fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"/&gt;"</font>+<a name="(line78)"></a>element e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font>+<a name="(line79)"></a><font color=Blue>--  | any isText cs    = text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as) &lt;&gt;</font>+<a name="(line80)"></a><font color=Blue>--                       text "&gt;" &lt;&gt; hcat (map content cs) &lt;&gt;</font>+<a name="(line81)"></a><font color=Blue>--                       text "&lt;/" &lt;&gt; text n &lt;&gt; text "&gt;"</font>+<a name="(line82)"></a>    <font color=Red>|</font> isText <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line83)"></a>                         text <font color=Magenta>"&gt;"</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map content cs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line84)"></a>                         text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line85)"></a>    <font color=Red>|</font> otherwise        <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> carryelem e empty+<a name="(line86)"></a>                         <font color=Green><u>in</u></font> d <font color=Cyan>&lt;&gt;</font> c+<a name="(line87)"></a>+<a name="(line88)"></a><a name="isText"></a>isText <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line89)"></a>isText <font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> True+<a name="(line90)"></a>isText <font color=Green><u>_</u></font>               <font color=Red>=</font> False+<a name="(line91)"></a>+<a name="(line92)"></a><a name="carryelem"></a>carryelem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> c+<a name="(line93)"></a>                       <font color=Red>=</font> <font color=Cyan>(</font> c <font color=Cyan>&lt;&gt;</font>+<a name="(line94)"></a>                           text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line95)"></a>                         <font color=Cyan>,</font> text <font color=Magenta>"/&gt;"</font><font color=Cyan>)</font>+<a name="(line96)"></a><font color=Blue>--carryelem e@(Elem n as cs) c</font>+<a name="(line97)"></a><font color=Blue>----  | any isText cs    =  ( c &lt;&gt; element e, empty)</font>+<a name="(line98)"></a><font color=Blue>--    | otherwise        =  let (cs',d') = carryscan carrycontent cs (text "&gt;")</font>+<a name="(line99)"></a><font color=Blue>--                          in</font>+<a name="(line100)"></a><font color=Blue>--                          ( c &lt;&gt;</font>+<a name="(line101)"></a><font color=Blue>--                            text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as) $$</font>+<a name="(line102)"></a><font color=Blue>--                            nest 2 (vcat cs') &lt;&gt; -- $$</font>+<a name="(line103)"></a><font color=Blue>--                            c' &lt;&gt; text "&lt;/" &lt;&gt; text n</font>+<a name="(line104)"></a><font color=Blue>--                          , text "&gt;")</font>+<a name="(line105)"></a><font color=Blue>--carrycontent (CElem e) c   = carryelem e c</font>+<a name="(line106)"></a><font color=Blue>--carrycontent (CString _ s) c = (c &lt;&gt; chardata s, empty)</font>+<a name="(line107)"></a><font color=Blue>--carrycontent (CRef r) c    = (c &lt;&gt; reference r, empty)</font>+<a name="(line108)"></a><font color=Blue>--carrycontent (CMisc m) c   = (c &lt;&gt; misc m, empty)</font>+<a name="(line109)"></a><font color=Blue>--</font>+<a name="(line110)"></a><font color=Blue>--carryscan :: (a-&gt;c-&gt;(b,c)) -&gt; [a] -&gt; c -&gt; ([b],c)</font>+<a name="(line111)"></a><font color=Blue>--carryscan f []     c = ([],c)</font>+<a name="(line112)"></a><font color=Blue>--carryscan f (a:as) c = let (b, c')   = f a c</font>+<a name="(line113)"></a><font color=Blue>--                           (bs,c'') = carryscan f as c'</font>+<a name="(line114)"></a><font color=Blue>--                       in (b:bs, c'')</font>+<a name="(line115)"></a>+<a name="(line116)"></a>carryelem e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> c+<a name="(line117)"></a>  <font color=Red>|</font> isText <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line118)"></a>        <font color=Cyan>(</font> start <font color=Cyan>&lt;&gt;</font>+<a name="(line119)"></a>          text <font color=Magenta>"&gt;"</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map content cs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n+<a name="(line120)"></a>        <font color=Cyan>,</font> text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line121)"></a>  <font color=Red>|</font> otherwise <font color=Red>=</font>+<a name="(line122)"></a>        <font color=Green><u>let</u></font> <font color=Cyan>(</font>d<font color=Cyan>,</font>c'<font color=Cyan>)</font> <font color=Red>=</font> foldl carrycontent <font color=Cyan>(</font>start<font color=Cyan>,</font> text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font> cs <font color=Green><u>in</u></font>+<a name="(line123)"></a>        <font color=Cyan>(</font> d <font color=Cyan>&lt;&gt;</font> c' <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n+<a name="(line124)"></a>        <font color=Cyan>,</font> text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line125)"></a>  <font color=Green><u>where</u></font> start <font color=Red>=</font> c <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line126)"></a>+<a name="(line127)"></a><a name="carrycontent"></a>carrycontent <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font>     <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>d'<font color=Cyan>,</font>c'<font color=Cyan>)</font> <font color=Red>=</font> carryelem e c <font color=Green><u>in</u></font>+<a name="(line128)"></a>                                     <font color=Cyan>(</font>d <font color=Cyan>$$</font> nest <font color=Magenta>2</font> d'<font color=Cyan>,</font>       c'<font color=Cyan>)</font>+<a name="(line129)"></a>carrycontent <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font>d <font color=Cyan>&lt;&gt;</font> c <font color=Cyan>&lt;&gt;</font> chardata s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line130)"></a>carrycontent <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> <font color=Cyan>(</font>d <font color=Cyan>&lt;&gt;</font> c <font color=Cyan>&lt;&gt;</font> reference r<font color=Cyan>,</font>empty<font color=Cyan>)</font>+<a name="(line131)"></a>carrycontent <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font>     <font color=Red>=</font> <font color=Cyan>(</font>d <font color=Cyan>$$</font> c <font color=Cyan>&lt;&gt;</font> misc m<font color=Cyan>,</font>     empty<font color=Cyan>)</font>+<a name="(line132)"></a>+<a name="(line133)"></a>+<a name="(line134)"></a>attribute <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font>          <font color=Red>=</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;&gt;</font> attvalue v+<a name="(line135)"></a>content <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> element e+<a name="(line136)"></a>content <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> chardata s+<a name="(line137)"></a>content <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font>       <font color=Red>=</font> reference r+<a name="(line138)"></a>content <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> misc m+<a name="(line139)"></a>+<a name="(line140)"></a><a name="elementdecl"></a>elementdecl <font color=Cyan>(</font>ElementDecl n cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ELEMENT"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line141)"></a>                                 contentspec cs <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line142)"></a><a name="contentspec"></a>contentspec EMPTY              <font color=Red>=</font> text <font color=Magenta>"EMPTY"</font>+<a name="(line143)"></a>contentspec ANY                <font color=Red>=</font> text <font color=Magenta>"ANY"</font>+<a name="(line144)"></a>contentspec <font color=Cyan>(</font>Mixed m<font color=Cyan>)</font>          <font color=Red>=</font> mixed m+<a name="(line145)"></a>contentspec <font color=Cyan>(</font>ContentSpec c<font color=Cyan>)</font>    <font color=Red>=</font> cp c+<a name="(line146)"></a><a name="cp"></a><font color=Blue>--contentspec (ContentPE p cs)   = peref p</font>+<a name="(line147)"></a>cp <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font>       <font color=Red>=</font> text n <font color=Cyan>&lt;&gt;</font> modifier m+<a name="(line148)"></a>cp <font color=Cyan>(</font>Choice cs m<font color=Cyan>)</font>       <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line149)"></a>                           modifier m+<a name="(line150)"></a>cp <font color=Cyan>(</font>Seq cs m<font color=Cyan>)</font>          <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>","</font><font color=Cyan>)</font> <font color=Cyan>(</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line151)"></a>                           modifier m+<a name="(line152)"></a><a name="modifier"></a><font color=Blue>--cp (CPPE p c)          = peref p</font>+<a name="(line153)"></a>modifier None          <font color=Red>=</font> empty+<a name="(line154)"></a>modifier Query         <font color=Red>=</font> text <font color=Magenta>"?"</font>+<a name="(line155)"></a>modifier Star          <font color=Red>=</font> text <font color=Magenta>"*"</font>+<a name="(line156)"></a>modifier Plus          <font color=Red>=</font> text <font color=Magenta>"+"</font>+<a name="(line157)"></a><a name="mixed"></a>mixed  PCDATA          <font color=Red>=</font> text <font color=Magenta>"(#PCDATA)"</font>+<a name="(line158)"></a>mixed <font color=Cyan>(</font>PCDATAplus ns<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"(#PCDATA |"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line159)"></a>                         hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line160)"></a>                         text <font color=Magenta>")*"</font>+<a name="(line161)"></a>+<a name="(line162)"></a><a name="attlistdecl"></a>attlistdecl <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ATTLIST"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line163)"></a>                                 fsep <font color=Cyan>(</font>map attdef ds<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line164)"></a><a name="attdef"></a>attdef <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font>          <font color=Red>=</font> text n <font color=Cyan>&lt;+&gt;</font> atttype t <font color=Cyan>&lt;+&gt;</font> defaultdecl d+<a name="(line165)"></a><a name="atttype"></a>atttype  StringType            <font color=Red>=</font> text <font color=Magenta>"CDATA"</font>+<a name="(line166)"></a>atttype <font color=Cyan>(</font>TokenizedType t<font color=Cyan>)</font>      <font color=Red>=</font> tokenizedtype t+<a name="(line167)"></a>atttype <font color=Cyan>(</font>EnumeratedType t<font color=Cyan>)</font>     <font color=Red>=</font> enumeratedtype t+<a name="(line168)"></a><a name="tokenizedtype"></a>tokenizedtype ID               <font color=Red>=</font> text <font color=Magenta>"ID"</font>+<a name="(line169)"></a>tokenizedtype IDREF            <font color=Red>=</font> text <font color=Magenta>"IDREF"</font>+<a name="(line170)"></a>tokenizedtype IDREFS           <font color=Red>=</font> text <font color=Magenta>"IDREFS"</font>+<a name="(line171)"></a>tokenizedtype ENTITY           <font color=Red>=</font> text <font color=Magenta>"ENTITY"</font>+<a name="(line172)"></a>tokenizedtype ENTITIES         <font color=Red>=</font> text <font color=Magenta>"ENTITIES"</font>+<a name="(line173)"></a>tokenizedtype NMTOKEN          <font color=Red>=</font> text <font color=Magenta>"NMTOKEN"</font>+<a name="(line174)"></a>tokenizedtype NMTOKENS         <font color=Red>=</font> text <font color=Magenta>"NMTOKENS"</font>+<a name="(line175)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Cyan>(</font>NotationType n<font color=Cyan>)</font><font color=Red>=</font> notationtype n+<a name="(line176)"></a>enumeratedtype <font color=Cyan>(</font>Enumeration e<font color=Cyan>)</font> <font color=Red>=</font> enumeration e+<a name="(line177)"></a><a name="notationtype"></a>notationtype ns                <font color=Red>=</font> text <font color=Magenta>"NOTATION"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line178)"></a>                                 parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line179)"></a><a name="enumeration"></a>enumeration ns                 <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map nmtoken ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line180)"></a><a name="defaultdecl"></a>defaultdecl  REQUIRED          <font color=Red>=</font> text <font color=Magenta>"#REQUIRED"</font>+<a name="(line181)"></a>defaultdecl  IMPLIED           <font color=Red>=</font> text <font color=Magenta>"#IMPLIED"</font>+<a name="(line182)"></a>defaultdecl <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font>    <font color=Red>=</font> maybe <font color=Cyan>(</font>const <font color=Cyan>(</font>text <font color=Magenta>"#FIXED"</font><font color=Cyan>)</font><font color=Cyan>)</font> f <font color=Cyan>&lt;+&gt;</font> attvalue a+<a name="(line183)"></a><a name="conditionalsect"></a>conditionalsect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Red>=</font> text <font color=Magenta>"&lt;![INCLUDE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line184)"></a>                                 vcat <font color=Cyan>(</font>map extsubsetdecl i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line185)"></a>conditionalsect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![IGNORE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line186)"></a>                                 fsep <font color=Cyan>(</font>map ignoresectcontents i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line187)"></a><a name="ignore"></a>ignore <font color=Cyan>(</font>Ignore<font color=Cyan>)</font>                <font color=Red>=</font> empty+<a name="(line188)"></a><a name="ignoresectcontents"></a>ignoresectcontents <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>+<a name="(line189)"></a>                               <font color=Red>=</font> ignore i <font color=Cyan>&lt;+&gt;</font> vcat <font color=Cyan>(</font>map internal is<font color=Cyan>)</font>+<a name="(line190)"></a>                          <font color=Green><u>where</u></font> internal <font color=Cyan>(</font>ics<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line191)"></a>                                                   ignoresectcontents ics <font color=Cyan>&lt;+&gt;</font>+<a name="(line192)"></a>                                                   text <font color=Magenta>"]]&gt;"</font> <font color=Cyan>&lt;+&gt;</font> ignore i+<a name="(line193)"></a><a name="reference"></a>reference <font color=Cyan>(</font>RefEntity er<font color=Cyan>)</font>       <font color=Red>=</font> entityref er+<a name="(line194)"></a>reference <font color=Cyan>(</font>RefChar cr<font color=Cyan>)</font>         <font color=Red>=</font> charref cr+<a name="(line195)"></a><a name="entityref"></a>entityref n                    <font color=Red>=</font> text <font color=Magenta>"&amp;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line196)"></a><a name="charref"></a>charref c                      <font color=Red>=</font> text <font color=Magenta>"&amp;#"</font> <font color=Cyan>&lt;&gt;</font> text <font color=Cyan>(</font>show c<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line197)"></a><a name="entitydecl"></a>entitydecl <font color=Cyan>(</font>EntityGEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> gedecl d+<a name="(line198)"></a>entitydecl <font color=Cyan>(</font>EntityPEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> pedecl d+<a name="(line199)"></a><a name="gedecl"></a>gedecl <font color=Cyan>(</font>GEDecl n ed<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> entitydef ed <font color=Cyan>&lt;&gt;</font>+<a name="(line200)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line201)"></a><a name="pedecl"></a>pedecl <font color=Cyan>(</font>PEDecl n pd<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY %"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> pedef pd <font color=Cyan>&lt;&gt;</font>+<a name="(line202)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line203)"></a><a name="entitydef"></a>entitydef <font color=Cyan>(</font>DefEntityValue ev<font color=Cyan>)</font>  <font color=Red>=</font> entityvalue ev+<a name="(line204)"></a>entitydef <font color=Cyan>(</font>DefExternalID i nd<font color=Cyan>)</font> <font color=Red>=</font> externalid i <font color=Cyan>&lt;+&gt;</font> maybe ndatadecl nd+<a name="(line205)"></a><a name="pedef"></a>pedef <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font>    <font color=Red>=</font> entityvalue ev+<a name="(line206)"></a>pedef <font color=Cyan>(</font>PEDefExternalID eid<font color=Cyan>)</font>    <font color=Red>=</font> externalid eid+<a name="(line207)"></a><a name="externalid"></a>externalid <font color=Cyan>(</font>SYSTEM sl<font color=Cyan>)</font>         <font color=Red>=</font> text <font color=Magenta>"SYSTEM"</font> <font color=Cyan>&lt;+&gt;</font> systemliteral sl+<a name="(line208)"></a>externalid <font color=Cyan>(</font>PUBLIC i sl<font color=Cyan>)</font>       <font color=Red>=</font> text <font color=Magenta>"PUBLIC"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral i <font color=Cyan>&lt;+&gt;</font>+<a name="(line209)"></a>                                 systemliteral sl+<a name="(line210)"></a><a name="ndatadecl"></a>ndatadecl <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"NDATA"</font> <font color=Cyan>&lt;+&gt;</font> text n+<a name="(line211)"></a><a name="textdecl"></a>textdecl <font color=Cyan>(</font>TextDecl vi ed<font color=Cyan>)</font>      <font color=Red>=</font> text <font color=Magenta>"&lt;?xml"</font> <font color=Cyan>&lt;+&gt;</font> maybe text vi <font color=Cyan>&lt;+&gt;</font>+<a name="(line212)"></a>                                 encodingdecl ed <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line213)"></a><a name="extparsedent"></a>extparsedent <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font><font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font> content c+<a name="(line214)"></a><a name="extpe"></a>extpe <font color=Cyan>(</font>ExtPE t esd<font color=Cyan>)</font>            <font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font>+<a name="(line215)"></a>                                 vcat <font color=Cyan>(</font>map extsubsetdecl esd<font color=Cyan>)</font>+<a name="(line216)"></a><a name="notationdecl"></a>notationdecl <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>    <font color=Red>=</font> text <font color=Magenta>"&lt;!NOTATION"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line217)"></a>                                 either externalid publicid e <font color=Cyan>&lt;&gt;</font>+<a name="(line218)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line219)"></a><a name="publicid"></a>publicid <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>          <font color=Red>=</font> text <font color=Magenta>"PUBLICID"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral p+<a name="(line220)"></a><a name="encodingdecl"></a>encodingdecl <font color=Cyan>(</font>EncodingDecl s<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"encoding='"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line221)"></a><a name="nmtoken"></a>nmtoken s                      <font color=Red>=</font> text s+<a name="(line222)"></a><a name="attvalue"></a>attvalue <font color=Cyan>(</font>AttValue esr<font color=Cyan>)</font>        <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line223)"></a>                                 hcat <font color=Cyan>(</font>map <font color=Cyan>(</font>either text reference<font color=Cyan>)</font> esr<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line224)"></a>                                 text <font color=Magenta>"\""</font>+<a name="(line225)"></a><a name="entityvalue"></a>entityvalue <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map ev evs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line226)"></a><a name="ev"></a>ev <font color=Cyan>(</font>EVString s<font color=Cyan>)</font>                <font color=Red>=</font> text s+<a name="(line227)"></a><font color=Blue>--ev (EVPERef p e)               = peref p</font>+<a name="(line228)"></a>ev <font color=Cyan>(</font>EVRef r<font color=Cyan>)</font>                   <font color=Red>=</font> reference r+<a name="(line229)"></a><a name="pubidliteral"></a>pubidliteral <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line230)"></a><a name="systemliteral"></a>systemliteral <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font><font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line231)"></a><a name="chardata"></a>chardata s                     <font color=Red>=</font> <font color=Green><u>if</u></font> all isSpace s <font color=Green><u>then</u></font> empty <font color=Green><u>else</u></font> text s+<a name="(line232)"></a><a name="cdsect"></a>cdsect c                       <font color=Red>=</font> text <font color=Magenta>"&lt;![CDATA["</font> <font color=Cyan>&lt;&gt;</font> chardata c <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line233)"></a>+<a name="(line234)"></a><font color=Blue>----</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Lex.html view
@@ -0,0 +1,337 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | You don't normally need to use this Lex module directly - it is</font>+<a name="(line2)"></a><font color=Blue>--   called automatically by the parser.  (This interface is only exposed</font>+<a name="(line3)"></a><font color=Blue>--   for debugging purposes.)</font>+<a name="(line4)"></a><font color=Blue>--</font>+<a name="(line5)"></a><font color=Blue>-- This is a hand-written lexer for tokenising the text of an XML</font>+<a name="(line6)"></a><font color=Blue>-- document so that it is ready for parsing.  It attaches position</font>+<a name="(line7)"></a><font color=Blue>-- information in (line,column) format to every token.  The main</font>+<a name="(line8)"></a><font color=Blue>-- entry point is 'xmlLex'.  A secondary entry point, 'xmlReLex', is</font>+<a name="(line9)"></a><font color=Blue>-- provided for when the parser needs to stuff a string back onto</font>+<a name="(line10)"></a><font color=Blue>-- the front of the text and re-tokenise it (typically when expanding</font>+<a name="(line11)"></a><font color=Blue>-- macros).</font>+<a name="(line12)"></a><font color=Blue>--</font>+<a name="(line13)"></a><font color=Blue>-- As one would expect, the lexer is essentially a small finite</font>+<a name="(line14)"></a><font color=Blue>-- state machine.</font>+<a name="(line15)"></a>+<a name="(line16)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Lex+<a name="(line17)"></a>  <font color=Cyan>(</font>+<a name="(line18)"></a>  <font color=Blue>-- * Entry points to the lexer</font>+<a name="(line19)"></a>    xmlLex         <font color=Blue>-- :: String -&gt; String -&gt; [Token]</font>+<a name="(line20)"></a>  <font color=Cyan>,</font> xmlReLex       <font color=Blue>-- :: Posn   -&gt; String -&gt; [Token]</font>+<a name="(line21)"></a>  <font color=Cyan>,</font> reLexEntityValue <font color=Blue>-- :: (String-&gt;Maybe String) -&gt; Posn -&gt; String -&gt; [Token]</font>+<a name="(line22)"></a>  <font color=Blue>-- * Token types</font>+<a name="(line23)"></a>  <font color=Cyan>,</font> Token+<a name="(line24)"></a>  <font color=Cyan>,</font> TokenT<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line25)"></a>  <font color=Cyan>,</font> Special<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line26)"></a>  <font color=Cyan>,</font> Section<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line27)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line28)"></a>+<a name="(line29)"></a><font color=Green><u>import</u></font> Char+<a name="(line30)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn+<a name="(line31)"></a>+<a name="(line32)"></a><a name="Where"></a><font color=Green><u>data</u></font> Where <font color=Red>=</font> InTag String <font color=Red>|</font> NotInTag+<a name="(line33)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>)</font>+<a name="(line34)"></a>+<a name="(line35)"></a><a name="Token"></a><font color=Blue>-- | All tokens are paired up with a source position.</font>+<a name="(line36)"></a><a name="Token"></a><font color=Blue>--   Lexical errors are passed back as a special @TokenT@ value.</font>+<a name="(line37)"></a><a name="Token"></a><font color=Green><u>type</u></font> Token <font color=Red>=</font> <font color=Cyan>(</font>Posn<font color=Cyan>,</font> TokenT<font color=Cyan>)</font>+<a name="(line38)"></a>+<a name="(line39)"></a><a name="TokenT"></a><font color=Blue>-- | The basic token type.</font>+<a name="(line40)"></a><a name="TokenT"></a><font color=Green><u>data</u></font> TokenT <font color=Red>=</font>+<a name="(line41)"></a>      TokCommentOpen		<font color=Blue>-- ^   \&lt;!--</font>+<a name="(line42)"></a>    <font color=Red>|</font> TokCommentClose		<font color=Blue>-- ^   --&gt;</font>+<a name="(line43)"></a>    <font color=Red>|</font> TokPIOpen			<font color=Blue>-- ^   \&lt;?</font>+<a name="(line44)"></a>    <font color=Red>|</font> TokPIClose		<font color=Blue>-- ^   ?&gt;</font>+<a name="(line45)"></a>    <font color=Red>|</font> TokSectionOpen		<font color=Blue>-- ^   \&lt;![</font>+<a name="(line46)"></a>    <font color=Red>|</font> TokSectionClose		<font color=Blue>-- ^   ]]&gt;</font>+<a name="(line47)"></a>    <font color=Red>|</font> TokSection Section	<font color=Blue>-- ^   CDATA INCLUDE IGNORE etc</font>+<a name="(line48)"></a>    <font color=Red>|</font> TokSpecialOpen		<font color=Blue>-- ^   \&lt;!</font>+<a name="(line49)"></a>    <font color=Red>|</font> TokSpecial Special	<font color=Blue>-- ^   DOCTYPE ELEMENT ATTLIST etc</font>+<a name="(line50)"></a>    <font color=Red>|</font> TokEndOpen		<font color=Blue>-- ^   \&lt;\/</font>+<a name="(line51)"></a>    <font color=Red>|</font> TokEndClose		<font color=Blue>-- ^   \/&gt;</font>+<a name="(line52)"></a>    <font color=Red>|</font> TokAnyOpen		<font color=Blue>-- ^   \&lt;</font>+<a name="(line53)"></a>    <font color=Red>|</font> TokAnyClose		<font color=Blue>-- ^   &gt;</font>+<a name="(line54)"></a>    <font color=Red>|</font> TokSqOpen			<font color=Blue>-- ^   \[</font>+<a name="(line55)"></a>    <font color=Red>|</font> TokSqClose		<font color=Blue>-- ^   \]</font>+<a name="(line56)"></a>    <font color=Red>|</font> TokEqual			<font color=Blue>-- ^   =</font>+<a name="(line57)"></a>    <font color=Red>|</font> TokQuery			<font color=Blue>-- ^   ?</font>+<a name="(line58)"></a>    <font color=Red>|</font> TokStar			<font color=Blue>-- ^   \*</font>+<a name="(line59)"></a>    <font color=Red>|</font> TokPlus			<font color=Blue>-- ^   +</font>+<a name="(line60)"></a>    <font color=Red>|</font> TokAmp			<font color=Blue>-- ^   &amp;</font>+<a name="(line61)"></a>    <font color=Red>|</font> TokSemi			<font color=Blue>-- ^   ;</font>+<a name="(line62)"></a>    <font color=Red>|</font> TokHash			<font color=Blue>-- ^   #</font>+<a name="(line63)"></a>    <font color=Red>|</font> TokBraOpen		<font color=Blue>-- ^   (</font>+<a name="(line64)"></a>    <font color=Red>|</font> TokBraClose		<font color=Blue>-- ^   )</font>+<a name="(line65)"></a>    <font color=Red>|</font> TokPipe			<font color=Blue>-- ^   |</font>+<a name="(line66)"></a>    <font color=Red>|</font> TokPercent		<font color=Blue>-- ^   %</font>+<a name="(line67)"></a>    <font color=Red>|</font> TokComma			<font color=Blue>-- ^   ,</font>+<a name="(line68)"></a>    <font color=Red>|</font> TokQuote			<font color=Blue>-- ^   \'\' or \"\"</font>+<a name="(line69)"></a>    <font color=Red>|</font> TokName      String	<font color=Blue>-- ^   begins with letter, no spaces</font>+<a name="(line70)"></a>    <font color=Red>|</font> TokFreeText  String	<font color=Blue>-- ^   any character data</font>+<a name="(line71)"></a>    <font color=Red>|</font> TokNull			<font color=Blue>-- ^   fake token</font>+<a name="(line72)"></a>    <font color=Red>|</font> TokError     String	<font color=Blue>-- ^   lexical error</font>+<a name="(line73)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>)</font>+<a name="(line74)"></a>+<a name="(line75)"></a><a name="Special"></a><font color=Green><u>data</u></font> Special <font color=Red>=</font>+<a name="(line76)"></a>      DOCTYPEx+<a name="(line77)"></a>    <font color=Red>|</font> ELEMENTx+<a name="(line78)"></a>    <font color=Red>|</font> ATTLISTx+<a name="(line79)"></a>    <font color=Red>|</font> ENTITYx+<a name="(line80)"></a>    <font color=Red>|</font> NOTATIONx+<a name="(line81)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line82)"></a><a name="Section"></a><font color=Green><u>data</u></font> Section <font color=Red>=</font>+<a name="(line83)"></a>      CDATAx+<a name="(line84)"></a>    <font color=Red>|</font> INCLUDEx+<a name="(line85)"></a>    <font color=Red>|</font> IGNOREx+<a name="(line86)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line87)"></a>+<a name="(line88)"></a><font color=Green><u>instance</u></font> Show TokenT <font color=Green><u>where</u></font>+<a name="(line89)"></a>  showsPrec p  TokCommentOpen		<font color=Red>=</font> showString     <font color=Magenta>"&lt;!--"</font>+<a name="(line90)"></a>  showsPrec p  TokCommentClose		<font color=Red>=</font> showString     <font color=Magenta>"--&gt;"</font>+<a name="(line91)"></a>  showsPrec p  TokPIOpen		<font color=Red>=</font> showString     <font color=Magenta>"&lt;?"</font>+<a name="(line92)"></a>  showsPrec p  TokPIClose		<font color=Red>=</font> showString     <font color=Magenta>"?&gt;"</font>+<a name="(line93)"></a>  showsPrec p  TokSectionOpen		<font color=Red>=</font> showString     <font color=Magenta>"&lt;!["</font>+<a name="(line94)"></a>  showsPrec p  TokSectionClose		<font color=Red>=</font> showString     <font color=Magenta>"]]&gt;"</font>+<a name="(line95)"></a>  showsPrec p  <font color=Cyan>(</font>TokSection s<font color=Cyan>)</font>		<font color=Red>=</font> showsPrec p s+<a name="(line96)"></a>  showsPrec p  TokSpecialOpen		<font color=Red>=</font> showString     <font color=Magenta>"&lt;!"</font>+<a name="(line97)"></a>  showsPrec p  <font color=Cyan>(</font>TokSpecial s<font color=Cyan>)</font>		<font color=Red>=</font> showsPrec p s+<a name="(line98)"></a>  showsPrec p  TokEndOpen		<font color=Red>=</font> showString     <font color=Magenta>"&lt;/"</font>+<a name="(line99)"></a>  showsPrec p  TokEndClose		<font color=Red>=</font> showString     <font color=Magenta>"/&gt;"</font>+<a name="(line100)"></a>  showsPrec p  TokAnyOpen		<font color=Red>=</font> showString     <font color=Magenta>"&lt;"</font>+<a name="(line101)"></a>  showsPrec p  TokAnyClose		<font color=Red>=</font> showString     <font color=Magenta>"&gt;"</font>+<a name="(line102)"></a>  showsPrec p  TokSqOpen		<font color=Red>=</font> showString     <font color=Magenta>"["</font>+<a name="(line103)"></a>  showsPrec p  TokSqClose		<font color=Red>=</font> showString     <font color=Magenta>"]"</font>+<a name="(line104)"></a>  showsPrec p  TokEqual			<font color=Red>=</font> showString     <font color=Magenta>"="</font>+<a name="(line105)"></a>  showsPrec p  TokQuery			<font color=Red>=</font> showString     <font color=Magenta>"?"</font>+<a name="(line106)"></a>  showsPrec p  TokStar			<font color=Red>=</font> showString     <font color=Magenta>"*"</font>+<a name="(line107)"></a>  showsPrec p  TokPlus			<font color=Red>=</font> showString     <font color=Magenta>"+"</font>+<a name="(line108)"></a>  showsPrec p  TokAmp			<font color=Red>=</font> showString     <font color=Magenta>"&amp;"</font>+<a name="(line109)"></a>  showsPrec p  TokSemi			<font color=Red>=</font> showString     <font color=Magenta>";"</font>+<a name="(line110)"></a>  showsPrec p  TokHash			<font color=Red>=</font> showString     <font color=Magenta>"#"</font>+<a name="(line111)"></a>  showsPrec p  TokBraOpen		<font color=Red>=</font> showString     <font color=Magenta>"("</font>+<a name="(line112)"></a>  showsPrec p  TokBraClose		<font color=Red>=</font> showString     <font color=Magenta>")"</font>+<a name="(line113)"></a>  showsPrec p  TokPipe			<font color=Red>=</font> showString     <font color=Magenta>"|"</font>+<a name="(line114)"></a>  showsPrec p  TokPercent		<font color=Red>=</font> showString     <font color=Magenta>"%"</font>+<a name="(line115)"></a>  showsPrec p  TokComma			<font color=Red>=</font> showString     <font color=Magenta>","</font>+<a name="(line116)"></a>  showsPrec p  TokQuote			<font color=Red>=</font> showString     <font color=Magenta>"' or \""</font>+<a name="(line117)"></a>  showsPrec p  <font color=Cyan>(</font>TokName      s<font color=Cyan>)</font>		<font color=Red>=</font> showString     s+<a name="(line118)"></a>  showsPrec p  <font color=Cyan>(</font>TokFreeText  s<font color=Cyan>)</font>		<font color=Red>=</font> showString     s+<a name="(line119)"></a>  showsPrec p  TokNull			<font color=Red>=</font> showString     <font color=Magenta>"(null)"</font>+<a name="(line120)"></a>  showsPrec p  <font color=Cyan>(</font>TokError     s<font color=Cyan>)</font>		<font color=Red>=</font> showString     s+<a name="(line121)"></a>+<a name="(line122)"></a><font color=Blue>--trim, revtrim :: String -&gt; String</font>+<a name="(line123)"></a><font color=Blue>--trim    = f . f         where f = reverse . dropWhile isSpace</font>+<a name="(line124)"></a><font color=Blue>--revtrim = f.reverse.f   where f = dropWhile isSpace</font>+<a name="(line125)"></a><font color=Blue>--revtrim = reverse . dropWhile (=='\n')  -- most recently used defn.</font>+<a name="(line126)"></a>+<a name="(line127)"></a><a name="emit"></a>emit <font color=Red>::</font> TokenT <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> Token+<a name="(line128)"></a>emit tok p <font color=Red>=</font> forcep p <font color=Cyan>`seq`</font> <font color=Cyan>(</font>p<font color=Cyan>,</font>tok<font color=Cyan>)</font>+<a name="(line129)"></a>+<a name="(line130)"></a><a name="lexerror"></a>lexerror <font color=Red>::</font> String <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line131)"></a>lexerror s p <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>p<font color=Cyan>,</font> TokError <font color=Cyan>(</font><font color=Magenta>"Lexical error:\n  "</font><font color=Cyan>++</font>s<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line132)"></a>+<a name="(line133)"></a><a name="skip"></a>skip <font color=Red>::</font> Int <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>Posn<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font><font color=Red>[</font>Token<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line134)"></a>skip n p s k <font color=Red>=</font> k <font color=Cyan>(</font>addcol n p<font color=Cyan>)</font> <font color=Cyan>(</font>drop n s<font color=Cyan>)</font>+<a name="(line135)"></a>+<a name="(line136)"></a><a name="blank"></a>blank <font color=Red>::</font> <font color=Cyan>(</font><font color=Red>[</font>Where<font color=Red>]</font><font color=Red>-&gt;</font>Posn<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font><font color=Red>[</font>Token<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Where<font color=Red>]</font><font color=Red>-&gt;</font> Posn<font color=Red>-&gt;</font> String<font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line137)"></a>blank k  <font color=Cyan>(</font>InTag t<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> p [] <font color=Red>=</font> lexerror <font color=Cyan>(</font><font color=Magenta>"unexpected EOF within "</font><font color=Cyan>++</font>t<font color=Cyan>)</font> p+<a name="(line138)"></a>blank k          <font color=Green><u>_</u></font>   p [] <font color=Red>=</font> []+<a name="(line139)"></a>blank k      w p <font color=Cyan>(</font><font color=Magenta>' '</font><font color=Red><b>:</b></font> s<font color=Cyan>)</font> <font color=Red>=</font> blank k w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> s+<a name="(line140)"></a>blank k      w p <font color=Cyan>(</font><font color=Magenta>'\t'</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font> <font color=Red>=</font> blank k w <font color=Cyan>(</font>tab p<font color=Cyan>)</font> s+<a name="(line141)"></a>blank k      w p <font color=Cyan>(</font><font color=Magenta>'\n'</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font> <font color=Red>=</font> blank k w <font color=Cyan>(</font>newline p<font color=Cyan>)</font> s+<a name="(line142)"></a>blank k      w p <font color=Cyan>(</font><font color=Magenta>'\r'</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font> <font color=Red>=</font> blank k w  p s+<a name="(line143)"></a>blank k   w p <font color=Cyan>(</font><font color=Magenta>'\xa0'</font><font color=Red><b>:</b></font> s<font color=Cyan>)</font> <font color=Red>=</font> blank k w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> s+<a name="(line144)"></a>blank k      w p    s     <font color=Red>=</font> k w p s+<a name="(line145)"></a>+<a name="(line146)"></a><a name="prefixes"></a>prefixes <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Bool+<a name="(line147)"></a>[]     <font color=Cyan>`prefixes`</font>   ys   <font color=Red>=</font> True+<a name="(line148)"></a><a name="prefixes"></a><font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Cyan>`prefixes`</font> <font color=Cyan>(</font>y<font color=Red><b>:</b></font>ys<font color=Cyan>)</font> <font color=Red>=</font> x<font color=Cyan>==</font>y <font color=Cyan>&amp;&amp;</font> xs <font color=Cyan>`prefixes`</font> ys+<a name="(line149)"></a><a name="prefixes"></a><font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Cyan>`prefixes`</font>   []   <font color=Red>=</font> False <font color=Blue>--error "unexpected EOF in prefix"</font>+<a name="(line150)"></a>+<a name="(line151)"></a><a name="textUntil"></a>textUntil close tok acc pos p [] k <font color=Red>=</font>+<a name="(line152)"></a>    lexerror <font color=Cyan>(</font><font color=Magenta>"unexpected EOF while looking for closing token "</font><font color=Cyan>++</font>close+<a name="(line153)"></a>              <font color=Cyan>++</font><font color=Magenta>"\n  to match the opening token in "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font> p+<a name="(line154)"></a>textUntil close tok acc pos p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font> k+<a name="(line155)"></a>    <font color=Red>|</font> close <font color=Cyan>`prefixes`</font> <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>  <font color=Red>=</font> emit <font color=Cyan>(</font>TokFreeText <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font>+<a name="(line156)"></a>                                 emit tok p<font color=Red><b>:</b></font>+<a name="(line157)"></a>                                 skip <font color=Cyan>(</font>length close<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line158)"></a>    <font color=Red>|</font> isSpace s  <font color=Red>=</font> textUntil close tok <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>white s p<font color=Cyan>)</font> ss k+<a name="(line159)"></a>    <font color=Red>|</font> otherwise  <font color=Red>=</font> textUntil close tok <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line160)"></a>+<a name="(line161)"></a><a name="textOrRefUntil"></a>textOrRefUntil close tok acc pos p [] k <font color=Red>=</font>+<a name="(line162)"></a>    lexerror <font color=Cyan>(</font><font color=Magenta>"unexpected EOF while looking for closing token "</font><font color=Cyan>++</font>close+<a name="(line163)"></a>              <font color=Cyan>++</font><font color=Magenta>"\n  to match the opening token in "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font> p+<a name="(line164)"></a>textOrRefUntil close tok acc pos p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font> k+<a name="(line165)"></a>    <font color=Red>|</font> close <font color=Cyan>`prefixes`</font> <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>  <font color=Red>=</font> emit <font color=Cyan>(</font>TokFreeText <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font>+<a name="(line166)"></a>                                 emit tok p<font color=Red><b>:</b></font>+<a name="(line167)"></a>                                 skip <font color=Cyan>(</font>length close<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line168)"></a>    <font color=Red>|</font> s<font color=Cyan>==</font><font color=Magenta>'&amp;'</font>     <font color=Red>=</font> <font color=Cyan>(</font><font color=Green><u>if</u></font> not <font color=Cyan>(</font>null acc<font color=Cyan>)</font>+<a name="(line169)"></a>                       <font color=Green><u>then</u></font> <font color=Cyan>(</font>emit <font color=Cyan>(</font>TokFreeText <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font><font color=Cyan>)</font>+<a name="(line170)"></a>                       <font color=Green><u>else</u></font> id<font color=Cyan>)</font>+<a name="(line171)"></a>                   <font color=Cyan>(</font>emit TokAmp p<font color=Red><b>:</b></font>+<a name="(line172)"></a>                    textUntil <font color=Magenta>";"</font> TokSemi <font color=Magenta>""</font> p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line173)"></a>                        <font color=Cyan>(</font><font color=Red>\</font>p' i<font color=Red>-&gt;</font> textOrRefUntil close tok <font color=Magenta>""</font> p p' i k<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line174)"></a>    <font color=Red>|</font> isSpace s  <font color=Red>=</font> textOrRefUntil close tok <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>white s p<font color=Cyan>)</font> ss k+<a name="(line175)"></a>    <font color=Red>|</font> otherwise  <font color=Red>=</font> textOrRefUntil close tok <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line176)"></a>+<a name="(line177)"></a><font color=Blue>----</font>+<a name="(line178)"></a>+<a name="(line179)"></a><a name="xmlLex"></a><font color=Blue>-- | The first argument to 'xmlLex' is the filename (used for source positions,</font>+<a name="(line180)"></a><font color=Blue>--   especially in error messages), and the second is the string content of</font>+<a name="(line181)"></a><font color=Blue>--   the XML file.</font>+<a name="(line182)"></a>xmlLex <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line183)"></a>xmlLex filename <font color=Red>=</font> xmlAny [] <font color=Cyan>(</font>posInNewCxt <font color=Cyan>(</font><font color=Magenta>"file "</font><font color=Cyan>++</font>filename<font color=Cyan>)</font> Nothing<font color=Cyan>)</font>+<a name="(line184)"></a>+<a name="(line185)"></a><a name="xmlReLex"></a><font color=Blue>-- | 'xmlReLex' is used when the parser expands a macro (PE reference).</font>+<a name="(line186)"></a><font color=Blue>--    The expansion of the macro must be re-lexed as if for the first time.</font>+<a name="(line187)"></a>xmlReLex <font color=Red>::</font> Posn <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line188)"></a>xmlReLex p s+<a name="(line189)"></a>      <font color=Red>|</font> <font color=Magenta>"INCLUDE"</font>  <font color=Cyan>`prefixes`</font> s  <font color=Red>=</font> emit <font color=Cyan>(</font>TokSection INCLUDEx<font color=Cyan>)</font> p<font color=Red><b>:</b></font> k <font color=Magenta>7</font>+<a name="(line190)"></a>      <font color=Red>|</font> <font color=Magenta>"IGNORE"</font>   <font color=Cyan>`prefixes`</font> s  <font color=Red>=</font> emit <font color=Cyan>(</font>TokSection IGNOREx<font color=Cyan>)</font> p<font color=Red><b>:</b></font>  k <font color=Magenta>6</font>+<a name="(line191)"></a>      <font color=Red>|</font> otherwise <font color=Red>=</font> blank xmlAny [] p s+<a name="(line192)"></a>  <font color=Green><u>where</u></font>+<a name="(line193)"></a>    k n <font color=Red>=</font> skip n p s <font color=Cyan>(</font>blank xmlAny []<font color=Cyan>)</font>+<a name="(line194)"></a>+<a name="(line195)"></a><a name="reLexEntityValue"></a><font color=Blue>-- | 'reLexEntityValue' is used solely within parsing an entityvalue.</font>+<a name="(line196)"></a><font color=Blue>--   Normally, a PERef is logically separated from its surroundings by</font>+<a name="(line197)"></a><font color=Blue>--   whitespace.  But in an entityvalue, a PERef can be juxtaposed to</font>+<a name="(line198)"></a><font color=Blue>--   an identifier, so the expansion forms a new identifier.</font>+<a name="(line199)"></a><font color=Blue>--   Thus the need to rescan the whole text for possible PERefs.</font>+<a name="(line200)"></a>reLexEntityValue <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Maybe String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line201)"></a>reLexEntityValue lookup p s <font color=Red>=</font>+<a name="(line202)"></a>    textOrRefUntil <font color=Magenta>"%"</font> TokNull [] p p <font color=Cyan>(</font>expand s<font color=Cyan>++</font><font color=Magenta>"%"</font><font color=Cyan>)</font> <font color=Cyan>(</font>xmlAny []<font color=Cyan>)</font>+<a name="(line203)"></a>  <font color=Green><u>where</u></font>+<a name="(line204)"></a>    expand []       <font color=Red>=</font> []+<a name="(line205)"></a>    expand <font color=Cyan>(</font><font color=Magenta>'%'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>sym<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> break <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>';'</font><font color=Cyan>)</font> ss <font color=Green><u>in</u></font>+<a name="(line206)"></a>                      <font color=Green><u>case</u></font> lookup sym <font color=Green><u>of</u></font>+<a name="(line207)"></a>                        Just val <font color=Red>-&gt;</font> expand val <font color=Cyan>++</font> expand <font color=Cyan>(</font>tail rest<font color=Cyan>)</font>+<a name="(line208)"></a>                        Nothing  <font color=Red>-&gt;</font> <font color=Magenta>"%"</font><font color=Cyan>++</font>sym<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>++</font> expand <font color=Cyan>(</font>tail rest<font color=Cyan>)</font> <font color=Blue>-- hmmm</font>+<a name="(line209)"></a>    expand <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>   <font color=Red>=</font> s<font color=Red><b>:</b></font> expand ss+<a name="(line210)"></a>+<a name="(line211)"></a><font color=Blue>--xmltop :: Posn -&gt; String -&gt; [Token]</font>+<a name="(line212)"></a><font color=Blue>--xmltop p [] = []</font>+<a name="(line213)"></a><font color=Blue>--xmltop p s</font>+<a name="(line214)"></a><font color=Blue>--    | "&lt;?"   `prefixes` s = emit TokPIOpen p:      next 2 (xmlPI [InTag "&lt;?...?&gt;"])</font>+<a name="(line215)"></a><font color=Blue>--    | "&lt;!--" `prefixes` s = emit TokCommentOpen p: next 4 (xmlComment [])</font>+<a name="(line216)"></a><font color=Blue>--    | "&lt;!"   `prefixes` s = emit TokSpecialOpen p: next 2 (xmlSpecial [InTag "&lt;!...&gt;"])</font>+<a name="(line217)"></a><font color=Blue>--    | otherwise           = lexerror "expected &lt;?xml?&gt; or &lt;!DOCTYPE&gt;" p</font>+<a name="(line218)"></a><font color=Blue>--  where next n k = skip n p s k</font>+<a name="(line219)"></a>+<a name="(line220)"></a><a name="xmlPI"></a>xmlPI      w p s <font color=Red>=</font> xmlName p s <font color=Magenta>"name of processor in &lt;? ?&gt;"</font> <font color=Cyan>(</font>blank xmlPIEnd w<font color=Cyan>)</font>+<a name="(line221)"></a><a name="xmlPIEnd"></a>xmlPIEnd   w p s <font color=Red>=</font> textUntil <font color=Magenta>"?&gt;"</font>  TokPIClose <font color=Magenta>""</font> p p s <font color=Cyan>(</font>blank xmlAny <font color=Cyan>(</font>tail w<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line222)"></a><a name="xmlComment"></a>xmlComment w p s <font color=Red>=</font> textUntil <font color=Magenta>"--&gt;"</font> TokCommentClose <font color=Magenta>""</font> p p s <font color=Cyan>(</font>blank xmlAny w<font color=Cyan>)</font>+<a name="(line223)"></a>+<a name="(line224)"></a><a name="xmlAny"></a><font color=Blue>-- Note: the order of the clauses in xmlAny is very important.</font>+<a name="(line225)"></a><font color=Blue>-- Some matches must precede the NotInTag test, the rest must follow it.</font>+<a name="(line226)"></a>xmlAny <font color=Red>::</font> <font color=Red>[</font>Where<font color=Red>]</font> <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line227)"></a>xmlAny  <font color=Cyan>(</font>InTag t<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font>  p [] <font color=Red>=</font> lexerror <font color=Cyan>(</font><font color=Magenta>"unexpected EOF within "</font><font color=Cyan>++</font>t<font color=Cyan>)</font> p+<a name="(line228)"></a>xmlAny          <font color=Green><u>_</u></font>    p [] <font color=Red>=</font> []+<a name="(line229)"></a>xmlAny w p s<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'&lt;'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line230)"></a>    <font color=Red>|</font> <font color=Magenta>"?"</font>   <font color=Cyan>`prefixes`</font> ss <font color=Red>=</font> emit TokPIOpen p<font color=Red><b>:</b></font>+<a name="(line231)"></a>                                         skip <font color=Magenta>2</font> p s <font color=Cyan>(</font>xmlPI <font color=Cyan>(</font>InTag <font color=Magenta>"&lt;?...?&gt;"</font><font color=Red><b>:</b></font>w<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line232)"></a>    <font color=Red>|</font> <font color=Magenta>"!--"</font> <font color=Cyan>`prefixes`</font> ss <font color=Red>=</font> emit TokCommentOpen p<font color=Red><b>:</b></font> skip <font color=Magenta>4</font> p s <font color=Cyan>(</font>xmlComment w<font color=Cyan>)</font>+<a name="(line233)"></a>    <font color=Red>|</font> <font color=Magenta>"!["</font>  <font color=Cyan>`prefixes`</font> ss <font color=Red>=</font> emit TokSectionOpen p<font color=Red><b>:</b></font> skip <font color=Magenta>3</font> p s <font color=Cyan>(</font>xmlSection w<font color=Cyan>)</font>+<a name="(line234)"></a>    <font color=Red>|</font> <font color=Magenta>"!"</font>   <font color=Cyan>`prefixes`</font> ss <font color=Red>=</font> emit TokSpecialOpen p<font color=Red><b>:</b></font>+<a name="(line235)"></a>                                     skip <font color=Magenta>2</font> p s <font color=Cyan>(</font>xmlSpecial <font color=Cyan>(</font>InTag <font color=Magenta>"&lt;!...&gt;"</font><font color=Red><b>:</b></font>w<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line236)"></a>    <font color=Red>|</font> <font color=Magenta>"/"</font>   <font color=Cyan>`prefixes`</font> ss <font color=Red>=</font> emit TokEndOpen p<font color=Red><b>:</b></font> +<a name="(line237)"></a>                                    skip <font color=Magenta>2</font> p s <font color=Cyan>(</font>xmlTag <font color=Cyan>(</font>InTag <font color=Magenta>"&lt;/...&gt;"</font><font color=Red><b>:</b></font>tail w<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line238)"></a>    <font color=Red>|</font> otherwise           <font color=Red>=</font> emit TokAnyOpen p<font color=Red><b>:</b></font>+<a name="(line239)"></a>                                 skip <font color=Magenta>1</font> p s <font color=Cyan>(</font>xmlTag <font color=Cyan>(</font>InTag <font color=Magenta>"&lt;...&gt;"</font><font color=Red><b>:</b></font>NotInTag<font color=Red><b>:</b></font>w<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line240)"></a>xmlAny <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Red><b>:</b></font>w<font color=Cyan>)</font> p s<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'/'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line241)"></a>    <font color=Red>|</font> <font color=Magenta>"&gt;"</font>   <font color=Cyan>`prefixes`</font> ss <font color=Red>=</font> emit TokEndClose p<font color=Red><b>:</b></font> skip <font color=Magenta>2</font> p s <font color=Cyan>(</font>xmlAny w<font color=Cyan>)</font>+<a name="(line242)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'&amp;'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokAmp p<font color=Red><b>:</b></font>      textUntil <font color=Magenta>";"</font> TokSemi <font color=Magenta>""</font> p+<a name="(line243)"></a>                                                     <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss <font color=Cyan>(</font>xmlAny w<font color=Cyan>)</font>+<a name="(line244)"></a>xmlAny w<font color=Red>@</font><font color=Cyan>(</font>NotInTag<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> p s <font color=Red>=</font> xmlContent <font color=Magenta>""</font> w p p s+<a name="(line245)"></a><font color=Blue>-- everything below here is implicitly InTag.</font>+<a name="(line246)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokAnyClose p<font color=Red><b>:</b></font> xmlAny <font color=Cyan>(</font>tail w<font color=Cyan>)</font> <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line247)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'['</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokSqOpen p<font color=Red><b>:</b></font>+<a name="(line248)"></a>                                 blank xmlAny <font color=Cyan>(</font>InTag <font color=Magenta>"[...]"</font><font color=Red><b>:</b></font>w<font color=Cyan>)</font> <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line249)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>']'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line250)"></a>    <font color=Red>|</font> <font color=Magenta>"]&gt;"</font> <font color=Cyan>`prefixes`</font> ss  <font color=Red>=</font>+<a name="(line251)"></a>                 emit TokSectionClose p<font color=Red><b>:</b></font>  skip <font color=Magenta>3</font> p <font color=Cyan>(</font><font color=Magenta>']'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Cyan>(</font>xmlAny <font color=Cyan>(</font>tail w<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line252)"></a>    <font color=Red>|</font> otherwise  <font color=Red>=</font>    emit TokSqClose p<font color=Red><b>:</b></font>  blank xmlAny <font color=Cyan>(</font>tail w<font color=Cyan>)</font> <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line253)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'('</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokBraOpen p<font color=Red><b>:</b></font>+<a name="(line254)"></a>                                 blank xmlAny <font color=Cyan>(</font>InTag <font color=Magenta>"(...)"</font><font color=Red><b>:</b></font>w<font color=Cyan>)</font> <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line255)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>')'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokBraClose p<font color=Red><b>:</b></font> blank xmlAny <font color=Cyan>(</font>tail w<font color=Cyan>)</font> <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line256)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'='</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokEqual p<font color=Red><b>:</b></font>    blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line257)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'*'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokStar p<font color=Red><b>:</b></font>     blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line258)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'+'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokPlus p<font color=Red><b>:</b></font>     blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line259)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'?'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokQuery p<font color=Red><b>:</b></font>    blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line260)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'|'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokPipe p<font color=Red><b>:</b></font>     blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line261)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'%'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokPercent p<font color=Red><b>:</b></font>  blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line262)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>';'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokSemi p<font color=Red><b>:</b></font>     blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line263)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>','</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokComma p<font color=Red><b>:</b></font>    blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line264)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokHash p<font color=Red><b>:</b></font>     blank xmlAny w <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line265)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'"'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokQuote p<font color=Red><b>:</b></font>    textOrRefUntil <font color=Magenta>"\""</font> TokQuote <font color=Magenta>""</font> p1+<a name="(line266)"></a>                                                          p1 ss <font color=Cyan>(</font>xmlAny w<font color=Cyan>)</font>+<a name="(line267)"></a>                                             <font color=Green><u>where</u></font> p1 <font color=Red>=</font> addcol <font color=Magenta>1</font> p+<a name="(line268)"></a>xmlAny w p <font color=Cyan>(</font><font color=Magenta>'\''</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit TokQuote p<font color=Red><b>:</b></font>   textOrRefUntil <font color=Magenta>"'"</font> TokQuote <font color=Magenta>""</font> p1+<a name="(line269)"></a>                                                          p1 ss <font color=Cyan>(</font>xmlAny w<font color=Cyan>)</font>+<a name="(line270)"></a>                                             <font color=Green><u>where</u></font> p1 <font color=Red>=</font> addcol <font color=Magenta>1</font> p+<a name="(line271)"></a>xmlAny w p s+<a name="(line272)"></a>    <font color=Red>|</font> isSpace <font color=Cyan>(</font>head s<font color=Cyan>)</font>     <font color=Red>=</font> blank xmlAny w p s+<a name="(line273)"></a>    <font color=Red>|</font> isAlphaNum <font color=Cyan>(</font>head s<font color=Cyan>)</font> <font color=Cyan>||</font> <font color=Cyan>(</font>head s<font color=Cyan>)</font><font color=Cyan>`elem`</font><font color=Magenta>":_"</font>+<a name="(line274)"></a>                           <font color=Red>=</font> xmlName p s <font color=Magenta>"some kind of name"</font> <font color=Cyan>(</font>blank xmlAny w<font color=Cyan>)</font>+<a name="(line275)"></a>    <font color=Red>|</font> otherwise            <font color=Red>=</font> lexerror <font color=Cyan>(</font><font color=Magenta>"unrecognised token: "</font><font color=Cyan>++</font>take <font color=Magenta>4</font> s<font color=Cyan>)</font> p+<a name="(line276)"></a>+<a name="(line277)"></a><a name="xmlTag"></a>xmlTag w p s <font color=Red>=</font> xmlName p s <font color=Magenta>"tagname for element in &lt; &gt;"</font> <font color=Cyan>(</font>blank xmlAny w<font color=Cyan>)</font>+<a name="(line278)"></a>+<a name="(line279)"></a><a name="xmlSection"></a>xmlSection <font color=Red>=</font> blank xmlSection0+<a name="(line280)"></a>  <font color=Green><u>where</u></font>+<a name="(line281)"></a>    xmlSection0 w p s+<a name="(line282)"></a>      <font color=Red>|</font> <font color=Magenta>"CDATA["</font>   <font color=Cyan>`prefixes`</font> s  <font color=Red>=</font> emit <font color=Cyan>(</font>TokSection CDATAx<font color=Cyan>)</font> p<font color=Red><b>:</b></font>  accum w p s <font color=Magenta>6</font>+<a name="(line283)"></a>      <font color=Red>|</font> <font color=Magenta>"INCLUDE"</font>  <font color=Cyan>`prefixes`</font> s  <font color=Red>=</font> emit <font color=Cyan>(</font>TokSection INCLUDEx<font color=Cyan>)</font> p<font color=Red><b>:</b></font>    k w p s <font color=Magenta>7</font>+<a name="(line284)"></a>      <font color=Red>|</font> <font color=Magenta>"IGNORE"</font>   <font color=Cyan>`prefixes`</font> s  <font color=Red>=</font> emit <font color=Cyan>(</font>TokSection IGNOREx<font color=Cyan>)</font> p<font color=Red><b>:</b></font>     k w p s <font color=Magenta>6</font>+<a name="(line285)"></a>      <font color=Red>|</font> <font color=Magenta>"%"</font>        <font color=Cyan>`prefixes`</font> s  <font color=Red>=</font> emit TokPercent p<font color=Red><b>:</b></font>               k w p s <font color=Magenta>1</font>+<a name="(line286)"></a>      <font color=Red>|</font> otherwise <font color=Red>=</font> lexerror <font color=Cyan>(</font><font color=Magenta>"expected CDATA, IGNORE, or INCLUDE, but got "</font>+<a name="(line287)"></a>                             <font color=Cyan>++</font>take <font color=Magenta>7</font> s<font color=Cyan>)</font> p+<a name="(line288)"></a>    accum w p s n <font color=Red>=</font>+<a name="(line289)"></a>      <font color=Green><u>let</u></font> p0 <font color=Red>=</font> addcol n p <font color=Green><u>in</u></font>+<a name="(line290)"></a>      textUntil <font color=Magenta>"]]&gt;"</font> TokSectionClose <font color=Magenta>""</font> p0 p0 <font color=Cyan>(</font>drop n s<font color=Cyan>)</font> <font color=Cyan>(</font>blank xmlAny w<font color=Cyan>)</font>+<a name="(line291)"></a>    k w p s n <font color=Red>=</font>+<a name="(line292)"></a>      skip n p s <font color=Cyan>(</font>xmlAny <font color=Cyan>(</font><font color=Blue>{-InTag "&lt;![section[ ... ]]&gt;": -}</font>w<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line293)"></a>+<a name="(line294)"></a><a name="xmlSpecial"></a>xmlSpecial w p s+<a name="(line295)"></a>    <font color=Red>|</font> <font color=Magenta>"DOCTYPE"</font>  <font color=Cyan>`prefixes`</font> s <font color=Red>=</font> emit <font color=Cyan>(</font>TokSpecial DOCTYPEx<font color=Cyan>)</font>  p<font color=Red><b>:</b></font> k <font color=Magenta>7</font>+<a name="(line296)"></a>    <font color=Red>|</font> <font color=Magenta>"ELEMENT"</font>  <font color=Cyan>`prefixes`</font> s <font color=Red>=</font> emit <font color=Cyan>(</font>TokSpecial ELEMENTx<font color=Cyan>)</font>  p<font color=Red><b>:</b></font> k <font color=Magenta>7</font>+<a name="(line297)"></a>    <font color=Red>|</font> <font color=Magenta>"ATTLIST"</font>  <font color=Cyan>`prefixes`</font> s <font color=Red>=</font> emit <font color=Cyan>(</font>TokSpecial ATTLISTx<font color=Cyan>)</font>  p<font color=Red><b>:</b></font> k <font color=Magenta>7</font>+<a name="(line298)"></a>    <font color=Red>|</font> <font color=Magenta>"ENTITY"</font>   <font color=Cyan>`prefixes`</font> s <font color=Red>=</font> emit <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>   p<font color=Red><b>:</b></font> k <font color=Magenta>6</font>+<a name="(line299)"></a>    <font color=Red>|</font> <font color=Magenta>"NOTATION"</font> <font color=Cyan>`prefixes`</font> s <font color=Red>=</font> emit <font color=Cyan>(</font>TokSpecial NOTATIONx<font color=Cyan>)</font> p<font color=Red><b>:</b></font> k <font color=Magenta>8</font>+<a name="(line300)"></a>    <font color=Red>|</font> otherwise <font color=Red>=</font> lexerror+<a name="(line301)"></a>                    <font color=Cyan>(</font><font color=Magenta>"expected DOCTYPE, ELEMENT, ENTITY, ATTLIST, or NOTATION,"</font>+<a name="(line302)"></a>                    <font color=Cyan>++</font><font color=Magenta>" but got "</font><font color=Cyan>++</font>take <font color=Magenta>7</font> s<font color=Cyan>)</font> p+<a name="(line303)"></a>  <font color=Green><u>where</u></font> k n <font color=Red>=</font> skip n p s <font color=Cyan>(</font>blank xmlAny w<font color=Cyan>)</font>+<a name="(line304)"></a>+<a name="(line305)"></a><a name="xmlName"></a>xmlName p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font> cxt k+<a name="(line306)"></a>    <font color=Red>|</font> isAlphaNum s <font color=Cyan>||</font> s<font color=Cyan>==</font><font color=Magenta>':'</font> <font color=Cyan>||</font> s<font color=Cyan>==</font><font color=Magenta>'_'</font>  <font color=Red>=</font> gatherName <font color=Cyan>(</font>s<font color=Red><b>:</b></font>[]<font color=Cyan>)</font> p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line307)"></a>    <font color=Red>|</font> otherwise   <font color=Red>=</font> lexerror <font color=Cyan>(</font><font color=Magenta>"expected a "</font><font color=Cyan>++</font>cxt<font color=Cyan>++</font><font color=Magenta>", but got char "</font><font color=Cyan>++</font>show s<font color=Cyan>)</font> p+<a name="(line308)"></a>  <font color=Green><u>where</u></font>+<a name="(line309)"></a>    gatherName acc pos p [] k <font color=Red>=</font>+<a name="(line310)"></a>        emit <font color=Cyan>(</font>TokName <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> k p []+<a name="(line311)"></a>    <font color=Blue>--  lexerror ("unexpected EOF in name at "++show pos) p</font>+<a name="(line312)"></a>    gatherName acc pos p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font> k+<a name="(line313)"></a>        <font color=Red>|</font> isAlphaNum s <font color=Cyan>||</font> s <font color=Cyan>`elem`</font> <font color=Magenta>".-_:"</font>+<a name="(line314)"></a>                      <font color=Red>=</font> gatherName <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line315)"></a>        <font color=Red>|</font> otherwise   <font color=Red>=</font> emit <font color=Cyan>(</font>TokName <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> k p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line316)"></a>xmlName p [] cxt k <font color=Red>=</font> lexerror <font color=Cyan>(</font><font color=Magenta>"expected a "</font><font color=Cyan>++</font>cxt<font color=Cyan>++</font><font color=Magenta>", but got end of input"</font><font color=Cyan>)</font> p+<a name="(line317)"></a>+<a name="(line318)"></a><a name="xmlContent"></a>xmlContent acc w pos p [] <font color=Red>=</font> <font color=Green><u>if</u></font> all isSpace acc <font color=Green><u>then</u></font> []+<a name="(line319)"></a>                            <font color=Green><u>else</u></font> lexerror <font color=Magenta>"unexpected EOF between tags"</font> p+<a name="(line320)"></a>xmlContent acc w pos p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line321)"></a>    <font color=Red>|</font> elem s <font color=Magenta>"&lt;&amp;"</font>    <font color=Red>=</font> <font color=Blue>{- if all isSpace acc then xmlAny w p (s:ss) else -}</font>+<a name="(line322)"></a>                       emit <font color=Cyan>(</font>TokFreeText <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> xmlAny w p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line323)"></a>    <font color=Red>|</font> isSpace s      <font color=Red>=</font> xmlContent <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> w pos <font color=Cyan>(</font>white s p<font color=Cyan>)</font> ss+<a name="(line324)"></a>    <font color=Red>|</font> otherwise      <font color=Red>=</font> xmlContent <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> w pos <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line325)"></a>+<a name="(line326)"></a>+<a name="(line327)"></a>+<a name="(line328)"></a><font color=Blue>--ident :: (String-&gt;TokenT) -&gt;</font>+<a name="(line329)"></a><font color=Blue>--          Posn -&gt; String -&gt; [String] -&gt;</font>+<a name="(line330)"></a><font color=Blue>--         (Posn-&gt;String-&gt;[String]-&gt;[Token]) -&gt; [Token]</font>+<a name="(line331)"></a><font color=Blue>--ident tok p s ss k =</font>+<a name="(line332)"></a><font color=Blue>--    let (name,s0) = span (\c-&gt; isAlphaNum c || c `elem` "`-_#.'/\\") s</font>+<a name="(line333)"></a><font color=Blue>--    in emit (tok name) p: skip (length name) p s ss k</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/OneOfN.html view
@@ -0,0 +1,667 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>OneOfN <font color=Green><u>where</u></font>+<a name="(line2)"></a>+<a name="(line3)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent+<a name="(line4)"></a>+<a name="(line5)"></a><a name="OneOf2"></a><font color=Green><u>data</u></font> OneOf2 a b+<a name="(line6)"></a>    <font color=Red>=</font> OneOf2 a <font color=Red>|</font> TwoOf2 b+<a name="(line7)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line8)"></a>+<a name="(line9)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>)</font>+<a name="(line10)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf2 a b<font color=Cyan>)</font>+<a name="(line11)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf2"</font> [] []+<a name="(line12)"></a>  <font color=Blue>--         toHType m = Defined "OneOf2" [a,b] []</font>+<a name="(line13)"></a>  <font color=Blue>--            where a = toHType $ (\ (OneOf2 a)-&gt;a) $ m</font>+<a name="(line14)"></a>  <font color=Blue>--                  b = toHType $ (\ (TwoOf2 b)-&gt;b) $ m</font>+<a name="(line15)"></a>+<a name="(line16)"></a>+<a name="(line17)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>)</font>+<a name="(line18)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf2 a b<font color=Cyan>)</font>+<a name="(line19)"></a>  <font color=Green><u>where</u></font>+<a name="(line20)"></a>    parseContents <font color=Red>=</font>+<a name="(line21)"></a>        <font color=Cyan>(</font>choice OneOf2 <font color=Cyan>$</font> choice TwoOf2+<a name="(line22)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf2"</font><font color=Cyan>)</font>+<a name="(line23)"></a>    toContents <font color=Cyan>(</font>OneOf2 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line24)"></a>    toContents <font color=Cyan>(</font>TwoOf2 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line25)"></a>+<a name="(line26)"></a><a name="OneOf3"></a><font color=Blue>----</font>+<a name="(line27)"></a><a name="OneOf3"></a><font color=Green><u>data</u></font> OneOf3 a b c+<a name="(line28)"></a>    <font color=Red>=</font> OneOf3 a <font color=Red>|</font> TwoOf3 b <font color=Red>|</font> ThreeOf3 c+<a name="(line29)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line30)"></a>+<a name="(line31)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>)</font>+<a name="(line32)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf3 a b c<font color=Cyan>)</font>+<a name="(line33)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf3"</font> [] []+<a name="(line34)"></a>+<a name="(line35)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>)</font>+<a name="(line36)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf3 a b c<font color=Cyan>)</font>+<a name="(line37)"></a>  <font color=Green><u>where</u></font>+<a name="(line38)"></a>    parseContents <font color=Red>=</font>+<a name="(line39)"></a>        <font color=Cyan>(</font>choice OneOf3 <font color=Cyan>$</font> choice TwoOf3 <font color=Cyan>$</font> choice ThreeOf3+<a name="(line40)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf3"</font><font color=Cyan>)</font>+<a name="(line41)"></a>    toContents <font color=Cyan>(</font>OneOf3 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line42)"></a>    toContents <font color=Cyan>(</font>TwoOf3 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line43)"></a>    toContents <font color=Cyan>(</font>ThreeOf3 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line44)"></a>+<a name="(line45)"></a><a name="OneOf4"></a><font color=Blue>----</font>+<a name="(line46)"></a><a name="OneOf4"></a><font color=Green><u>data</u></font> OneOf4 a b c d+<a name="(line47)"></a>    <font color=Red>=</font> OneOf4 a <font color=Red>|</font> TwoOf4 b <font color=Red>|</font> ThreeOf4 c <font color=Red>|</font> FourOf4 d+<a name="(line48)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line49)"></a>+<a name="(line50)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>)</font>+<a name="(line51)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf4 a b c d<font color=Cyan>)</font>+<a name="(line52)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf4"</font> [] []+<a name="(line53)"></a>+<a name="(line54)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>)</font>+<a name="(line55)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf4 a b c d<font color=Cyan>)</font>+<a name="(line56)"></a>  <font color=Green><u>where</u></font>+<a name="(line57)"></a>    parseContents <font color=Red>=</font>+<a name="(line58)"></a>        <font color=Cyan>(</font>choice OneOf4 <font color=Cyan>$</font> choice TwoOf4 <font color=Cyan>$</font> choice ThreeOf4 <font color=Cyan>$</font> choice FourOf4+<a name="(line59)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf4"</font><font color=Cyan>)</font>+<a name="(line60)"></a>    toContents <font color=Cyan>(</font>OneOf4 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line61)"></a>    toContents <font color=Cyan>(</font>TwoOf4 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line62)"></a>    toContents <font color=Cyan>(</font>ThreeOf4 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line63)"></a>    toContents <font color=Cyan>(</font>FourOf4 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line64)"></a>+<a name="(line65)"></a><a name="OneOf5"></a><font color=Blue>----</font>+<a name="(line66)"></a><a name="OneOf5"></a><font color=Green><u>data</u></font> OneOf5 a b c d e+<a name="(line67)"></a>    <font color=Red>=</font> OneOf5 a <font color=Red>|</font> TwoOf5 b <font color=Red>|</font> ThreeOf5 c <font color=Red>|</font> FourOf5 d <font color=Red>|</font> FiveOf5 e+<a name="(line68)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line69)"></a>+<a name="(line70)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e<font color=Cyan>)</font>+<a name="(line71)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf5 a b c d e<font color=Cyan>)</font>+<a name="(line72)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf5"</font> [] []+<a name="(line73)"></a>+<a name="(line74)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e<font color=Cyan>)</font>+<a name="(line75)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf5 a b c d e<font color=Cyan>)</font>+<a name="(line76)"></a>  <font color=Green><u>where</u></font>+<a name="(line77)"></a>    parseContents <font color=Red>=</font>+<a name="(line78)"></a>        <font color=Cyan>(</font>choice OneOf5 <font color=Cyan>$</font> choice TwoOf5 <font color=Cyan>$</font> choice ThreeOf5 <font color=Cyan>$</font> choice FourOf5+<a name="(line79)"></a>        <font color=Cyan>$</font> choice FiveOf5+<a name="(line80)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf5"</font><font color=Cyan>)</font>+<a name="(line81)"></a>    toContents <font color=Cyan>(</font>OneOf5 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line82)"></a>    toContents <font color=Cyan>(</font>TwoOf5 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line83)"></a>    toContents <font color=Cyan>(</font>ThreeOf5 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line84)"></a>    toContents <font color=Cyan>(</font>FourOf5 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line85)"></a>    toContents <font color=Cyan>(</font>FiveOf5 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line86)"></a>+<a name="(line87)"></a><a name="OneOf6"></a><font color=Blue>----</font>+<a name="(line88)"></a><a name="OneOf6"></a><font color=Green><u>data</u></font> OneOf6 a b c d e f+<a name="(line89)"></a>    <font color=Red>=</font> OneOf6 a <font color=Red>|</font> TwoOf6 b <font color=Red>|</font> ThreeOf6 c <font color=Red>|</font> FourOf6 d <font color=Red>|</font> FiveOf6 e <font color=Red>|</font> SixOf6 f+<a name="(line90)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line91)"></a>+<a name="(line92)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line93)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>)</font>+<a name="(line94)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf6 a b c d e f<font color=Cyan>)</font>+<a name="(line95)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf6"</font> [] []+<a name="(line96)"></a>+<a name="(line97)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line98)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>)</font>+<a name="(line99)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf6 a b c d e f<font color=Cyan>)</font>+<a name="(line100)"></a>  <font color=Green><u>where</u></font>+<a name="(line101)"></a>    parseContents <font color=Red>=</font>+<a name="(line102)"></a>        <font color=Cyan>(</font>choice OneOf6 <font color=Cyan>$</font> choice TwoOf6 <font color=Cyan>$</font> choice ThreeOf6 <font color=Cyan>$</font> choice FourOf6+<a name="(line103)"></a>        <font color=Cyan>$</font> choice FiveOf6 <font color=Cyan>$</font> choice SixOf6+<a name="(line104)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf6"</font><font color=Cyan>)</font>+<a name="(line105)"></a>    toContents <font color=Cyan>(</font>OneOf6 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line106)"></a>    toContents <font color=Cyan>(</font>TwoOf6 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line107)"></a>    toContents <font color=Cyan>(</font>ThreeOf6 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line108)"></a>    toContents <font color=Cyan>(</font>FourOf6 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line109)"></a>    toContents <font color=Cyan>(</font>FiveOf6 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line110)"></a>    toContents <font color=Cyan>(</font>SixOf6 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line111)"></a>+<a name="(line112)"></a><a name="OneOf7"></a><font color=Blue>----</font>+<a name="(line113)"></a><a name="OneOf7"></a><font color=Green><u>data</u></font> OneOf7 a b c d e f g+<a name="(line114)"></a>    <font color=Red>=</font> OneOf7 a <font color=Red>|</font> TwoOf7 b <font color=Red>|</font> ThreeOf7 c <font color=Red>|</font> FourOf7 d <font color=Red>|</font> FiveOf7 e <font color=Red>|</font> SixOf7 f+<a name="(line115)"></a>    <font color=Red>|</font> SevenOf7 g+<a name="(line116)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line117)"></a>+<a name="(line118)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line119)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>)</font>+<a name="(line120)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf7 a b c d e f g<font color=Cyan>)</font>+<a name="(line121)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf7"</font> [] []+<a name="(line122)"></a>+<a name="(line123)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line124)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>)</font>+<a name="(line125)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf7 a b c d e f g<font color=Cyan>)</font>+<a name="(line126)"></a>  <font color=Green><u>where</u></font>+<a name="(line127)"></a>    parseContents <font color=Red>=</font>+<a name="(line128)"></a>        <font color=Cyan>(</font>choice OneOf7 <font color=Cyan>$</font> choice TwoOf7 <font color=Cyan>$</font> choice ThreeOf7 <font color=Cyan>$</font> choice FourOf7+<a name="(line129)"></a>        <font color=Cyan>$</font> choice FiveOf7 <font color=Cyan>$</font> choice SixOf7 <font color=Cyan>$</font> choice SevenOf7+<a name="(line130)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf7"</font><font color=Cyan>)</font>+<a name="(line131)"></a>    toContents <font color=Cyan>(</font>OneOf7 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line132)"></a>    toContents <font color=Cyan>(</font>TwoOf7 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line133)"></a>    toContents <font color=Cyan>(</font>ThreeOf7 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line134)"></a>    toContents <font color=Cyan>(</font>FourOf7 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line135)"></a>    toContents <font color=Cyan>(</font>FiveOf7 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line136)"></a>    toContents <font color=Cyan>(</font>SixOf7 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line137)"></a>    toContents <font color=Cyan>(</font>SevenOf7 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line138)"></a>+<a name="(line139)"></a><a name="OneOf8"></a><font color=Blue>----</font>+<a name="(line140)"></a><a name="OneOf8"></a><font color=Green><u>data</u></font> OneOf8 a b c d e f g h+<a name="(line141)"></a>    <font color=Red>=</font> OneOf8 a <font color=Red>|</font> TwoOf8 b <font color=Red>|</font> ThreeOf8 c <font color=Red>|</font> FourOf8 d <font color=Red>|</font> FiveOf8 e <font color=Red>|</font> SixOf8 f+<a name="(line142)"></a>    <font color=Red>|</font> SevenOf8 g <font color=Red>|</font> EightOf8 h+<a name="(line143)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line144)"></a>+<a name="(line145)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line146)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>)</font>+<a name="(line147)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf8 a b c d e f g h<font color=Cyan>)</font>+<a name="(line148)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf8"</font> [] []+<a name="(line149)"></a>+<a name="(line150)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line151)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>)</font>+<a name="(line152)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf8 a b c d e f g h<font color=Cyan>)</font>+<a name="(line153)"></a>  <font color=Green><u>where</u></font>+<a name="(line154)"></a>    parseContents <font color=Red>=</font>+<a name="(line155)"></a>        <font color=Cyan>(</font>choice OneOf8 <font color=Cyan>$</font> choice TwoOf8 <font color=Cyan>$</font> choice ThreeOf8 <font color=Cyan>$</font> choice FourOf8+<a name="(line156)"></a>        <font color=Cyan>$</font> choice FiveOf8 <font color=Cyan>$</font> choice SixOf8 <font color=Cyan>$</font> choice SevenOf8 <font color=Cyan>$</font> choice EightOf8+<a name="(line157)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf8"</font><font color=Cyan>)</font>+<a name="(line158)"></a>    toContents <font color=Cyan>(</font>OneOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line159)"></a>    toContents <font color=Cyan>(</font>TwoOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line160)"></a>    toContents <font color=Cyan>(</font>ThreeOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line161)"></a>    toContents <font color=Cyan>(</font>FourOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line162)"></a>    toContents <font color=Cyan>(</font>FiveOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line163)"></a>    toContents <font color=Cyan>(</font>SixOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line164)"></a>    toContents <font color=Cyan>(</font>SevenOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line165)"></a>    toContents <font color=Cyan>(</font>EightOf8 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line166)"></a>+<a name="(line167)"></a><a name="OneOf9"></a><font color=Blue>----</font>+<a name="(line168)"></a><a name="OneOf9"></a><font color=Green><u>data</u></font> OneOf9 a b c d e f g h i+<a name="(line169)"></a>    <font color=Red>=</font> OneOf9 a <font color=Red>|</font> TwoOf9 b <font color=Red>|</font> ThreeOf9 c <font color=Red>|</font> FourOf9 d <font color=Red>|</font> FiveOf9 e <font color=Red>|</font> SixOf9 f+<a name="(line170)"></a>    <font color=Red>|</font> SevenOf9 g <font color=Red>|</font> EightOf9 h <font color=Red>|</font> NineOf9 i+<a name="(line171)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line172)"></a>+<a name="(line173)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line174)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>)</font>+<a name="(line175)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf9 a b c d e f g h i<font color=Cyan>)</font>+<a name="(line176)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf9"</font> [] []+<a name="(line177)"></a>+<a name="(line178)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line179)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>)</font>+<a name="(line180)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf9 a b c d e f g h i<font color=Cyan>)</font>+<a name="(line181)"></a>  <font color=Green><u>where</u></font>+<a name="(line182)"></a>    parseContents <font color=Red>=</font>+<a name="(line183)"></a>        <font color=Cyan>(</font>choice OneOf9 <font color=Cyan>$</font> choice TwoOf9 <font color=Cyan>$</font> choice ThreeOf9 <font color=Cyan>$</font> choice FourOf9+<a name="(line184)"></a>        <font color=Cyan>$</font> choice FiveOf9 <font color=Cyan>$</font> choice SixOf9 <font color=Cyan>$</font> choice SevenOf9 <font color=Cyan>$</font> choice EightOf9+<a name="(line185)"></a>        <font color=Cyan>$</font> choice NineOf9+<a name="(line186)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf9"</font><font color=Cyan>)</font>+<a name="(line187)"></a>    toContents <font color=Cyan>(</font>OneOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line188)"></a>    toContents <font color=Cyan>(</font>TwoOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line189)"></a>    toContents <font color=Cyan>(</font>ThreeOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line190)"></a>    toContents <font color=Cyan>(</font>FourOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line191)"></a>    toContents <font color=Cyan>(</font>FiveOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line192)"></a>    toContents <font color=Cyan>(</font>SixOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line193)"></a>    toContents <font color=Cyan>(</font>SevenOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line194)"></a>    toContents <font color=Cyan>(</font>EightOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line195)"></a>    toContents <font color=Cyan>(</font>NineOf9 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line196)"></a>+<a name="(line197)"></a><a name="OneOf10"></a><font color=Blue>----</font>+<a name="(line198)"></a><a name="OneOf10"></a><font color=Green><u>data</u></font> OneOf10 a b c d e f g h i j+<a name="(line199)"></a>    <font color=Red>=</font> OneOf10 a <font color=Red>|</font> TwoOf10 b <font color=Red>|</font> ThreeOf10 c <font color=Red>|</font> FourOf10 d <font color=Red>|</font> FiveOf10 e+<a name="(line200)"></a>    <font color=Red>|</font> SixOf10 f <font color=Red>|</font> SevenOf10 g <font color=Red>|</font> EightOf10 h <font color=Red>|</font> NineOf10 i <font color=Red>|</font> TenOf10 j+<a name="(line201)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line202)"></a>+<a name="(line203)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line204)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j<font color=Cyan>)</font>+<a name="(line205)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf10 a b c d e f g h i j<font color=Cyan>)</font>+<a name="(line206)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf10"</font> [] []+<a name="(line207)"></a>+<a name="(line208)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line209)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j<font color=Cyan>)</font>+<a name="(line210)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf10 a b c d e f g h i j<font color=Cyan>)</font>+<a name="(line211)"></a>  <font color=Green><u>where</u></font>+<a name="(line212)"></a>    parseContents <font color=Red>=</font>+<a name="(line213)"></a>        <font color=Cyan>(</font>choice OneOf10 <font color=Cyan>$</font> choice TwoOf10 <font color=Cyan>$</font> choice ThreeOf10 <font color=Cyan>$</font> choice FourOf10+<a name="(line214)"></a>        <font color=Cyan>$</font> choice FiveOf10 <font color=Cyan>$</font> choice SixOf10 <font color=Cyan>$</font> choice SevenOf10+<a name="(line215)"></a>        <font color=Cyan>$</font> choice EightOf10 <font color=Cyan>$</font> choice NineOf10 <font color=Cyan>$</font> choice TenOf10+<a name="(line216)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf10"</font><font color=Cyan>)</font>+<a name="(line217)"></a>    toContents <font color=Cyan>(</font>OneOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line218)"></a>    toContents <font color=Cyan>(</font>TwoOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line219)"></a>    toContents <font color=Cyan>(</font>ThreeOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line220)"></a>    toContents <font color=Cyan>(</font>FourOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line221)"></a>    toContents <font color=Cyan>(</font>FiveOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line222)"></a>    toContents <font color=Cyan>(</font>SixOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line223)"></a>    toContents <font color=Cyan>(</font>SevenOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line224)"></a>    toContents <font color=Cyan>(</font>EightOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line225)"></a>    toContents <font color=Cyan>(</font>NineOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line226)"></a>    toContents <font color=Cyan>(</font>TenOf10 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line227)"></a>+<a name="(line228)"></a><a name="OneOf11"></a><font color=Blue>----</font>+<a name="(line229)"></a><a name="OneOf11"></a><font color=Green><u>data</u></font> OneOf11 a b c d e f g h i j k+<a name="(line230)"></a>    <font color=Red>=</font> OneOf11 a <font color=Red>|</font> TwoOf11 b <font color=Red>|</font> ThreeOf11 c <font color=Red>|</font> FourOf11 d <font color=Red>|</font> FiveOf11 e+<a name="(line231)"></a>    <font color=Red>|</font> SixOf11 f <font color=Red>|</font> SevenOf11 g <font color=Red>|</font> EightOf11 h <font color=Red>|</font> NineOf11 i <font color=Red>|</font> TenOf11 j+<a name="(line232)"></a>    <font color=Red>|</font> ElevenOf11 k+<a name="(line233)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line234)"></a>+<a name="(line235)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line236)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line237)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>)</font>+<a name="(line238)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf11 a b c d e f g h i j k<font color=Cyan>)</font>+<a name="(line239)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf11"</font> [] []+<a name="(line240)"></a>+<a name="(line241)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line242)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line243)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>)</font>+<a name="(line244)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf11 a b c d e f g h i j k<font color=Cyan>)</font>+<a name="(line245)"></a>  <font color=Green><u>where</u></font>+<a name="(line246)"></a>    parseContents <font color=Red>=</font>+<a name="(line247)"></a>        <font color=Cyan>(</font>choice OneOf11 <font color=Cyan>$</font> choice TwoOf11 <font color=Cyan>$</font> choice ThreeOf11 <font color=Cyan>$</font> choice FourOf11+<a name="(line248)"></a>        <font color=Cyan>$</font> choice FiveOf11 <font color=Cyan>$</font> choice SixOf11 <font color=Cyan>$</font> choice SevenOf11+<a name="(line249)"></a>        <font color=Cyan>$</font> choice EightOf11 <font color=Cyan>$</font> choice NineOf11 <font color=Cyan>$</font> choice TenOf11+<a name="(line250)"></a>        <font color=Cyan>$</font> choice ElevenOf11+<a name="(line251)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf11"</font><font color=Cyan>)</font>+<a name="(line252)"></a>    toContents <font color=Cyan>(</font>OneOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line253)"></a>    toContents <font color=Cyan>(</font>TwoOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line254)"></a>    toContents <font color=Cyan>(</font>ThreeOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line255)"></a>    toContents <font color=Cyan>(</font>FourOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line256)"></a>    toContents <font color=Cyan>(</font>FiveOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line257)"></a>    toContents <font color=Cyan>(</font>SixOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line258)"></a>    toContents <font color=Cyan>(</font>SevenOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line259)"></a>    toContents <font color=Cyan>(</font>EightOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line260)"></a>    toContents <font color=Cyan>(</font>NineOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line261)"></a>    toContents <font color=Cyan>(</font>TenOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line262)"></a>    toContents <font color=Cyan>(</font>ElevenOf11 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line263)"></a>+<a name="(line264)"></a><a name="OneOf12"></a><font color=Blue>----</font>+<a name="(line265)"></a><a name="OneOf12"></a><font color=Green><u>data</u></font> OneOf12 a b c d e f g h i j k l+<a name="(line266)"></a>    <font color=Red>=</font> OneOf12 a <font color=Red>|</font> TwoOf12 b <font color=Red>|</font> ThreeOf12 c <font color=Red>|</font> FourOf12 d <font color=Red>|</font> FiveOf12 e+<a name="(line267)"></a>    <font color=Red>|</font> SixOf12 f <font color=Red>|</font> SevenOf12 g <font color=Red>|</font> EightOf12 h <font color=Red>|</font> NineOf12 i <font color=Red>|</font> TenOf12 j+<a name="(line268)"></a>    <font color=Red>|</font> ElevenOf12 k <font color=Red>|</font> TwelveOf12 l+<a name="(line269)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line270)"></a>+<a name="(line271)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line272)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line273)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>)</font>+<a name="(line274)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf12 a b c d e f g h i j k l<font color=Cyan>)</font>+<a name="(line275)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf12"</font> [] []+<a name="(line276)"></a>+<a name="(line277)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line278)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line279)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>)</font>+<a name="(line280)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf12 a b c d e f g h i j k l<font color=Cyan>)</font>+<a name="(line281)"></a>  <font color=Green><u>where</u></font>+<a name="(line282)"></a>    parseContents <font color=Red>=</font>+<a name="(line283)"></a>        <font color=Cyan>(</font>choice OneOf12 <font color=Cyan>$</font> choice TwoOf12 <font color=Cyan>$</font> choice ThreeOf12 <font color=Cyan>$</font> choice FourOf12+<a name="(line284)"></a>        <font color=Cyan>$</font> choice FiveOf12 <font color=Cyan>$</font> choice SixOf12 <font color=Cyan>$</font> choice SevenOf12+<a name="(line285)"></a>        <font color=Cyan>$</font> choice EightOf12 <font color=Cyan>$</font> choice NineOf12 <font color=Cyan>$</font> choice TenOf12+<a name="(line286)"></a>        <font color=Cyan>$</font> choice ElevenOf12 <font color=Cyan>$</font> choice TwelveOf12+<a name="(line287)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf12"</font><font color=Cyan>)</font>+<a name="(line288)"></a>    toContents <font color=Cyan>(</font>OneOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line289)"></a>    toContents <font color=Cyan>(</font>TwoOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line290)"></a>    toContents <font color=Cyan>(</font>ThreeOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line291)"></a>    toContents <font color=Cyan>(</font>FourOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line292)"></a>    toContents <font color=Cyan>(</font>FiveOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line293)"></a>    toContents <font color=Cyan>(</font>SixOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line294)"></a>    toContents <font color=Cyan>(</font>SevenOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line295)"></a>    toContents <font color=Cyan>(</font>EightOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line296)"></a>    toContents <font color=Cyan>(</font>NineOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line297)"></a>    toContents <font color=Cyan>(</font>TenOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line298)"></a>    toContents <font color=Cyan>(</font>ElevenOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line299)"></a>    toContents <font color=Cyan>(</font>TwelveOf12 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line300)"></a>+<a name="(line301)"></a><a name="OneOf13"></a><font color=Blue>----</font>+<a name="(line302)"></a><a name="OneOf13"></a><font color=Green><u>data</u></font> OneOf13 a b c d e f g h i j k l m+<a name="(line303)"></a>    <font color=Red>=</font> OneOf13 a <font color=Red>|</font> TwoOf13 b <font color=Red>|</font> ThreeOf13 c <font color=Red>|</font> FourOf13 d <font color=Red>|</font> FiveOf13 e+<a name="(line304)"></a>    <font color=Red>|</font> SixOf13 f <font color=Red>|</font> SevenOf13 g <font color=Red>|</font> EightOf13 h <font color=Red>|</font> NineOf13 i <font color=Red>|</font> TenOf13 j+<a name="(line305)"></a>    <font color=Red>|</font> ElevenOf13 k <font color=Red>|</font> TwelveOf13 l <font color=Red>|</font> ThirteenOf13 m+<a name="(line306)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line307)"></a>+<a name="(line308)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line309)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line310)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>)</font>+<a name="(line311)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf13 a b c d e f g h i j k l m<font color=Cyan>)</font>+<a name="(line312)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf13"</font> [] []+<a name="(line313)"></a>+<a name="(line314)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line315)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line316)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>)</font>+<a name="(line317)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf13 a b c d e f g h i j k l m<font color=Cyan>)</font>+<a name="(line318)"></a>  <font color=Green><u>where</u></font>+<a name="(line319)"></a>    parseContents <font color=Red>=</font>+<a name="(line320)"></a>        <font color=Cyan>(</font>choice OneOf13 <font color=Cyan>$</font> choice TwoOf13 <font color=Cyan>$</font> choice ThreeOf13 <font color=Cyan>$</font> choice FourOf13+<a name="(line321)"></a>        <font color=Cyan>$</font> choice FiveOf13 <font color=Cyan>$</font> choice SixOf13 <font color=Cyan>$</font> choice SevenOf13+<a name="(line322)"></a>        <font color=Cyan>$</font> choice EightOf13 <font color=Cyan>$</font> choice NineOf13 <font color=Cyan>$</font> choice TenOf13+<a name="(line323)"></a>        <font color=Cyan>$</font> choice ElevenOf13 <font color=Cyan>$</font> choice TwelveOf13 <font color=Cyan>$</font> choice ThirteenOf13+<a name="(line324)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf13"</font><font color=Cyan>)</font>+<a name="(line325)"></a>    toContents <font color=Cyan>(</font>OneOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line326)"></a>    toContents <font color=Cyan>(</font>TwoOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line327)"></a>    toContents <font color=Cyan>(</font>ThreeOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line328)"></a>    toContents <font color=Cyan>(</font>FourOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line329)"></a>    toContents <font color=Cyan>(</font>FiveOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line330)"></a>    toContents <font color=Cyan>(</font>SixOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line331)"></a>    toContents <font color=Cyan>(</font>SevenOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line332)"></a>    toContents <font color=Cyan>(</font>EightOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line333)"></a>    toContents <font color=Cyan>(</font>NineOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line334)"></a>    toContents <font color=Cyan>(</font>TenOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line335)"></a>    toContents <font color=Cyan>(</font>ElevenOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line336)"></a>    toContents <font color=Cyan>(</font>TwelveOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line337)"></a>    toContents <font color=Cyan>(</font>ThirteenOf13 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line338)"></a>+<a name="(line339)"></a><a name="OneOf14"></a><font color=Blue>----</font>+<a name="(line340)"></a><a name="OneOf14"></a><font color=Green><u>data</u></font> OneOf14 a b c d e f g h i j k l m n+<a name="(line341)"></a>    <font color=Red>=</font> OneOf14 a <font color=Red>|</font> TwoOf14 b <font color=Red>|</font> ThreeOf14 c <font color=Red>|</font> FourOf14 d <font color=Red>|</font> FiveOf14 e+<a name="(line342)"></a>    <font color=Red>|</font> SixOf14 f <font color=Red>|</font> SevenOf14 g <font color=Red>|</font> EightOf14 h <font color=Red>|</font> NineOf14 i <font color=Red>|</font> TenOf14 j+<a name="(line343)"></a>    <font color=Red>|</font> ElevenOf14 k <font color=Red>|</font> TwelveOf14 l <font color=Red>|</font> ThirteenOf14 m <font color=Red>|</font> FourteenOf14 n+<a name="(line344)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line345)"></a>+<a name="(line346)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line347)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line348)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>,</font>HTypeable n<font color=Cyan>)</font>+<a name="(line349)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf14 a b c d e f g h i j k l m n<font color=Cyan>)</font>+<a name="(line350)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf14"</font> [] []+<a name="(line351)"></a>+<a name="(line352)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line353)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line354)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>,</font>XmlContent n<font color=Cyan>)</font>+<a name="(line355)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf14 a b c d e f g h i j k l m n<font color=Cyan>)</font>+<a name="(line356)"></a>  <font color=Green><u>where</u></font>+<a name="(line357)"></a>    parseContents <font color=Red>=</font>+<a name="(line358)"></a>        <font color=Cyan>(</font>choice OneOf14 <font color=Cyan>$</font> choice TwoOf14 <font color=Cyan>$</font> choice ThreeOf14 <font color=Cyan>$</font> choice FourOf14+<a name="(line359)"></a>        <font color=Cyan>$</font> choice FiveOf14 <font color=Cyan>$</font> choice SixOf14 <font color=Cyan>$</font> choice SevenOf14+<a name="(line360)"></a>        <font color=Cyan>$</font> choice EightOf14 <font color=Cyan>$</font> choice NineOf14 <font color=Cyan>$</font> choice TenOf14+<a name="(line361)"></a>        <font color=Cyan>$</font> choice ElevenOf14 <font color=Cyan>$</font> choice TwelveOf14 <font color=Cyan>$</font> choice ThirteenOf14+<a name="(line362)"></a>        <font color=Cyan>$</font> choice FourteenOf14+<a name="(line363)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf14"</font><font color=Cyan>)</font>+<a name="(line364)"></a>    toContents <font color=Cyan>(</font>OneOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line365)"></a>    toContents <font color=Cyan>(</font>TwoOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line366)"></a>    toContents <font color=Cyan>(</font>ThreeOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line367)"></a>    toContents <font color=Cyan>(</font>FourOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line368)"></a>    toContents <font color=Cyan>(</font>FiveOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line369)"></a>    toContents <font color=Cyan>(</font>SixOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line370)"></a>    toContents <font color=Cyan>(</font>SevenOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line371)"></a>    toContents <font color=Cyan>(</font>EightOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line372)"></a>    toContents <font color=Cyan>(</font>NineOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line373)"></a>    toContents <font color=Cyan>(</font>TenOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line374)"></a>    toContents <font color=Cyan>(</font>ElevenOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line375)"></a>    toContents <font color=Cyan>(</font>TwelveOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line376)"></a>    toContents <font color=Cyan>(</font>ThirteenOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line377)"></a>    toContents <font color=Cyan>(</font>FourteenOf14 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line378)"></a>+<a name="(line379)"></a><a name="OneOf15"></a><font color=Blue>----</font>+<a name="(line380)"></a><a name="OneOf15"></a><font color=Green><u>data</u></font> OneOf15 a b c d e f g h i j k l m n o+<a name="(line381)"></a>    <font color=Red>=</font> OneOf15 a <font color=Red>|</font> TwoOf15 b <font color=Red>|</font> ThreeOf15 c <font color=Red>|</font> FourOf15 d <font color=Red>|</font> FiveOf15 e+<a name="(line382)"></a>    <font color=Red>|</font> SixOf15 f <font color=Red>|</font> SevenOf15 g <font color=Red>|</font> EightOf15 h <font color=Red>|</font> NineOf15 i <font color=Red>|</font> TenOf15 j+<a name="(line383)"></a>    <font color=Red>|</font> ElevenOf15 k <font color=Red>|</font> TwelveOf15 l <font color=Red>|</font> ThirteenOf15 m <font color=Red>|</font> FourteenOf15 n+<a name="(line384)"></a>    <font color=Red>|</font> FifteenOf15 o+<a name="(line385)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line386)"></a>+<a name="(line387)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line388)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line389)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>,</font>HTypeable n<font color=Cyan>,</font>HTypeable o<font color=Cyan>)</font>+<a name="(line390)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf15 a b c d e f g h i j k l m n o<font color=Cyan>)</font>+<a name="(line391)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf15"</font> [] []+<a name="(line392)"></a>+<a name="(line393)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line394)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line395)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>,</font>XmlContent n<font color=Cyan>,</font>XmlContent o<font color=Cyan>)</font>+<a name="(line396)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf15 a b c d e f g h i j k l m n o<font color=Cyan>)</font>+<a name="(line397)"></a>  <font color=Green><u>where</u></font>+<a name="(line398)"></a>    parseContents <font color=Red>=</font>+<a name="(line399)"></a>        <font color=Cyan>(</font>choice OneOf15 <font color=Cyan>$</font> choice TwoOf15 <font color=Cyan>$</font> choice ThreeOf15 <font color=Cyan>$</font> choice FourOf15+<a name="(line400)"></a>        <font color=Cyan>$</font> choice FiveOf15 <font color=Cyan>$</font> choice SixOf15 <font color=Cyan>$</font> choice SevenOf15+<a name="(line401)"></a>        <font color=Cyan>$</font> choice EightOf15 <font color=Cyan>$</font> choice NineOf15 <font color=Cyan>$</font> choice TenOf15+<a name="(line402)"></a>        <font color=Cyan>$</font> choice ElevenOf15 <font color=Cyan>$</font> choice TwelveOf15 <font color=Cyan>$</font> choice ThirteenOf15+<a name="(line403)"></a>        <font color=Cyan>$</font> choice FourteenOf15 <font color=Cyan>$</font> choice FifteenOf15+<a name="(line404)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf15"</font><font color=Cyan>)</font>+<a name="(line405)"></a>    toContents <font color=Cyan>(</font>OneOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line406)"></a>    toContents <font color=Cyan>(</font>TwoOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line407)"></a>    toContents <font color=Cyan>(</font>ThreeOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line408)"></a>    toContents <font color=Cyan>(</font>FourOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line409)"></a>    toContents <font color=Cyan>(</font>FiveOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line410)"></a>    toContents <font color=Cyan>(</font>SixOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line411)"></a>    toContents <font color=Cyan>(</font>SevenOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line412)"></a>    toContents <font color=Cyan>(</font>EightOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line413)"></a>    toContents <font color=Cyan>(</font>NineOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line414)"></a>    toContents <font color=Cyan>(</font>TenOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line415)"></a>    toContents <font color=Cyan>(</font>ElevenOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line416)"></a>    toContents <font color=Cyan>(</font>TwelveOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line417)"></a>    toContents <font color=Cyan>(</font>ThirteenOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line418)"></a>    toContents <font color=Cyan>(</font>FourteenOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line419)"></a>    toContents <font color=Cyan>(</font>FifteenOf15 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line420)"></a>+<a name="(line421)"></a><a name="OneOf16"></a><font color=Blue>----</font>+<a name="(line422)"></a><a name="OneOf16"></a><font color=Green><u>data</u></font> OneOf16 a b c d e f g h i j k l m n o p+<a name="(line423)"></a>    <font color=Red>=</font> OneOf16 a <font color=Red>|</font> TwoOf16 b <font color=Red>|</font> ThreeOf16 c <font color=Red>|</font> FourOf16 d <font color=Red>|</font> FiveOf16 e+<a name="(line424)"></a>    <font color=Red>|</font> SixOf16 f <font color=Red>|</font> SevenOf16 g <font color=Red>|</font> EightOf16 h <font color=Red>|</font> NineOf16 i <font color=Red>|</font> TenOf16 j+<a name="(line425)"></a>    <font color=Red>|</font> ElevenOf16 k <font color=Red>|</font> TwelveOf16 l <font color=Red>|</font> ThirteenOf16 m <font color=Red>|</font> FourteenOf16 n+<a name="(line426)"></a>    <font color=Red>|</font> FifteenOf16 o <font color=Red>|</font> SixteenOf16 p+<a name="(line427)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line428)"></a>+<a name="(line429)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line430)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line431)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>,</font>HTypeable n<font color=Cyan>,</font>HTypeable o+<a name="(line432)"></a>          <font color=Cyan>,</font>HTypeable p<font color=Cyan>)</font>+<a name="(line433)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf16 a b c d e f g h i j k l m n o p<font color=Cyan>)</font>+<a name="(line434)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf16"</font> [] []+<a name="(line435)"></a>+<a name="(line436)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line437)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line438)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>,</font>XmlContent n<font color=Cyan>,</font>XmlContent o+<a name="(line439)"></a>          <font color=Cyan>,</font>XmlContent p<font color=Cyan>)</font>+<a name="(line440)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf16 a b c d e f g h i j k l m n o p<font color=Cyan>)</font>+<a name="(line441)"></a>  <font color=Green><u>where</u></font>+<a name="(line442)"></a>    parseContents <font color=Red>=</font>+<a name="(line443)"></a>        <font color=Cyan>(</font>choice OneOf16 <font color=Cyan>$</font> choice TwoOf16 <font color=Cyan>$</font> choice ThreeOf16 <font color=Cyan>$</font> choice FourOf16+<a name="(line444)"></a>        <font color=Cyan>$</font> choice FiveOf16 <font color=Cyan>$</font> choice SixOf16 <font color=Cyan>$</font> choice SevenOf16+<a name="(line445)"></a>        <font color=Cyan>$</font> choice EightOf16 <font color=Cyan>$</font> choice NineOf16 <font color=Cyan>$</font> choice TenOf16+<a name="(line446)"></a>        <font color=Cyan>$</font> choice ElevenOf16 <font color=Cyan>$</font> choice TwelveOf16 <font color=Cyan>$</font> choice ThirteenOf16+<a name="(line447)"></a>        <font color=Cyan>$</font> choice FourteenOf16 <font color=Cyan>$</font> choice FifteenOf16 <font color=Cyan>$</font> choice SixteenOf16+<a name="(line448)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf16"</font><font color=Cyan>)</font>+<a name="(line449)"></a>    toContents <font color=Cyan>(</font>OneOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line450)"></a>    toContents <font color=Cyan>(</font>TwoOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line451)"></a>    toContents <font color=Cyan>(</font>ThreeOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line452)"></a>    toContents <font color=Cyan>(</font>FourOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line453)"></a>    toContents <font color=Cyan>(</font>FiveOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line454)"></a>    toContents <font color=Cyan>(</font>SixOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line455)"></a>    toContents <font color=Cyan>(</font>SevenOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line456)"></a>    toContents <font color=Cyan>(</font>EightOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line457)"></a>    toContents <font color=Cyan>(</font>NineOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line458)"></a>    toContents <font color=Cyan>(</font>TenOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line459)"></a>    toContents <font color=Cyan>(</font>ElevenOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line460)"></a>    toContents <font color=Cyan>(</font>TwelveOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line461)"></a>    toContents <font color=Cyan>(</font>ThirteenOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line462)"></a>    toContents <font color=Cyan>(</font>FourteenOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line463)"></a>    toContents <font color=Cyan>(</font>FifteenOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line464)"></a>    toContents <font color=Cyan>(</font>SixteenOf16 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line465)"></a>+<a name="(line466)"></a><a name="OneOf17"></a><font color=Blue>----</font>+<a name="(line467)"></a><a name="OneOf17"></a><font color=Green><u>data</u></font> OneOf17 a b c d e f g h i j k l m n o p q+<a name="(line468)"></a>    <font color=Red>=</font> OneOf17 a <font color=Red>|</font> TwoOf17 b <font color=Red>|</font> ThreeOf17 c <font color=Red>|</font> FourOf17 d <font color=Red>|</font> FiveOf17 e+<a name="(line469)"></a>    <font color=Red>|</font> SixOf17 f <font color=Red>|</font> SevenOf17 g <font color=Red>|</font> EightOf17 h <font color=Red>|</font> NineOf17 i <font color=Red>|</font> TenOf17 j+<a name="(line470)"></a>    <font color=Red>|</font> ElevenOf17 k <font color=Red>|</font> TwelveOf17 l <font color=Red>|</font> ThirteenOf17 m <font color=Red>|</font> FourteenOf17 n+<a name="(line471)"></a>    <font color=Red>|</font> FifteenOf17 o <font color=Red>|</font> SixteenOf17 p <font color=Red>|</font> SeventeenOf17 q+<a name="(line472)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line473)"></a>+<a name="(line474)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line475)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line476)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>,</font>HTypeable n<font color=Cyan>,</font>HTypeable o+<a name="(line477)"></a>          <font color=Cyan>,</font>HTypeable p<font color=Cyan>,</font>HTypeable q<font color=Cyan>)</font>+<a name="(line478)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf17 a b c d e f g h i j k l m n o p q<font color=Cyan>)</font>+<a name="(line479)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf17"</font> [] []+<a name="(line480)"></a>+<a name="(line481)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line482)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line483)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>,</font>XmlContent n<font color=Cyan>,</font>XmlContent o+<a name="(line484)"></a>          <font color=Cyan>,</font>XmlContent p<font color=Cyan>,</font>XmlContent q<font color=Cyan>)</font>+<a name="(line485)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf17 a b c d e f g h i j k l m n o p q<font color=Cyan>)</font>+<a name="(line486)"></a>  <font color=Green><u>where</u></font>+<a name="(line487)"></a>    parseContents <font color=Red>=</font>+<a name="(line488)"></a>        <font color=Cyan>(</font>choice OneOf17 <font color=Cyan>$</font> choice TwoOf17 <font color=Cyan>$</font> choice ThreeOf17 <font color=Cyan>$</font> choice FourOf17+<a name="(line489)"></a>        <font color=Cyan>$</font> choice FiveOf17 <font color=Cyan>$</font> choice SixOf17 <font color=Cyan>$</font> choice SevenOf17+<a name="(line490)"></a>        <font color=Cyan>$</font> choice EightOf17 <font color=Cyan>$</font> choice NineOf17 <font color=Cyan>$</font> choice TenOf17+<a name="(line491)"></a>        <font color=Cyan>$</font> choice ElevenOf17 <font color=Cyan>$</font> choice TwelveOf17 <font color=Cyan>$</font> choice ThirteenOf17+<a name="(line492)"></a>        <font color=Cyan>$</font> choice FourteenOf17 <font color=Cyan>$</font> choice FifteenOf17 <font color=Cyan>$</font> choice SixteenOf17+<a name="(line493)"></a>        <font color=Cyan>$</font> choice SeventeenOf17+<a name="(line494)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf17"</font><font color=Cyan>)</font>+<a name="(line495)"></a>    toContents <font color=Cyan>(</font>OneOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line496)"></a>    toContents <font color=Cyan>(</font>TwoOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line497)"></a>    toContents <font color=Cyan>(</font>ThreeOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line498)"></a>    toContents <font color=Cyan>(</font>FourOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line499)"></a>    toContents <font color=Cyan>(</font>FiveOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line500)"></a>    toContents <font color=Cyan>(</font>SixOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line501)"></a>    toContents <font color=Cyan>(</font>SevenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line502)"></a>    toContents <font color=Cyan>(</font>EightOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line503)"></a>    toContents <font color=Cyan>(</font>NineOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line504)"></a>    toContents <font color=Cyan>(</font>TenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line505)"></a>    toContents <font color=Cyan>(</font>ElevenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line506)"></a>    toContents <font color=Cyan>(</font>TwelveOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line507)"></a>    toContents <font color=Cyan>(</font>ThirteenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line508)"></a>    toContents <font color=Cyan>(</font>FourteenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line509)"></a>    toContents <font color=Cyan>(</font>FifteenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line510)"></a>    toContents <font color=Cyan>(</font>SixteenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line511)"></a>    toContents <font color=Cyan>(</font>SeventeenOf17 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line512)"></a>+<a name="(line513)"></a><a name="OneOf18"></a><font color=Blue>----</font>+<a name="(line514)"></a><a name="OneOf18"></a><font color=Green><u>data</u></font> OneOf18 a b c d e f g h i j k l m n o p q r+<a name="(line515)"></a>    <font color=Red>=</font> OneOf18 a <font color=Red>|</font> TwoOf18 b <font color=Red>|</font> ThreeOf18 c <font color=Red>|</font> FourOf18 d <font color=Red>|</font> FiveOf18 e+<a name="(line516)"></a>    <font color=Red>|</font> SixOf18 f <font color=Red>|</font> SevenOf18 g <font color=Red>|</font> EightOf18 h <font color=Red>|</font> NineOf18 i <font color=Red>|</font> TenOf18 j+<a name="(line517)"></a>    <font color=Red>|</font> ElevenOf18 k <font color=Red>|</font> TwelveOf18 l <font color=Red>|</font> ThirteenOf18 m <font color=Red>|</font> FourteenOf18 n+<a name="(line518)"></a>    <font color=Red>|</font> FifteenOf18 o <font color=Red>|</font> SixteenOf18 p <font color=Red>|</font> SeventeenOf18 q <font color=Red>|</font> EighteenOf18 r+<a name="(line519)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line520)"></a>+<a name="(line521)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line522)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line523)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>,</font>HTypeable n<font color=Cyan>,</font>HTypeable o+<a name="(line524)"></a>          <font color=Cyan>,</font>HTypeable p<font color=Cyan>,</font>HTypeable q<font color=Cyan>,</font>HTypeable r<font color=Cyan>)</font>+<a name="(line525)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf18 a b c d e f g h i j k l m n o p q r<font color=Cyan>)</font>+<a name="(line526)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf18"</font> [] []+<a name="(line527)"></a>+<a name="(line528)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line529)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line530)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>,</font>XmlContent n<font color=Cyan>,</font>XmlContent o+<a name="(line531)"></a>          <font color=Cyan>,</font>XmlContent p<font color=Cyan>,</font>XmlContent q<font color=Cyan>,</font>XmlContent r<font color=Cyan>)</font>+<a name="(line532)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf18 a b c d e f g h i j k l m n o p q r<font color=Cyan>)</font>+<a name="(line533)"></a>  <font color=Green><u>where</u></font>+<a name="(line534)"></a>    parseContents <font color=Red>=</font>+<a name="(line535)"></a>        <font color=Cyan>(</font>choice OneOf18 <font color=Cyan>$</font> choice TwoOf18 <font color=Cyan>$</font> choice ThreeOf18 <font color=Cyan>$</font> choice FourOf18+<a name="(line536)"></a>        <font color=Cyan>$</font> choice FiveOf18 <font color=Cyan>$</font> choice SixOf18 <font color=Cyan>$</font> choice SevenOf18+<a name="(line537)"></a>        <font color=Cyan>$</font> choice EightOf18 <font color=Cyan>$</font> choice NineOf18 <font color=Cyan>$</font> choice TenOf18+<a name="(line538)"></a>        <font color=Cyan>$</font> choice ElevenOf18 <font color=Cyan>$</font> choice TwelveOf18 <font color=Cyan>$</font> choice ThirteenOf18+<a name="(line539)"></a>        <font color=Cyan>$</font> choice FourteenOf18 <font color=Cyan>$</font> choice FifteenOf18 <font color=Cyan>$</font> choice SixteenOf18+<a name="(line540)"></a>        <font color=Cyan>$</font> choice SeventeenOf18 <font color=Cyan>$</font> choice EighteenOf18+<a name="(line541)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf18"</font><font color=Cyan>)</font>+<a name="(line542)"></a>    toContents <font color=Cyan>(</font>OneOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line543)"></a>    toContents <font color=Cyan>(</font>TwoOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line544)"></a>    toContents <font color=Cyan>(</font>ThreeOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line545)"></a>    toContents <font color=Cyan>(</font>FourOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line546)"></a>    toContents <font color=Cyan>(</font>FiveOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line547)"></a>    toContents <font color=Cyan>(</font>SixOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line548)"></a>    toContents <font color=Cyan>(</font>SevenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line549)"></a>    toContents <font color=Cyan>(</font>EightOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line550)"></a>    toContents <font color=Cyan>(</font>NineOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line551)"></a>    toContents <font color=Cyan>(</font>TenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line552)"></a>    toContents <font color=Cyan>(</font>ElevenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line553)"></a>    toContents <font color=Cyan>(</font>TwelveOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line554)"></a>    toContents <font color=Cyan>(</font>ThirteenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line555)"></a>    toContents <font color=Cyan>(</font>FourteenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line556)"></a>    toContents <font color=Cyan>(</font>FifteenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line557)"></a>    toContents <font color=Cyan>(</font>SixteenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line558)"></a>    toContents <font color=Cyan>(</font>SeventeenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line559)"></a>    toContents <font color=Cyan>(</font>EighteenOf18 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line560)"></a>+<a name="(line561)"></a><a name="OneOf19"></a><font color=Blue>----</font>+<a name="(line562)"></a><a name="OneOf19"></a><font color=Green><u>data</u></font> OneOf19 a b c d e f g h i j k l m n o p q r s+<a name="(line563)"></a>    <font color=Red>=</font> OneOf19 a <font color=Red>|</font> TwoOf19 b <font color=Red>|</font> ThreeOf19 c <font color=Red>|</font> FourOf19 d <font color=Red>|</font> FiveOf19 e+<a name="(line564)"></a>    <font color=Red>|</font> SixOf19 f <font color=Red>|</font> SevenOf19 g <font color=Red>|</font> EightOf19 h <font color=Red>|</font> NineOf19 i <font color=Red>|</font> TenOf19 j+<a name="(line565)"></a>    <font color=Red>|</font> ElevenOf19 k <font color=Red>|</font> TwelveOf19 l <font color=Red>|</font> ThirteenOf19 m <font color=Red>|</font> FourteenOf19 n+<a name="(line566)"></a>    <font color=Red>|</font> FifteenOf19 o <font color=Red>|</font> SixteenOf19 p <font color=Red>|</font> SeventeenOf19 q <font color=Red>|</font> EighteenOf19 r+<a name="(line567)"></a>    <font color=Red>|</font> NineteenOf19 s+<a name="(line568)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line569)"></a>+<a name="(line570)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line571)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line572)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>,</font>HTypeable n<font color=Cyan>,</font>HTypeable o+<a name="(line573)"></a>          <font color=Cyan>,</font>HTypeable p<font color=Cyan>,</font>HTypeable q<font color=Cyan>,</font>HTypeable r<font color=Cyan>,</font>HTypeable s<font color=Cyan>)</font>+<a name="(line574)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf19 a b c d e f g h i j k l m n o p q r s<font color=Cyan>)</font>+<a name="(line575)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf19"</font> [] []+<a name="(line576)"></a>+<a name="(line577)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line578)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line579)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>,</font>XmlContent n<font color=Cyan>,</font>XmlContent o+<a name="(line580)"></a>          <font color=Cyan>,</font>XmlContent p<font color=Cyan>,</font>XmlContent q<font color=Cyan>,</font>XmlContent r<font color=Cyan>,</font>XmlContent s<font color=Cyan>)</font>+<a name="(line581)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf19 a b c d e f g h i j k l m n o p q r s<font color=Cyan>)</font>+<a name="(line582)"></a>  <font color=Green><u>where</u></font>+<a name="(line583)"></a>    parseContents <font color=Red>=</font>+<a name="(line584)"></a>        <font color=Cyan>(</font>choice OneOf19 <font color=Cyan>$</font> choice TwoOf19 <font color=Cyan>$</font> choice ThreeOf19 <font color=Cyan>$</font> choice FourOf19+<a name="(line585)"></a>        <font color=Cyan>$</font> choice FiveOf19 <font color=Cyan>$</font> choice SixOf19 <font color=Cyan>$</font> choice SevenOf19+<a name="(line586)"></a>        <font color=Cyan>$</font> choice EightOf19 <font color=Cyan>$</font> choice NineOf19 <font color=Cyan>$</font> choice TenOf19+<a name="(line587)"></a>        <font color=Cyan>$</font> choice ElevenOf19 <font color=Cyan>$</font> choice TwelveOf19 <font color=Cyan>$</font> choice ThirteenOf19+<a name="(line588)"></a>        <font color=Cyan>$</font> choice FourteenOf19 <font color=Cyan>$</font> choice FifteenOf19 <font color=Cyan>$</font> choice SixteenOf19+<a name="(line589)"></a>        <font color=Cyan>$</font> choice SeventeenOf19 <font color=Cyan>$</font> choice EighteenOf19 <font color=Cyan>$</font> choice NineteenOf19+<a name="(line590)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf19"</font><font color=Cyan>)</font>+<a name="(line591)"></a>    toContents <font color=Cyan>(</font>OneOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line592)"></a>    toContents <font color=Cyan>(</font>TwoOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line593)"></a>    toContents <font color=Cyan>(</font>ThreeOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line594)"></a>    toContents <font color=Cyan>(</font>FourOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line595)"></a>    toContents <font color=Cyan>(</font>FiveOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line596)"></a>    toContents <font color=Cyan>(</font>SixOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line597)"></a>    toContents <font color=Cyan>(</font>SevenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line598)"></a>    toContents <font color=Cyan>(</font>EightOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line599)"></a>    toContents <font color=Cyan>(</font>NineOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line600)"></a>    toContents <font color=Cyan>(</font>TenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line601)"></a>    toContents <font color=Cyan>(</font>ElevenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line602)"></a>    toContents <font color=Cyan>(</font>TwelveOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line603)"></a>    toContents <font color=Cyan>(</font>ThirteenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line604)"></a>    toContents <font color=Cyan>(</font>FourteenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line605)"></a>    toContents <font color=Cyan>(</font>FifteenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line606)"></a>    toContents <font color=Cyan>(</font>SixteenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line607)"></a>    toContents <font color=Cyan>(</font>SeventeenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line608)"></a>    toContents <font color=Cyan>(</font>EighteenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line609)"></a>    toContents <font color=Cyan>(</font>NineteenOf19 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line610)"></a>+<a name="(line611)"></a><a name="OneOf20"></a><font color=Blue>----</font>+<a name="(line612)"></a><a name="OneOf20"></a><font color=Green><u>data</u></font> OneOf20 a b c d e f g h i j k l m n o p q r s t+<a name="(line613)"></a>    <font color=Red>=</font> OneOf20 a <font color=Red>|</font> TwoOf20 b <font color=Red>|</font> ThreeOf20 c <font color=Red>|</font> FourOf20 d <font color=Red>|</font> FiveOf20 e+<a name="(line614)"></a>    <font color=Red>|</font> SixOf20 f <font color=Red>|</font> SevenOf20 g <font color=Red>|</font> EightOf20 h <font color=Red>|</font> NineOf20 i <font color=Red>|</font> TenOf20 j+<a name="(line615)"></a>    <font color=Red>|</font> ElevenOf20 k <font color=Red>|</font> TwelveOf20 l <font color=Red>|</font> ThirteenOf20 m <font color=Red>|</font> FourteenOf20 n+<a name="(line616)"></a>    <font color=Red>|</font> FifteenOf20 o <font color=Red>|</font> SixteenOf20 p <font color=Red>|</font> SeventeenOf20 q <font color=Red>|</font> EighteenOf20 r+<a name="(line617)"></a>    <font color=Red>|</font> NineteenOf20 s <font color=Red>|</font> TwentyOf20 t+<a name="(line618)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line619)"></a>+<a name="(line620)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font>HTypeable b<font color=Cyan>,</font>HTypeable c<font color=Cyan>,</font>HTypeable d<font color=Cyan>,</font>HTypeable e+<a name="(line621)"></a>          <font color=Cyan>,</font>HTypeable f<font color=Cyan>,</font>HTypeable g<font color=Cyan>,</font>HTypeable h<font color=Cyan>,</font>HTypeable i<font color=Cyan>,</font>HTypeable j+<a name="(line622)"></a>          <font color=Cyan>,</font>HTypeable k<font color=Cyan>,</font>HTypeable l<font color=Cyan>,</font>HTypeable m<font color=Cyan>,</font>HTypeable n<font color=Cyan>,</font>HTypeable o+<a name="(line623)"></a>          <font color=Cyan>,</font>HTypeable p<font color=Cyan>,</font>HTypeable q<font color=Cyan>,</font>HTypeable r<font color=Cyan>,</font>HTypeable s<font color=Cyan>,</font>HTypeable t<font color=Cyan>)</font>+<a name="(line624)"></a>    <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>OneOf20 a b c d e f g h i j k l m n o p q r s t<font color=Cyan>)</font>+<a name="(line625)"></a>  <font color=Green><u>where</u></font>      toHType m <font color=Red>=</font> Defined <font color=Magenta>"OneOf20"</font> [] []+<a name="(line626)"></a>+<a name="(line627)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font>XmlContent b<font color=Cyan>,</font>XmlContent c<font color=Cyan>,</font>XmlContent d<font color=Cyan>,</font>XmlContent e+<a name="(line628)"></a>          <font color=Cyan>,</font>XmlContent f<font color=Cyan>,</font>XmlContent g<font color=Cyan>,</font>XmlContent h<font color=Cyan>,</font>XmlContent i<font color=Cyan>,</font>XmlContent j+<a name="(line629)"></a>          <font color=Cyan>,</font>XmlContent k<font color=Cyan>,</font>XmlContent l<font color=Cyan>,</font>XmlContent m<font color=Cyan>,</font>XmlContent n<font color=Cyan>,</font>XmlContent o+<a name="(line630)"></a>          <font color=Cyan>,</font>XmlContent p<font color=Cyan>,</font>XmlContent q<font color=Cyan>,</font>XmlContent r<font color=Cyan>,</font>XmlContent s<font color=Cyan>,</font>XmlContent t<font color=Cyan>)</font>+<a name="(line631)"></a>    <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>OneOf20 a b c d e f g h i j k l m n o p q r s t<font color=Cyan>)</font>+<a name="(line632)"></a>  <font color=Green><u>where</u></font>+<a name="(line633)"></a>    parseContents <font color=Red>=</font>+<a name="(line634)"></a>        <font color=Cyan>(</font>choice OneOf20 <font color=Cyan>$</font> choice TwoOf20 <font color=Cyan>$</font> choice ThreeOf20 <font color=Cyan>$</font> choice FourOf20+<a name="(line635)"></a>        <font color=Cyan>$</font> choice FiveOf20 <font color=Cyan>$</font> choice SixOf20 <font color=Cyan>$</font> choice SevenOf20+<a name="(line636)"></a>        <font color=Cyan>$</font> choice EightOf20 <font color=Cyan>$</font> choice NineOf20 <font color=Cyan>$</font> choice TenOf20+<a name="(line637)"></a>        <font color=Cyan>$</font> choice ElevenOf20 <font color=Cyan>$</font> choice TwelveOf20 <font color=Cyan>$</font> choice ThirteenOf20+<a name="(line638)"></a>        <font color=Cyan>$</font> choice FourteenOf20 <font color=Cyan>$</font> choice FifteenOf20 <font color=Cyan>$</font> choice SixteenOf20+<a name="(line639)"></a>        <font color=Cyan>$</font> choice SeventeenOf20 <font color=Cyan>$</font> choice EighteenOf20 <font color=Cyan>$</font> choice NineteenOf20+<a name="(line640)"></a>        <font color=Cyan>$</font> choice TwentyOf20+<a name="(line641)"></a>        <font color=Cyan>$</font> fail <font color=Magenta>"OneOf20"</font><font color=Cyan>)</font>+<a name="(line642)"></a>    toContents <font color=Cyan>(</font>OneOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line643)"></a>    toContents <font color=Cyan>(</font>TwoOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line644)"></a>    toContents <font color=Cyan>(</font>ThreeOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line645)"></a>    toContents <font color=Cyan>(</font>FourOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line646)"></a>    toContents <font color=Cyan>(</font>FiveOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line647)"></a>    toContents <font color=Cyan>(</font>SixOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line648)"></a>    toContents <font color=Cyan>(</font>SevenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line649)"></a>    toContents <font color=Cyan>(</font>EightOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line650)"></a>    toContents <font color=Cyan>(</font>NineOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line651)"></a>    toContents <font color=Cyan>(</font>TenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line652)"></a>    toContents <font color=Cyan>(</font>ElevenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line653)"></a>    toContents <font color=Cyan>(</font>TwelveOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line654)"></a>    toContents <font color=Cyan>(</font>ThirteenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line655)"></a>    toContents <font color=Cyan>(</font>FourteenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line656)"></a>    toContents <font color=Cyan>(</font>FifteenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line657)"></a>    toContents <font color=Cyan>(</font>SixteenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line658)"></a>    toContents <font color=Cyan>(</font>SeventeenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line659)"></a>    toContents <font color=Cyan>(</font>EighteenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line660)"></a>    toContents <font color=Cyan>(</font>NineteenOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line661)"></a>    toContents <font color=Cyan>(</font>TwentyOf20 x<font color=Cyan>)</font> <font color=Red>=</font> toContents x+<a name="(line662)"></a>+<a name="(line663)"></a><font color=Blue>----</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Parse.html view
@@ -0,0 +1,883 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>{-# OPTIONS -cpp #-}</font>+<a name="(line2)"></a><font color=Blue>-- | A non-validating XML parser.  For the input grammar, see</font>+<a name="(line3)"></a><font color=Blue>--   &lt;<a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a>&gt;.</font>+<a name="(line4)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse+<a name="(line5)"></a>  <font color=Cyan>(</font>+<a name="(line6)"></a>  <font color=Blue>-- * Parse a whole document</font>+<a name="(line7)"></a>    xmlParse<font color=Cyan>,</font> xmlParse'+<a name="(line8)"></a>  <font color=Blue>-- * Parse just a DTD</font>+<a name="(line9)"></a>  <font color=Cyan>,</font> dtdParse<font color=Cyan>,</font> dtdParse'+<a name="(line10)"></a>  <font color=Blue>-- * Parse a partial document</font>+<a name="(line11)"></a>  <font color=Cyan>,</font> xmlParseWith+<a name="(line12)"></a>  <font color=Blue>-- * Individual parsers for use with /xmlParseWith/ and module SAX</font>+<a name="(line13)"></a>  <font color=Cyan>,</font> document<font color=Cyan>,</font> element<font color=Cyan>,</font> content+<a name="(line14)"></a>  <font color=Cyan>,</font> comment<font color=Cyan>,</font> cdsect<font color=Cyan>,</font> chardata+<a name="(line15)"></a>  <font color=Cyan>,</font> reference<font color=Cyan>,</font> doctypedecl+<a name="(line16)"></a>  <font color=Cyan>,</font> processinginstruction+<a name="(line17)"></a>  <font color=Cyan>,</font> elemtag<font color=Cyan>,</font> name<font color=Cyan>,</font> tok+<a name="(line18)"></a>  <font color=Cyan>,</font> elemOpenTag<font color=Cyan>,</font> elemCloseTag+<a name="(line19)"></a>  <font color=Cyan>,</font> emptySTs<font color=Cyan>,</font> XParser+<a name="(line20)"></a>  <font color=Blue>-- * These general utility functions don't belong here</font>+<a name="(line21)"></a>  <font color=Cyan>,</font> fst3<font color=Cyan>,</font> snd3<font color=Cyan>,</font> thd3+<a name="(line22)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line23)"></a>+<a name="(line24)"></a><font color=Blue>-- An XML parser, written using a slightly extended version of the</font>+<a name="(line25)"></a><font color=Blue>-- Hutton/Meijer parser combinators.  The input is tokenised internally</font>+<a name="(line26)"></a><font color=Blue>-- by the lexer xmlLex.  Whilst parsing, we gather a symbol</font>+<a name="(line27)"></a><font color=Blue>-- table of entity references.  PERefs must be defined before use, so we</font>+<a name="(line28)"></a><font color=Blue>-- expand their uses as we encounter them, forcing the remainder of the</font>+<a name="(line29)"></a><font color=Blue>-- input to be re-lexed and re-parsed.  GERefs are simply stored for</font>+<a name="(line30)"></a><font color=Blue>-- later retrieval.</font>+<a name="(line31)"></a>+<a name="(line32)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>either<font color=Cyan>,</font>maybe<font color=Cyan>,</font>sequence<font color=Cyan>)</font>+<a name="(line33)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Prelude <font color=Cyan>(</font>either<font color=Cyan>)</font>+<a name="(line34)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line35)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>       <font color=Blue>-- debugging only</font>+<a name="(line36)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>isSpace<font color=Cyan>,</font>isDigit<font color=Cyan>,</font>isHexDigit<font color=Cyan>)</font>+<a name="(line37)"></a><font color=Green><u>import</u></font> Monad hiding <font color=Cyan>(</font>sequence<font color=Cyan>)</font>+<a name="(line38)"></a><font color=Green><u>import</u></font> Numeric <font color=Cyan>(</font>readDec<font color=Cyan>,</font>readHex<font color=Cyan>)</font>+<a name="(line39)"></a>+<a name="(line40)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line41)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn+<a name="(line42)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Lex+<a name="(line43)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly<font color=Cyan>.</font>NoLeak<font color=Cyan>.</font>State+<a name="(line44)"></a>+<a name="(line45)"></a>+<a name="(line46)"></a><font color=Magenta><em>#if ( defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt; 502 ) || \</em></font>+<a name="(line47)"></a>    <font color=Cyan>(</font> defined<font color=Cyan>(</font><b><font color=Magenta>__NHC__</font></b><font color=Cyan>)</font> <font color=Cyan>&amp;&amp;</font> <b><font color=Magenta>__NHC__</font></b> <font color=Cyan>&gt;</font> <font color=Magenta>114</font> <font color=Cyan>)</font> <font color=Cyan>||</font> defined<font color=Cyan>(</font><b><font color=Magenta>__HUGS__</font></b><font color=Cyan>)</font>+<a name="(line48)"></a><font color=Green><u>import</u></font> System<font color=Cyan>.</font>IO<font color=Cyan>.</font>Unsafe <font color=Cyan>(</font>unsafePerformIO<font color=Cyan>)</font>+<a name="(line49)"></a><font color=Magenta><em>#elif defined(__GLASGOW_HASKELL__)</em></font>+<a name="(line50)"></a><font color=Green><u>import</u></font> IOExts <font color=Cyan>(</font>unsafePerformIO<font color=Cyan>)</font>+<a name="(line51)"></a><font color=Magenta><em>#elif defined(__NHC__)</em></font>+<a name="(line52)"></a><font color=Green><u>import</u></font> IOExtras <font color=Cyan>(</font>unsafePerformIO<font color=Cyan>)</font>+<a name="(line53)"></a><font color=Magenta><em>#elif defined(__HBC__)</em></font>+<a name="(line54)"></a><font color=Green><u>import</u></font> UnsafePerformIO+<a name="(line55)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line56)"></a>+<a name="(line57)"></a><font color=Blue>--  #define DEBUG</font>+<a name="(line58)"></a>+<a name="(line59)"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>+<a name="(line60)"></a><font color=Magenta><em>#  if ( defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt; 502 ) || \</em></font>+<a name="(line61)"></a>      <font color=Cyan>(</font> defined<font color=Cyan>(</font><b><font color=Magenta>__NHC__</font></b><font color=Cyan>)</font> <font color=Cyan>&amp;&amp;</font> <b><font color=Magenta>__NHC__</font></b> <font color=Cyan>&gt;</font> <font color=Magenta>114</font> <font color=Cyan>)</font> <font color=Cyan>||</font> defined<font color=Cyan>(</font><b><font color=Magenta>__HUGS__</font></b><font color=Cyan>)</font>+<a name="(line62)"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line63)"></a><font color=Magenta><em>#  elif defined(__GLASGOW_HASKELL__)</em></font>+<a name="(line64)"></a><font color=Green><u>import</u></font> IOExts<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line65)"></a><font color=Magenta><em>#  elif defined(__NHC__) || defined(__HBC__)</em></font>+<a name="(line66)"></a><font color=Green><u>import</u></font> NonStdTrace+<a name="(line67)"></a><font color=Magenta><em>#  endif</em></font>+<a name="(line68)"></a><a name="debug"></a>debug <font color=Red>::</font> a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> a+<a name="(line69)"></a><a name="debug"></a>v <font color=Cyan>`debug`</font> s <font color=Red>=</font> trace s v+<a name="(line70)"></a><font color=Magenta><em>#else</em></font>+<a name="(line71)"></a><a name="debug"></a>v <font color=Cyan>`debug`</font> s <font color=Red>=</font> v+<a name="(line72)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line73)"></a>+<a name="(line74)"></a>+<a name="(line75)"></a><a name="xmlParse"></a><font color=Blue>-- | To parse a whole document, @xmlParse file content@ takes a filename</font>+<a name="(line76)"></a><font color=Blue>--   (for generating error reports) and the string content of that file.</font>+<a name="(line77)"></a><font color=Blue>--   A parse error causes program failure, with message to stderr.</font>+<a name="(line78)"></a>xmlParse <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Document Posn+<a name="(line79)"></a>+<a name="(line80)"></a><a name="xmlParse'"></a><font color=Blue>-- | To parse a whole document, @xmlParse' file content@ takes a filename</font>+<a name="(line81)"></a><font color=Blue>--   (for generating error reports) and the string content of that file.</font>+<a name="(line82)"></a><font color=Blue>--   Any parse error message is passed back to the caller through the</font>+<a name="(line83)"></a><font color=Blue>--   @Either@ type.</font>+<a name="(line84)"></a>xmlParse' <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>Document Posn<font color=Cyan>)</font>+<a name="(line85)"></a>+<a name="(line86)"></a><a name="dtdParse"></a><font color=Blue>-- | To parse just a DTD, @dtdParse file content@ takes a filename</font>+<a name="(line87)"></a><font color=Blue>--   (for generating error reports) and the string content of that</font>+<a name="(line88)"></a><font color=Blue>--   file.  If no DTD was found, you get @Nothing@ rather than an error.</font>+<a name="(line89)"></a><font color=Blue>--   However, if a DTD is found but contains errors, the program crashes.</font>+<a name="(line90)"></a>dtdParse  <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe DocTypeDecl+<a name="(line91)"></a>+<a name="(line92)"></a><a name="dtdParse'"></a><font color=Blue>-- | To parse just a DTD, @dtdParse' file content@ takes a filename</font>+<a name="(line93)"></a><font color=Blue>--   (for generating error reports) and the string content of that</font>+<a name="(line94)"></a><font color=Blue>--   file.  If no DTD was found, you get @Right Nothing@.</font>+<a name="(line95)"></a><font color=Blue>--   If a DTD was found but contains errors, you get a @Left message@.</font>+<a name="(line96)"></a>dtdParse' <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>Maybe DocTypeDecl<font color=Cyan>)</font>+<a name="(line97)"></a>+<a name="(line98)"></a>xmlParse  name  <font color=Red>=</font> Prelude<font color=Cyan>.</font>either error id <font color=Cyan>.</font> xmlParse' name+<a name="(line99)"></a>dtdParse  name  <font color=Red>=</font> Prelude<font color=Cyan>.</font>either error id <font color=Cyan>.</font> dtdParse' name+<a name="(line100)"></a>+<a name="(line101)"></a>xmlParse' name  <font color=Red>=</font> fst3 <font color=Cyan>.</font> runParser <font color=Cyan>(</font>toEOF document<font color=Cyan>)</font> emptySTs <font color=Cyan>.</font> xmlLex name+<a name="(line102)"></a>dtdParse' name  <font color=Red>=</font> fst3 <font color=Cyan>.</font> runParser justDTD  emptySTs <font color=Cyan>.</font> xmlLex name+<a name="(line103)"></a>+<a name="(line104)"></a><a name="toEOF"></a>toEOF <font color=Red>=</font> id	<font color=Blue>-- there are other possible implementations...</font>+<a name="(line105)"></a>+<a name="(line106)"></a><a name="xmlParseWith"></a><font color=Blue>-- | To parse a partial document, e.g. from an XML-based stream protocol,</font>+<a name="(line107)"></a><font color=Blue>--   where you may later want to get more document elements from the same</font>+<a name="(line108)"></a><font color=Blue>--   stream.  Arguments are: a parser for the item you want, and the</font>+<a name="(line109)"></a><font color=Blue>--   already-lexed input to parse from.  Returns the item you wanted</font>+<a name="(line110)"></a><font color=Blue>--   (or an error message), plus the remainder of the input.</font>+<a name="(line111)"></a>xmlParseWith <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line112)"></a>                <font color=Red>-&gt;</font> <font color=Cyan>(</font>Either String a<font color=Cyan>,</font> <font color=Red>[</font><font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line113)"></a>xmlParseWith p <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>v<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Red>-&gt;</font><font color=Cyan>(</font>v<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> runParser p emptySTs+<a name="(line114)"></a>+<a name="(line115)"></a>+<a name="(line116)"></a><font color=Blue>---- Symbol table stuff ----</font>+<a name="(line117)"></a>+<a name="(line118)"></a><a name="SymTabs"></a><font color=Green><u>type</u></font> SymTabs <font color=Red>=</font> <font color=Cyan>(</font>SymTab PEDef<font color=Cyan>,</font> SymTab EntityDef<font color=Cyan>)</font>+<a name="(line119)"></a>+<a name="(line120)"></a><a name="emptySTs"></a><font color=Blue>-- | Some empty symbol tables for GE and PE references.</font>+<a name="(line121)"></a>emptySTs <font color=Red>::</font> SymTabs+<a name="(line122)"></a>emptySTs <font color=Red>=</font> <font color=Cyan>(</font>emptyST<font color=Cyan>,</font> emptyST<font color=Cyan>)</font>+<a name="(line123)"></a>+<a name="(line124)"></a><a name="addPE"></a>addPE <font color=Red>::</font> String <font color=Red>-&gt;</font> PEDef <font color=Red>-&gt;</font> SymTabs <font color=Red>-&gt;</font> SymTabs+<a name="(line125)"></a>addPE n v <font color=Cyan>(</font>pe<font color=Cyan>,</font>ge<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font>addST n v pe<font color=Cyan>,</font> ge<font color=Cyan>)</font>+<a name="(line126)"></a>+<a name="(line127)"></a><a name="addGE"></a>addGE <font color=Red>::</font> String <font color=Red>-&gt;</font> EntityDef <font color=Red>-&gt;</font> SymTabs <font color=Red>-&gt;</font> SymTabs+<a name="(line128)"></a>addGE n v <font color=Cyan>(</font>pe<font color=Cyan>,</font>ge<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>let</u></font> newge <font color=Red>=</font> addST n v ge <font color=Green><u>in</u></font> newge <font color=Cyan>`seq`</font> <font color=Cyan>(</font>pe<font color=Cyan>,</font> newge<font color=Cyan>)</font>+<a name="(line129)"></a>+<a name="(line130)"></a><a name="lookupPE"></a>lookupPE <font color=Red>::</font> String <font color=Red>-&gt;</font> SymTabs <font color=Red>-&gt;</font> Maybe PEDef+<a name="(line131)"></a>lookupPE s <font color=Cyan>(</font>pe<font color=Cyan>,</font>ge<font color=Cyan>)</font> <font color=Red>=</font> lookupST s pe+<a name="(line132)"></a>+<a name="(line133)"></a><a name="flattenEV"></a>flattenEV <font color=Red>::</font> EntityValue <font color=Red>-&gt;</font> String+<a name="(line134)"></a>flattenEV <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font> <font color=Red>=</font> concatMap flatten evs+<a name="(line135)"></a>  <font color=Green><u>where</u></font>+<a name="(line136)"></a>    flatten <font color=Cyan>(</font>EVString s<font color=Cyan>)</font>          <font color=Red>=</font> s+<a name="(line137)"></a>    flatten <font color=Cyan>(</font>EVRef <font color=Cyan>(</font>RefEntity r<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;"</font> <font color=Cyan>++</font>r<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line138)"></a>    flatten <font color=Cyan>(</font>EVRef <font color=Cyan>(</font>RefChar r<font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&amp;#"</font><font color=Cyan>++</font>show r<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line139)"></a> <font color=Blue>-- flatten (EVPERef n)           = "%" ++n++";"</font>+<a name="(line140)"></a>+<a name="(line141)"></a>+<a name="(line142)"></a><a name="fst3"></a><font color=Blue>---- Misc ----</font>+<a name="(line143)"></a>fst3 <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>-&gt;</font> a+<a name="(line144)"></a><a name="snd3"></a>snd3 <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>-&gt;</font> b+<a name="(line145)"></a><a name="thd3"></a>thd3 <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>-&gt;</font> c+<a name="(line146)"></a>+<a name="(line147)"></a>fst3 <font color=Cyan>(</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line148)"></a>snd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line149)"></a>thd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line150)"></a>+<a name="(line151)"></a>+<a name="(line152)"></a><font color=Blue>---- Auxiliary Parsing Functions ----</font>+<a name="(line153)"></a>+<a name="(line154)"></a><a name="XParser"></a><font color=Blue>-- | XParser is just a specialisation of the PolyState parser.</font>+<a name="(line155)"></a><a name="XParser"></a><font color=Green><u>type</u></font> XParser a <font color=Red>=</font> Parser SymTabs <font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font> a+<a name="(line156)"></a>+<a name="(line157)"></a><a name="tok"></a><font color=Blue>-- | Return the next token from the input only if it matches the given token.</font>+<a name="(line158)"></a>tok <font color=Red>::</font> TokenT <font color=Red>-&gt;</font> XParser TokenT+<a name="(line159)"></a>tok t <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t'<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line160)"></a>           <font color=Green><u>case</u></font> t' <font color=Green><u>of</u></font> TokError <font color=Green><u>_</u></font>    <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line161)"></a>                      <font color=Green><u>_</u></font> <font color=Red>|</font> t'<font color=Cyan>==</font>t     <font color=Red>-&gt;</font> return t+<a name="(line162)"></a>                        <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line163)"></a><a name="nottok"></a>nottok <font color=Red>::</font> <font color=Red>[</font>TokenT<font color=Red>]</font> <font color=Red>-&gt;</font> XParser TokenT+<a name="(line164)"></a>nottok ts <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line165)"></a>               <font color=Green><u>if</u></font> t<font color=Cyan>`elem`</font>ts <font color=Green><u>then</u></font> report fail <font color=Cyan>(</font><font color=Magenta>"no "</font><font color=Cyan>++</font>show t<font color=Cyan>)</font> p t+<a name="(line166)"></a>                            <font color=Green><u>else</u></font> return t+<a name="(line167)"></a>+<a name="(line168)"></a><a name="name"></a><font color=Blue>-- | Return just a name, e.g. element name, attribute name.</font>+<a name="(line169)"></a>name <font color=Red>::</font> XParser Name+<a name="(line170)"></a>name <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>tok<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line171)"></a>          <font color=Green><u>case</u></font> tok <font color=Green><u>of</u></font>+<a name="(line172)"></a>            TokName s  <font color=Red>-&gt;</font> return s+<a name="(line173)"></a>            TokError <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> report failBad <font color=Magenta>"a name"</font> p tok+<a name="(line174)"></a>            <font color=Green><u>_</u></font>          <font color=Red>-&gt;</font> report fail <font color=Magenta>"a name"</font> p tok+<a name="(line175)"></a>+<a name="(line176)"></a><a name="string"></a>string<font color=Cyan>,</font> freetext <font color=Red>::</font> XParser String+<a name="(line177)"></a>string   <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line178)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokName s <font color=Red>-&gt;</font> return s+<a name="(line179)"></a>                        <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line180)"></a><a name="freetext"></a>freetext <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line181)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokFreeText s <font color=Red>-&gt;</font> return s+<a name="(line182)"></a>                        <font color=Green><u>_</u></font>             <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line183)"></a>+<a name="(line184)"></a><a name="maybe"></a>maybe <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font>+<a name="(line185)"></a>maybe p <font color=Red>=</font>+<a name="(line186)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Just<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line187)"></a>    <font color=Cyan>(</font> return Nothing<font color=Cyan>)</font>+<a name="(line188)"></a>+<a name="(line189)"></a><a name="either"></a>either <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser b <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>Either a b<font color=Cyan>)</font>+<a name="(line190)"></a>either p q <font color=Red>=</font>+<a name="(line191)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Left<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line192)"></a>    <font color=Cyan>(</font> q <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Right<font color=Cyan>)</font>+<a name="(line193)"></a>+<a name="(line194)"></a><a name="word"></a>word <font color=Red>::</font> String <font color=Red>-&gt;</font> XParser ()+<a name="(line195)"></a>word s <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+<a name="(line196)"></a>            <font color=Cyan>;</font> <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>+<a name="(line197)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokName n<font color=Cyan>)</font>     <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line198)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokFreeText n<font color=Cyan>)</font> <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line199)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Red>@</font><font color=Cyan>(</font>TokError <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line200)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line201)"></a>            <font color=Cyan>}</font>+<a name="(line202)"></a>+<a name="(line203)"></a><a name="posn"></a>posn <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x<font color=Red>@</font><font color=Cyan>(</font>p<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line204)"></a>          <font color=Cyan>;</font> reparse <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line205)"></a>          <font color=Cyan>;</font> return p+<a name="(line206)"></a>          <font color=Cyan>}</font>+<a name="(line207)"></a>+<a name="(line208)"></a><a name="nmtoken"></a>nmtoken <font color=Red>::</font> XParser NmToken+<a name="(line209)"></a>nmtoken <font color=Red>=</font> <font color=Cyan>(</font>string <font color=Cyan>`onFail`</font> freetext<font color=Cyan>)</font>+<a name="(line210)"></a>+<a name="(line211)"></a><a name="failP"></a>failP<font color=Cyan>,</font> failBadP <font color=Red>::</font> String <font color=Red>-&gt;</font> XParser a+<a name="(line212)"></a>failP msg <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> fail <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line213)"></a><a name="failBadP"></a>failBadP msg <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> failBad <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line214)"></a>+<a name="(line215)"></a><a name="report"></a>report <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>XParser a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> TokenT <font color=Red>-&gt;</font> XParser a+<a name="(line216)"></a>report fail exp p t <font color=Red>=</font> fail <font color=Cyan>(</font><font color=Magenta>"Expected "</font><font color=Cyan>++</font>exp<font color=Cyan>++</font><font color=Magenta>" but found "</font><font color=Cyan>++</font>show t+<a name="(line217)"></a>                           <font color=Cyan>++</font><font color=Magenta>"\n  in "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line218)"></a>+<a name="(line219)"></a><a name="adjustErrP"></a>adjustErrP <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> XParser a+<a name="(line220)"></a><a name="adjustErrP"></a>p <font color=Cyan>`adjustErrP`</font> f <font color=Red>=</font> p <font color=Cyan>`onFail`</font> <font color=Green><u>do</u></font> pn <font color=Red>&lt;-</font> posn+<a name="(line221)"></a>                                 <font color=Cyan>(</font>p <font color=Cyan>`adjustErr`</font> f<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font>show pn<font color=Cyan>)</font>+<a name="(line222)"></a>+<a name="(line223)"></a><a name="peRef"></a>peRef <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser a+<a name="(line224)"></a>peRef p <font color=Red>=</font>+<a name="(line225)"></a>    p <font color=Cyan>`onFail`</font>+<a name="(line226)"></a>    <font color=Green><u>do</u></font> pn <font color=Red>&lt;-</font> posn+<a name="(line227)"></a>       n <font color=Red>&lt;-</font> pereference+<a name="(line228)"></a>       tr <font color=Red>&lt;-</font> stQuery <font color=Cyan>(</font>lookupPE n<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Looking up %"</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line229)"></a>       <font color=Green><u>case</u></font> tr <font color=Green><u>of</u></font>+<a name="(line230)"></a>           Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line231)"></a>                      <font color=Green><u>do</u></font> reparse <font color=Cyan>(</font>xmlReLex <font color=Cyan>(</font>posInNewCxt <font color=Cyan>(</font><font color=Magenta>"macro %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line232)"></a>                                                        <font color=Cyan>(</font>Just pn<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line233)"></a>                                           <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line234)"></a>                               <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"  defn:  "</font><font color=Cyan>++</font>flattenEV ev<font color=Cyan>)</font>+<a name="(line235)"></a>                         peRef p+<a name="(line236)"></a>           Just <font color=Cyan>(</font>PEDefExternalID <font color=Cyan>(</font>PUBLIC <font color=Green><u>_</u></font> <font color=Cyan>(</font>SystemLiteral f<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line237)"></a>                      <font color=Green><u>do</u></font> <font color=Green><u>let</u></font> val <font color=Red>=</font> unsafePerformIO <font color=Cyan>(</font>readFile f<font color=Cyan>)</font>+<a name="(line238)"></a>                         reparse <font color=Cyan>(</font>xmlReLex <font color=Cyan>(</font>posInNewCxt <font color=Cyan>(</font><font color=Magenta>"file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line239)"></a>                                                        <font color=Cyan>(</font>Just pn<font color=Cyan>)</font><font color=Cyan>)</font> val<font color=Cyan>)</font>+<a name="(line240)"></a>                               <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"  reading from file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line241)"></a>                         peRef p+<a name="(line242)"></a>           Just <font color=Cyan>(</font>PEDefExternalID <font color=Cyan>(</font>SYSTEM <font color=Cyan>(</font>SystemLiteral f<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line243)"></a>                      <font color=Green><u>do</u></font> <font color=Green><u>let</u></font> val <font color=Red>=</font> unsafePerformIO <font color=Cyan>(</font>readFile f<font color=Cyan>)</font>+<a name="(line244)"></a>                         reparse <font color=Cyan>(</font>xmlReLex <font color=Cyan>(</font>posInNewCxt <font color=Cyan>(</font><font color=Magenta>"file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line245)"></a>                                                        <font color=Cyan>(</font>Just pn<font color=Cyan>)</font><font color=Cyan>)</font> val<font color=Cyan>)</font>+<a name="(line246)"></a>                               <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"  reading from file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line247)"></a>                         peRef p+<a name="(line248)"></a>           Nothing <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"PEReference use before definition: "</font><font color=Cyan>++</font><font color=Magenta>"%"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line249)"></a>                           <font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show pn<font color=Cyan>)</font>+<a name="(line250)"></a>+<a name="(line251)"></a><a name="blank"></a>blank <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser a+<a name="(line252)"></a>blank p <font color=Red>=</font>+<a name="(line253)"></a>    p <font color=Cyan>`onFail`</font>+<a name="(line254)"></a>    <font color=Green><u>do</u></font> n <font color=Red>&lt;-</font> pereference+<a name="(line255)"></a>       tr <font color=Red>&lt;-</font> stQuery <font color=Cyan>(</font>lookupPE n<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Looking up %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>" (is blank?)"</font><font color=Cyan>)</font>+<a name="(line256)"></a>       <font color=Green><u>case</u></font> tr <font color=Green><u>of</u></font>+<a name="(line257)"></a>           Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font>+<a name="(line258)"></a>                    <font color=Red>|</font> all isSpace <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font>  <font color=Red>-&gt;</font>+<a name="(line259)"></a>                            <font color=Green><u>do</u></font> blank p <font color=Cyan>`debug`</font> <font color=Magenta>"Empty macro definition"</font>+<a name="(line260)"></a>           Just <font color=Green><u>_</u></font>  <font color=Red>-&gt;</font> failP <font color=Cyan>(</font><font color=Magenta>"expected a blank PERef macro: "</font><font color=Cyan>++</font><font color=Magenta>"%"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line261)"></a>           Nothing <font color=Red>-&gt;</font> failP <font color=Cyan>(</font><font color=Magenta>"PEReference use before definition: "</font><font color=Cyan>++</font><font color=Magenta>"%"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line262)"></a>+<a name="(line263)"></a>+<a name="(line264)"></a>+<a name="(line265)"></a><font color=Blue>---- XML Parsing Functions ----</font>+<a name="(line266)"></a>+<a name="(line267)"></a><a name="justDTD"></a>justDTD <font color=Red>::</font> XParser <font color=Cyan>(</font>Maybe DocTypeDecl<font color=Cyan>)</font>+<a name="(line268)"></a>justDTD <font color=Red>=</font>+<a name="(line269)"></a>  <font color=Green><u>do</u></font> <font color=Cyan>(</font>ExtSubset <font color=Green><u>_</u></font> ds<font color=Cyan>)</font> <font color=Red>&lt;-</font> extsubset <font color=Cyan>`debug`</font> <font color=Magenta>"Trying external subset"</font>+<a name="(line270)"></a>     <font color=Green><u>if</u></font> null ds <font color=Green><u>then</u></font> fail <font color=Magenta>"empty"</font>+<a name="(line271)"></a>         <font color=Green><u>else</u></font> return <font color=Cyan>(</font>Just <font color=Cyan>(</font>DTD <font color=Magenta>"extsubset"</font> Nothing <font color=Cyan>(</font>concatMap extract ds<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line272)"></a>  <font color=Cyan>`onFail`</font>+<a name="(line273)"></a>  <font color=Green><u>do</u></font> <font color=Cyan>(</font>Prolog <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> dtd <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> prolog+<a name="(line274)"></a>     return dtd+<a name="(line275)"></a> <font color=Green><u>where</u></font> extract <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>m<font color=Red>]</font>+<a name="(line276)"></a>       extract <font color=Cyan>(</font>ExtConditionalSect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> concatMap extract i+<a name="(line277)"></a>       extract <font color=Cyan>(</font>ExtConditionalSect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> []+<a name="(line278)"></a>+<a name="(line279)"></a><a name="document"></a><font color=Blue>-- | Return an entire XML document including prolog and trailing junk.</font>+<a name="(line280)"></a>document <font color=Red>::</font> XParser <font color=Cyan>(</font>Document Posn<font color=Cyan>)</font>+<a name="(line281)"></a>document <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line282)"></a>    p <font color=Red>&lt;-</font> prolog <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"unrecognisable XML prolog\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line283)"></a>    e <font color=Red>&lt;-</font> element+<a name="(line284)"></a>    ms <font color=Red>&lt;-</font> many misc+<a name="(line285)"></a>    <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>ge<font color=Cyan>)</font> <font color=Red>&lt;-</font> stGet+<a name="(line286)"></a>    return <font color=Cyan>(</font>Document p ge e ms<font color=Cyan>)</font>+<a name="(line287)"></a>+<a name="(line288)"></a><a name="comment"></a><font color=Blue>-- | Return an XML comment.</font>+<a name="(line289)"></a>comment <font color=Red>::</font> XParser Comment+<a name="(line290)"></a>comment <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line291)"></a>    bracket <font color=Cyan>(</font>tok TokCommentOpen<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokCommentClose<font color=Cyan>)</font> freetext+<a name="(line292)"></a><font color=Blue>--  tok TokCommentOpen</font>+<a name="(line293)"></a><font color=Blue>--  commit $ do</font>+<a name="(line294)"></a><font color=Blue>--    c &lt;- freetext</font>+<a name="(line295)"></a><font color=Blue>--    tok TokCommentClose</font>+<a name="(line296)"></a><font color=Blue>--    return c</font>+<a name="(line297)"></a>+<a name="(line298)"></a><a name="processinginstruction"></a><font color=Blue>-- | Parse a processing instruction.</font>+<a name="(line299)"></a>processinginstruction <font color=Red>::</font> XParser ProcessingInstruction+<a name="(line300)"></a>processinginstruction <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line301)"></a>    tok TokPIOpen+<a name="(line302)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line303)"></a>      n <font color=Red>&lt;-</font> string  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"processing instruction has no target"</font>+<a name="(line304)"></a>      f <font color=Red>&lt;-</font> freetext+<a name="(line305)"></a>      tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Cyan>(</font><font color=Magenta>"missing ?&gt; in &lt;?"</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line306)"></a>      return <font color=Cyan>(</font>n<font color=Cyan>,</font> f<font color=Cyan>)</font>+<a name="(line307)"></a>+<a name="(line308)"></a><a name="cdsect"></a>cdsect <font color=Red>::</font> XParser CDSect+<a name="(line309)"></a>cdsect <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line310)"></a>    tok TokSectionOpen+<a name="(line311)"></a>    bracket <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection CDATAx<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSectionClose<font color=Cyan>)</font> chardata+<a name="(line312)"></a>+<a name="(line313)"></a><a name="prolog"></a>prolog <font color=Red>::</font> XParser Prolog+<a name="(line314)"></a>prolog <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line315)"></a>    x   <font color=Red>&lt;-</font> maybe xmldecl+<a name="(line316)"></a>    m1  <font color=Red>&lt;-</font> many misc+<a name="(line317)"></a>    dtd <font color=Red>&lt;-</font> maybe doctypedecl+<a name="(line318)"></a>    m2  <font color=Red>&lt;-</font> many misc+<a name="(line319)"></a>    return <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font>+<a name="(line320)"></a>+<a name="(line321)"></a><a name="xmldecl"></a>xmldecl <font color=Red>::</font> XParser XMLDecl+<a name="(line322)"></a>xmldecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line323)"></a>    tok TokPIOpen+<a name="(line324)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line325)"></a>    p <font color=Red>&lt;-</font> posn+<a name="(line326)"></a>    s <font color=Red>&lt;-</font> freetext+<a name="(line327)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing ?&gt; in &lt;?xml ...?&gt;"</font>+<a name="(line328)"></a>    raise <font color=Cyan>(</font><font color=Cyan>(</font>runParser aux emptySTs <font color=Cyan>.</font> xmlReLex p<font color=Cyan>)</font> s<font color=Cyan>)</font>+<a name="(line329)"></a>  <font color=Green><u>where</u></font>+<a name="(line330)"></a>    aux <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line331)"></a>        v <font color=Red>&lt;-</font> versioninfo  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing XML version info"</font>+<a name="(line332)"></a>        e <font color=Red>&lt;-</font> maybe encodingdecl+<a name="(line333)"></a>        s <font color=Red>&lt;-</font> maybe sddecl+<a name="(line334)"></a>        return <font color=Cyan>(</font>XMLDecl v e s<font color=Cyan>)</font>+<a name="(line335)"></a>    raise <font color=Cyan>(</font>Left err<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> failP err+<a name="(line336)"></a>    raise <font color=Cyan>(</font>Right ok<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> return ok+<a name="(line337)"></a>+<a name="(line338)"></a><a name="versioninfo"></a>versioninfo <font color=Red>::</font> XParser VersionInfo+<a name="(line339)"></a>versioninfo <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line340)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"version"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"VERSION"</font><font color=Cyan>)</font>+<a name="(line341)"></a>    tok TokEqual+<a name="(line342)"></a>    bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line343)"></a>+<a name="(line344)"></a><a name="misc"></a>misc <font color=Red>::</font> XParser Misc+<a name="(line345)"></a>misc <font color=Red>=</font>+<a name="(line346)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"&lt;!--comment--&gt;"</font><font color=Cyan>,</font>  comment <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Comment<font color=Cyan>)</font>+<a name="(line347)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"&lt;?PI?&gt;"</font><font color=Cyan>,</font>          processinginstruction <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PI<font color=Cyan>)</font>+<a name="(line348)"></a>           <font color=Red>]</font>+<a name="(line349)"></a>+<a name="(line350)"></a><a name="doctypedecl"></a><font color=Blue>-- | Return a DOCTYPE decl, indicating a DTD.</font>+<a name="(line351)"></a>doctypedecl <font color=Red>::</font> XParser DocTypeDecl+<a name="(line352)"></a>doctypedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line353)"></a>    tok TokSpecialOpen+<a name="(line354)"></a>    tok <font color=Cyan>(</font>TokSpecial DOCTYPEx<font color=Cyan>)</font>+<a name="(line355)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line356)"></a>      n   <font color=Red>&lt;-</font> name+<a name="(line357)"></a>      eid <font color=Red>&lt;-</font> maybe externalid+<a name="(line358)"></a>      es  <font color=Red>&lt;-</font> maybe <font color=Cyan>(</font>bracket <font color=Cyan>(</font>tok TokSqOpen<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSqClose<font color=Cyan>)</font>+<a name="(line359)"></a>                            <font color=Cyan>(</font>many <font color=Cyan>(</font>peRef markupdecl<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line360)"></a>      blank <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font>  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing &gt; in DOCTYPE decl"</font>+<a name="(line361)"></a>      return <font color=Cyan>(</font>DTD n eid <font color=Cyan>(</font><font color=Green><u>case</u></font> es <font color=Green><u>of</u></font> <font color=Cyan>{</font> Nothing <font color=Red>-&gt;</font> []<font color=Cyan>;</font> Just e <font color=Red>-&gt;</font> e <font color=Cyan>}</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line362)"></a>+<a name="(line363)"></a><a name="markupdecl"></a><font color=Blue>-- | Return a DTD markup decl, e.g. ELEMENT, ATTLIST, etc</font>+<a name="(line364)"></a>markupdecl <font color=Red>::</font> XParser MarkupDecl+<a name="(line365)"></a>markupdecl <font color=Red>=</font>+<a name="(line366)"></a>  oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"ELEMENT"</font><font color=Cyan>,</font>  elementdecl  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Element<font color=Cyan>)</font>+<a name="(line367)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ATTLIST"</font><font color=Cyan>,</font>  attlistdecl  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> AttList<font color=Cyan>)</font>+<a name="(line368)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ENTITY"</font><font color=Cyan>,</font>   entitydecl   <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Entity<font color=Cyan>)</font>+<a name="(line369)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"NOTATION"</font><font color=Cyan>,</font> notationdecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Notation<font color=Cyan>)</font>+<a name="(line370)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"misc"</font><font color=Cyan>,</font>     misc         <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> MarkupMisc<font color=Cyan>)</font>+<a name="(line371)"></a>         <font color=Red>]</font>+<a name="(line372)"></a>    <font color=Cyan>`adjustErrP`</font>+<a name="(line373)"></a>          <font color=Cyan>(</font><font color=Magenta>"when looking for a markup decl,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line374)"></a> <font color=Blue>--       (\  (ELEMENT, ATTLIST, ENTITY, NOTATION, &lt;!--comment--&gt;, or &lt;?PI?&gt;")</font>+<a name="(line375)"></a>+<a name="(line376)"></a><a name="extsubset"></a>extsubset <font color=Red>::</font> XParser ExtSubset+<a name="(line377)"></a>extsubset <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line378)"></a>    td <font color=Red>&lt;-</font> maybe textdecl+<a name="(line379)"></a>    ds <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>+<a name="(line380)"></a>    return <font color=Cyan>(</font>ExtSubset td ds<font color=Cyan>)</font>+<a name="(line381)"></a>+<a name="(line382)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> XParser ExtSubsetDecl+<a name="(line383)"></a>extsubsetdecl <font color=Red>=</font>+<a name="(line384)"></a>    <font color=Cyan>(</font> markupdecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> ExtMarkupDecl<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line385)"></a>    <font color=Cyan>(</font> conditionalsect <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> ExtConditionalSect<font color=Cyan>)</font>+<a name="(line386)"></a>+<a name="(line387)"></a><a name="sddecl"></a>sddecl <font color=Red>::</font> XParser SDDecl+<a name="(line388)"></a>sddecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line389)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"standalone"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"STANDALONE"</font><font color=Cyan>)</font>+<a name="(line390)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line391)"></a>      tok TokEqual <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing = in 'standalone' decl"</font>+<a name="(line392)"></a>      bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line393)"></a>              <font color=Cyan>(</font> <font color=Cyan>(</font>word <font color=Magenta>"yes"</font> <font color=Cyan>&gt;&gt;</font> return True<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line394)"></a>                <font color=Cyan>(</font>word <font color=Magenta>"no"</font> <font color=Cyan>&gt;&gt;</font> return False<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line395)"></a>                failP <font color=Magenta>"'standalone' decl requires 'yes' or 'no' value"</font> <font color=Cyan>)</font>+<a name="(line396)"></a>+<a name="(line397)"></a><font color=Blue>{-+<a name="(line398)"></a>element :: XParser (Element Posn)+<a name="(line399)"></a>element = do+<a name="(line400)"></a>    tok TokAnyOpen+<a name="(line401)"></a>    (ElemTag n as) &lt;- elemtag+<a name="(line402)"></a>    oneOf' [ ("self-closing tag &lt;"++n++"/&gt;"+<a name="(line403)"></a>             ,  do tok TokEndClose+<a name="(line404)"></a>                   return (Elem n as []))+<a name="(line405)"></a>           , ("after open tag &lt;"++n++"&gt;"+<a name="(line406)"></a>             ,  do tok TokAnyClose+<a name="(line407)"></a>                   cs &lt;- many content+<a name="(line408)"></a>                   p  &lt;- posn+<a name="(line409)"></a>                   m  &lt;- bracket (tok TokEndOpen) (tok TokAnyClose) name+<a name="(line410)"></a>                   checkmatch p n m+<a name="(line411)"></a>                   return (Elem n as cs))+<a name="(line412)"></a>           ] `adjustErr` (("in element tag "++n++",\n")++)+<a name="(line413)"></a>-}</font>+<a name="(line414)"></a>+<a name="(line415)"></a><a name="element"></a><font color=Blue>-- | Return a complete element including all its inner content.</font>+<a name="(line416)"></a>element <font color=Red>::</font> XParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>+<a name="(line417)"></a>element <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line418)"></a>    tok TokAnyOpen+<a name="(line419)"></a>    <font color=Cyan>(</font>ElemTag n <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> elemtag+<a name="(line420)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokEndClose+<a name="(line421)"></a>         commit <font color=Cyan>(</font>return <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line422)"></a>        <font color=Cyan>`onFail`</font>+<a name="(line423)"></a>      <font color=Green><u>do</u></font> tok TokAnyClose+<a name="(line424)"></a>         commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line425)"></a>           return <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>`apply`</font>+<a name="(line426)"></a>                 manyFinally content+<a name="(line427)"></a>                             <font color=Cyan>(</font><font color=Green><u>do</u></font> p <font color=Red>&lt;-</font> posn+<a name="(line428)"></a>                                 m <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokEndOpen<font color=Cyan>)</font>+<a name="(line429)"></a>                                              <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font> name+<a name="(line430)"></a>                                 checkmatch p n m<font color=Cyan>)</font>+<a name="(line431)"></a>      <font color=Cyan>)</font> <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in element tag "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line432)"></a>+<a name="(line433)"></a><a name="checkmatch"></a>checkmatch <font color=Red>::</font> Posn <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> XParser ()+<a name="(line434)"></a>checkmatch p n m <font color=Red>=</font>+<a name="(line435)"></a>  <font color=Green><u>if</u></font> n <font color=Cyan>==</font> m <font color=Green><u>then</u></font> return ()+<a name="(line436)"></a>  <font color=Green><u>else</u></font> failBadP <font color=Cyan>(</font><font color=Magenta>"tag &lt;"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>"&gt; terminated by &lt;/"</font><font color=Cyan>++</font>m<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line437)"></a>+<a name="(line438)"></a><a name="elemtag"></a><font color=Blue>-- | Parse only the parts between angle brackets in an element tag.</font>+<a name="(line439)"></a>elemtag <font color=Red>::</font> XParser ElemTag+<a name="(line440)"></a>elemtag <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line441)"></a>    n  <font color=Red>&lt;-</font> name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"malformed element tag\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line442)"></a>    <font color=Green><u>as</u></font> <font color=Red>&lt;-</font> many attribute+<a name="(line443)"></a>    return <font color=Cyan>(</font>ElemTag n <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line444)"></a>+<a name="(line445)"></a><a name="elemOpenTag"></a><font color=Blue>-- | For use with stream parsers - returns the complete opening element tag.</font>+<a name="(line446)"></a>elemOpenTag <font color=Red>::</font> XParser ElemTag+<a name="(line447)"></a>elemOpenTag <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line448)"></a>    tok TokAnyOpen+<a name="(line449)"></a>    e <font color=Red>&lt;-</font> elemtag+<a name="(line450)"></a>    tok TokAnyClose+<a name="(line451)"></a>    return e+<a name="(line452)"></a>+<a name="(line453)"></a><a name="elemCloseTag"></a><font color=Blue>-- | For use with stream parsers - accepts a closing tag, provided it</font>+<a name="(line454)"></a><font color=Blue>--   matches the given element name.</font>+<a name="(line455)"></a>elemCloseTag <font color=Red>::</font> Name <font color=Red>-&gt;</font> XParser ()+<a name="(line456)"></a>elemCloseTag n <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line457)"></a>    tok TokEndOpen+<a name="(line458)"></a>    p <font color=Red>&lt;-</font> posn+<a name="(line459)"></a>    m <font color=Red>&lt;-</font> name+<a name="(line460)"></a>    tok TokAnyClose+<a name="(line461)"></a>    checkmatch p n m+<a name="(line462)"></a>+<a name="(line463)"></a><a name="attribute"></a>attribute <font color=Red>::</font> XParser Attribute+<a name="(line464)"></a>attribute <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line465)"></a>    n <font color=Red>&lt;-</font> name <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"malformed attribute name\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line466)"></a>    tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing = in attribute"</font>+<a name="(line467)"></a>    v <font color=Red>&lt;-</font> attvalue <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing attvalue"</font>+<a name="(line468)"></a>    return <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font>+<a name="(line469)"></a>+<a name="(line470)"></a><a name="content"></a><font color=Blue>-- | Return a content particle, e.g. text, element, reference, etc</font>+<a name="(line471)"></a>content <font color=Red>::</font> XParser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font>+<a name="(line472)"></a>content <font color=Red>=</font>+<a name="(line473)"></a>  <font color=Green><u>do</u></font> <font color=Cyan>{</font> p  <font color=Red>&lt;-</font> posn+<a name="(line474)"></a>     <font color=Cyan>;</font> c' <font color=Red>&lt;-</font> content'+<a name="(line475)"></a>     <font color=Cyan>;</font> return <font color=Cyan>(</font>c' p<font color=Cyan>)</font>+<a name="(line476)"></a>     <font color=Cyan>}</font>+<a name="(line477)"></a>  <font color=Green><u>where</u></font>+<a name="(line478)"></a>     content' <font color=Red>=</font> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"element"</font><font color=Cyan>,</font>   element   <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CElem<font color=Cyan>)</font>+<a name="(line479)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"chardata"</font><font color=Cyan>,</font>  chardata  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CString False<font color=Cyan>)</font>+<a name="(line480)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CRef<font color=Cyan>)</font>+<a name="(line481)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"CDATA"</font><font color=Cyan>,</font>     cdsect    <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CString True<font color=Cyan>)</font>+<a name="(line482)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"misc"</font><font color=Cyan>,</font>      misc      <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CMisc<font color=Cyan>)</font>+<a name="(line483)"></a>                       <font color=Red>]</font>+<a name="(line484)"></a>                  <font color=Cyan>`adjustErrP`</font> <font color=Cyan>(</font><font color=Magenta>"when looking for a content item,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line485)"></a><font color=Blue>-- (\    (element, text, reference, CDATA section, &lt;!--comment--&gt;, or &lt;?PI?&gt;")</font>+<a name="(line486)"></a>+<a name="(line487)"></a><a name="elementdecl"></a>elementdecl <font color=Red>::</font> XParser ElementDecl+<a name="(line488)"></a>elementdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line489)"></a>    tok TokSpecialOpen+<a name="(line490)"></a>    tok <font color=Cyan>(</font>TokSpecial ELEMENTx<font color=Cyan>)</font>+<a name="(line491)"></a>    n <font color=Red>&lt;-</font> peRef name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"expecting identifier in ELEMENT decl\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line492)"></a>    c <font color=Red>&lt;-</font> peRef contentspec+<a name="(line493)"></a>             <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in content spec of ELEMENT decl: "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line494)"></a>    blank <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failBadP+<a name="(line495)"></a>       <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating ELEMENT decl"</font>+<a name="(line496)"></a>       <font color=Cyan>++</font><font color=Magenta>"\n    element name was "</font><font color=Cyan>++</font>show n+<a name="(line497)"></a>       <font color=Cyan>++</font><font color=Magenta>"\n    contentspec was "</font><font color=Cyan>++</font><font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>ContentSpec p<font color=Cyan>)</font><font color=Red>-&gt;</font> show p<font color=Cyan>)</font> c<font color=Cyan>)</font>+<a name="(line498)"></a>    return <font color=Cyan>(</font>ElementDecl n c<font color=Cyan>)</font>+<a name="(line499)"></a>+<a name="(line500)"></a><a name="contentspec"></a>contentspec <font color=Red>::</font> XParser ContentSpec+<a name="(line501)"></a>contentspec <font color=Red>=</font>+<a name="(line502)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"EMPTY"</font><font color=Cyan>,</font>  peRef <font color=Cyan>(</font>word <font color=Magenta>"EMPTY"</font><font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return EMPTY<font color=Cyan>)</font>+<a name="(line503)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ANY"</font><font color=Cyan>,</font>    peRef <font color=Cyan>(</font>word <font color=Magenta>"ANY"</font><font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return ANY<font color=Cyan>)</font>+<a name="(line504)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"mixed"</font><font color=Cyan>,</font>  peRef mixed <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Mixed<font color=Cyan>)</font>+<a name="(line505)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"simple"</font><font color=Cyan>,</font> peRef cp <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> ContentSpec<font color=Cyan>)</font>+<a name="(line506)"></a>           <font color=Red>]</font>+<a name="(line507)"></a> <font color=Blue>--   `adjustErr` ("when looking for content spec,\n"++)</font>+<a name="(line508)"></a> <font color=Blue>--   `adjustErr` (++"\nLooking for content spec (EMPTY, ANY, mixed, etc)")</font>+<a name="(line509)"></a>+<a name="(line510)"></a><a name="choice"></a>choice <font color=Red>::</font> XParser <font color=Red>[</font>CP<font color=Red>]</font>+<a name="(line511)"></a>choice <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line512)"></a>    bracket <font color=Cyan>(</font>tok TokBraOpen <font color=Cyan>`debug`</font> <font color=Magenta>"Trying choice"</font><font color=Cyan>)</font>+<a name="(line513)"></a>            <font color=Cyan>(</font>blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>`debug`</font> <font color=Magenta>"Succeeded with choice"</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line514)"></a>            <font color=Cyan>(</font>peRef cp <font color=Cyan>`sepBy1`</font> blank <font color=Cyan>(</font>tok TokPipe<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line515)"></a>+<a name="(line516)"></a><a name="sequence"></a>sequence <font color=Red>::</font> XParser <font color=Red>[</font>CP<font color=Red>]</font>+<a name="(line517)"></a>sequence <font color=Red>=</font> <font color=Green><u>do</u></font>	<font color=Blue>-- bracket is inappropriate because of inner failBad</font>+<a name="(line518)"></a> <font color=Blue>-- bracket (tok TokBraOpen `debug` "Trying sequence")</font>+<a name="(line519)"></a> <font color=Blue>--         (blank (tok TokBraClose `debug` "Succeeded with sequence"))</font>+<a name="(line520)"></a> <font color=Blue>--         (peRef cp `sepBy1` blank (tok TokComma))</font>+<a name="(line521)"></a>    tok TokBraOpen <font color=Cyan>`debug`</font> <font color=Magenta>"Trying sequence"</font>+<a name="(line522)"></a>    cps <font color=Red>&lt;-</font> peRef cp <font color=Cyan>`sepBy1`</font> blank <font color=Cyan>(</font>tok TokComma<font color=Cyan>)</font>+<a name="(line523)"></a>    blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>`debug`</font> <font color=Magenta>"Succeeded with sequence"</font><font color=Cyan>)</font>+<a name="(line524)"></a>    return cps+<a name="(line525)"></a>+<a name="(line526)"></a><a name="cp"></a>cp <font color=Red>::</font> XParser CP+<a name="(line527)"></a>cp <font color=Red>=</font> oneOf <font color=Red>[</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> n <font color=Red>&lt;-</font> name+<a name="(line528)"></a>                  m <font color=Red>&lt;-</font> modifier+<a name="(line529)"></a>                  <font color=Green><u>let</u></font> c <font color=Red>=</font> TagName n m+<a name="(line530)"></a>                  return c <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ContentSpec: name "</font><font color=Cyan>++</font>show c<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line531)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> ss <font color=Red>&lt;-</font> sequence+<a name="(line532)"></a>                  m <font color=Red>&lt;-</font> modifier+<a name="(line533)"></a>                  <font color=Green><u>let</u></font> c <font color=Red>=</font> Seq ss m+<a name="(line534)"></a>                  return c <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ContentSpec: sequence "</font><font color=Cyan>++</font>show c<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line535)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> cs <font color=Red>&lt;-</font> choice+<a name="(line536)"></a>                  m <font color=Red>&lt;-</font> modifier+<a name="(line537)"></a>                  <font color=Green><u>let</u></font> c <font color=Red>=</font> Choice cs m+<a name="(line538)"></a>                  return c <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ContentSpec: choice "</font><font color=Cyan>++</font>show c<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line539)"></a>           <font color=Red>]</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"\nwhen looking for a content particle"</font><font color=Cyan>)</font>+<a name="(line540)"></a>+<a name="(line541)"></a><a name="modifier"></a>modifier <font color=Red>::</font> XParser Modifier+<a name="(line542)"></a>modifier <font color=Red>=</font> oneOf <font color=Red>[</font> <font color=Cyan>(</font> tok TokStar <font color=Cyan>&gt;&gt;</font> return Star <font color=Cyan>)</font>+<a name="(line543)"></a>                 <font color=Cyan>,</font> <font color=Cyan>(</font> tok TokQuery <font color=Cyan>&gt;&gt;</font> return Query <font color=Cyan>)</font>+<a name="(line544)"></a>                 <font color=Cyan>,</font> <font color=Cyan>(</font> tok TokPlus <font color=Cyan>&gt;&gt;</font> return Plus <font color=Cyan>)</font>+<a name="(line545)"></a>                 <font color=Cyan>,</font> <font color=Cyan>(</font> return None <font color=Cyan>)</font>+<a name="(line546)"></a>                 <font color=Red>]</font>+<a name="(line547)"></a>+<a name="(line548)"></a><font color=Blue>-- just for debugging</font>+<a name="(line549)"></a><font color=Green><u>instance</u></font> Show CP <font color=Green><u>where</u></font>+<a name="(line550)"></a>    show <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font> <font color=Red>=</font> n<font color=Cyan>++</font>show m+<a name="(line551)"></a>    show <font color=Cyan>(</font>Choice cps m<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'('</font><font color=Red><b>:</b></font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>"|"</font> <font color=Cyan>(</font>map show cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line552)"></a>                          <font color=Cyan>++</font><font color=Magenta>")"</font><font color=Cyan>++</font>show m+<a name="(line553)"></a>    show <font color=Cyan>(</font>Seq cps m<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'('</font><font color=Red><b>:</b></font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>","</font> <font color=Cyan>(</font>map show cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line554)"></a>                          <font color=Cyan>++</font><font color=Magenta>")"</font><font color=Cyan>++</font>show m+<a name="(line555)"></a><font color=Green><u>instance</u></font> Show Modifier <font color=Green><u>where</u></font>+<a name="(line556)"></a>    show None <font color=Red>=</font> <font color=Magenta>""</font>+<a name="(line557)"></a>    show Query <font color=Red>=</font> <font color=Magenta>"?"</font>+<a name="(line558)"></a>    show Star <font color=Red>=</font> <font color=Magenta>"*"</font>+<a name="(line559)"></a>    show Plus <font color=Red>=</font> <font color=Magenta>"+"</font>+<a name="(line560)"></a><font color=Blue>----</font>+<a name="(line561)"></a>+<a name="(line562)"></a><a name="mixed"></a>mixed <font color=Red>::</font> XParser Mixed+<a name="(line563)"></a>mixed <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line564)"></a>    tok TokBraOpen+<a name="(line565)"></a>    peRef <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokHash+<a name="(line566)"></a>              word <font color=Magenta>"PCDATA"</font><font color=Cyan>)</font>+<a name="(line567)"></a>    commit <font color=Cyan>$</font>+<a name="(line568)"></a>      oneOf <font color=Red>[</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> cs <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokPipe+<a name="(line569)"></a>                                         peRef name<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line570)"></a>                   blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>&gt;&gt;</font> tok TokStar<font color=Cyan>)</font>+<a name="(line571)"></a>                   return <font color=Cyan>(</font>PCDATAplus cs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line572)"></a>            <font color=Cyan>,</font> <font color=Cyan>(</font> blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>&gt;&gt;</font> tok TokStar<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return PCDATA<font color=Cyan>)</font>+<a name="(line573)"></a>            <font color=Cyan>,</font> <font color=Cyan>(</font> blank <font color=Cyan>(</font>tok TokBraClose<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return PCDATA<font color=Cyan>)</font>+<a name="(line574)"></a>            <font color=Red>]</font>+<a name="(line575)"></a>        <font color=Cyan>`adjustErrP`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"\nLooking for mixed content spec (#PCDATA | ...)*\n"</font><font color=Cyan>)</font>+<a name="(line576)"></a>+<a name="(line577)"></a><a name="attlistdecl"></a>attlistdecl <font color=Red>::</font> XParser AttListDecl+<a name="(line578)"></a>attlistdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line579)"></a>    tok TokSpecialOpen+<a name="(line580)"></a>    tok <font color=Cyan>(</font>TokSpecial ATTLISTx<font color=Cyan>)</font>+<a name="(line581)"></a>    n <font color=Red>&lt;-</font> peRef name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"expecting identifier in ATTLIST\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line582)"></a>    ds <font color=Red>&lt;-</font> peRef <font color=Cyan>(</font>many1 <font color=Cyan>(</font>peRef attdef<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line583)"></a>    blank <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing &gt; terminating ATTLIST"</font>+<a name="(line584)"></a>    return <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font>+<a name="(line585)"></a>+<a name="(line586)"></a><a name="attdef"></a>attdef <font color=Red>::</font> XParser AttDef+<a name="(line587)"></a>attdef <font color=Red>=</font>+<a name="(line588)"></a>  <font color=Green><u>do</u></font> n <font color=Red>&lt;-</font> peRef name <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"expecting attribute name\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line589)"></a>     t <font color=Red>&lt;-</font> peRef atttype <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"within attlist defn: "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line590)"></a>     d <font color=Red>&lt;-</font> peRef defaultdecl <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in attlist defn: "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line591)"></a>     return <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font>+<a name="(line592)"></a>+<a name="(line593)"></a><a name="atttype"></a>atttype <font color=Red>::</font> XParser AttType+<a name="(line594)"></a>atttype <font color=Red>=</font>+<a name="(line595)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"CDATA"</font><font color=Cyan>,</font>      word <font color=Magenta>"CDATA"</font> <font color=Cyan>&gt;&gt;</font> return StringType<font color=Cyan>)</font>+<a name="(line596)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tokenized"</font><font color=Cyan>,</font>  tokenizedtype <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> TokenizedType<font color=Cyan>)</font>+<a name="(line597)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"enumerated"</font><font color=Cyan>,</font> enumeratedtype <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EnumeratedType<font color=Cyan>)</font>+<a name="(line598)"></a>           <font color=Red>]</font>+<a name="(line599)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for ATTTYPE,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line600)"></a> <font color=Blue>--   `adjustErr` (++"\nLooking for ATTTYPE (CDATA, tokenized, or enumerated")</font>+<a name="(line601)"></a>+<a name="(line602)"></a><a name="tokenizedtype"></a>tokenizedtype <font color=Red>::</font> XParser TokenizedType+<a name="(line603)"></a>tokenizedtype <font color=Red>=</font>+<a name="(line604)"></a>    oneOf <font color=Red>[</font> <font color=Cyan>(</font> word <font color=Magenta>"ID"</font> <font color=Cyan>&gt;&gt;</font> return ID<font color=Cyan>)</font>+<a name="(line605)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"IDREF"</font> <font color=Cyan>&gt;&gt;</font> return IDREF<font color=Cyan>)</font>+<a name="(line606)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"IDREFS"</font> <font color=Cyan>&gt;&gt;</font> return IDREFS<font color=Cyan>)</font>+<a name="(line607)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"ENTITY"</font> <font color=Cyan>&gt;&gt;</font> return ENTITY<font color=Cyan>)</font>+<a name="(line608)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"ENTITIES"</font> <font color=Cyan>&gt;&gt;</font> return ENTITIES<font color=Cyan>)</font>+<a name="(line609)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"NMTOKEN"</font> <font color=Cyan>&gt;&gt;</font> return NMTOKEN<font color=Cyan>)</font>+<a name="(line610)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"NMTOKENS"</font> <font color=Cyan>&gt;&gt;</font> return NMTOKENS<font color=Cyan>)</font>+<a name="(line611)"></a>          <font color=Red>]</font> <font color=Cyan>`onFail`</font>+<a name="(line612)"></a>    <font color=Green><u>do</u></font> <font color=Cyan>{</font> t <font color=Red>&lt;-</font> next+<a name="(line613)"></a>       <font color=Cyan>;</font> failP <font color=Cyan>(</font><font color=Magenta>"Expected one of"</font>+<a name="(line614)"></a>               <font color=Cyan>++</font><font color=Magenta>" (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)"</font>+<a name="(line615)"></a>               <font color=Cyan>++</font><font color=Magenta>"\nbut got "</font><font color=Cyan>++</font>show t<font color=Cyan>)</font>+<a name="(line616)"></a>       <font color=Cyan>}</font>+<a name="(line617)"></a><font color=Blue>-- `adjustErr` (++"\nLooking for a tokenized type:\n\ </font>+<a name="(line618)"></a><font color=Blue>-- \    (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)")</font>+<a name="(line619)"></a>+<a name="(line620)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Red>::</font> XParser EnumeratedType+<a name="(line621)"></a>enumeratedtype <font color=Red>=</font>+<a name="(line622)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"NOTATION"</font><font color=Cyan>,</font>   notationtype <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> NotationType<font color=Cyan>)</font>+<a name="(line623)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"enumerated"</font><font color=Cyan>,</font> enumeration <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Enumeration<font color=Cyan>)</font>+<a name="(line624)"></a>           <font color=Red>]</font>+<a name="(line625)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an enumerated or NOTATION type,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line626)"></a>+<a name="(line627)"></a><a name="notationtype"></a>notationtype <font color=Red>::</font> XParser NotationType+<a name="(line628)"></a>notationtype <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line629)"></a>    word <font color=Magenta>"NOTATION"</font>+<a name="(line630)"></a>    bracket <font color=Cyan>(</font>tok TokBraOpen<font color=Cyan>)</font> <font color=Cyan>(</font>blank <font color=Cyan>(</font>tok TokBraClose<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line631)"></a>            <font color=Cyan>(</font>peRef name <font color=Cyan>`sepBy1`</font> peRef <font color=Cyan>(</font>tok TokPipe<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line632)"></a>+<a name="(line633)"></a><a name="enumeration"></a>enumeration <font color=Red>::</font> XParser Enumeration+<a name="(line634)"></a>enumeration <font color=Red>=</font>+<a name="(line635)"></a>    bracket <font color=Cyan>(</font>tok TokBraOpen<font color=Cyan>)</font> <font color=Cyan>(</font>blank <font color=Cyan>(</font>tok TokBraClose<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line636)"></a>            <font color=Cyan>(</font>peRef nmtoken <font color=Cyan>`sepBy1`</font> blank <font color=Cyan>(</font>peRef <font color=Cyan>(</font>tok TokPipe<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line637)"></a>+<a name="(line638)"></a><a name="defaultdecl"></a>defaultdecl <font color=Red>::</font> XParser DefaultDecl+<a name="(line639)"></a>defaultdecl <font color=Red>=</font>+<a name="(line640)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"REQUIRED"</font><font color=Cyan>,</font>  tok TokHash <font color=Cyan>&gt;&gt;</font> word <font color=Magenta>"REQUIRED"</font> <font color=Cyan>&gt;&gt;</font> return REQUIRED<font color=Cyan>)</font>+<a name="(line641)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"IMPLIED"</font><font color=Cyan>,</font>   tok TokHash <font color=Cyan>&gt;&gt;</font> word <font color=Magenta>"IMPLIED"</font> <font color=Cyan>&gt;&gt;</font> return IMPLIED<font color=Cyan>)</font>+<a name="(line642)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"FIXED"</font><font color=Cyan>,</font>     <font color=Green><u>do</u></font> f <font color=Red>&lt;-</font> maybe <font color=Cyan>(</font>tok TokHash <font color=Cyan>&gt;&gt;</font> word <font color=Magenta>"FIXED"</font>+<a name="(line643)"></a>                                                      <font color=Cyan>&gt;&gt;</font> return FIXED<font color=Cyan>)</font>+<a name="(line644)"></a>                              a <font color=Red>&lt;-</font> peRef attvalue+<a name="(line645)"></a>                              return <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line646)"></a>           <font color=Red>]</font>+<a name="(line647)"></a>        <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an attribute default decl,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line648)"></a><font color=Blue>--      `adjustErr` (++"\nLooking for an attribute default decl:\n\ </font>+<a name="(line649)"></a><font color=Blue>-- \    (REQUIRED, IMPLIED, FIXED)")</font>+<a name="(line650)"></a>+<a name="(line651)"></a><a name="conditionalsect"></a>conditionalsect <font color=Red>::</font> XParser ConditionalSect+<a name="(line652)"></a>conditionalsect <font color=Red>=</font> oneOf'+<a name="(line653)"></a>    <font color=Red>[</font> <font color=Cyan>(</font> <font color=Magenta>"INCLUDE"</font>+<a name="(line654)"></a>      <font color=Cyan>,</font> <font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line655)"></a>           peRef <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection INCLUDEx<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line656)"></a>           p <font color=Red>&lt;-</font> posn+<a name="(line657)"></a>           tok TokSqOpen <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing [ after INCLUDE"</font>+<a name="(line658)"></a>           i <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>+<a name="(line659)"></a>           tok TokSectionClose+<a name="(line660)"></a>                   <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"missing ]]&gt; for INCLUDE section"</font>+<a name="(line661)"></a>                                     <font color=Cyan>++</font><font color=Magenta>"\n    begun at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line662)"></a>           return <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line663)"></a>    <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"IGNORE"</font>+<a name="(line664)"></a>      <font color=Cyan>,</font> <font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line665)"></a>           peRef <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection IGNOREx<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line666)"></a>           p <font color=Red>&lt;-</font> posn+<a name="(line667)"></a>           tok TokSqOpen <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing [ after IGNORE"</font>+<a name="(line668)"></a>           i <font color=Red>&lt;-</font> many newIgnore  <font color=Blue>-- many ignoresectcontents</font>+<a name="(line669)"></a>           tok TokSectionClose+<a name="(line670)"></a>                   <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"missing ]]&gt; for IGNORE section"</font>+<a name="(line671)"></a>                                     <font color=Cyan>++</font><font color=Magenta>"\n    begun at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line672)"></a>           return <font color=Cyan>(</font>IgnoreSect []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line673)"></a>    <font color=Red>]</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"in a conditional section,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line674)"></a>+<a name="(line675)"></a><a name="newIgnore"></a>newIgnore <font color=Red>::</font> XParser Ignore+<a name="(line676)"></a>newIgnore <font color=Red>=</font>+<a name="(line677)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line678)"></a>         many newIgnore <font color=Cyan>`debug`</font> <font color=Magenta>"IGNORING conditional section"</font>+<a name="(line679)"></a>         tok TokSectionClose+<a name="(line680)"></a>         return Ignore <font color=Cyan>`debug`</font> <font color=Magenta>"end of IGNORED conditional section"</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line681)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> t <font color=Red>&lt;-</font> nottok <font color=Red>[</font>TokSectionOpen<font color=Cyan>,</font>TokSectionClose<font color=Red>]</font>+<a name="(line682)"></a>         return Ignore  <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ignoring: "</font><font color=Cyan>++</font>show t<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line683)"></a>+<a name="(line684)"></a><a name="ignoresectcontents"></a><font color=Blue>--- obsolete?</font>+<a name="(line685)"></a>ignoresectcontents <font color=Red>::</font> XParser IgnoreSectContents+<a name="(line686)"></a>ignoresectcontents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line687)"></a>    i <font color=Red>&lt;-</font> ignore+<a name="(line688)"></a>    is <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line689)"></a>                   ic <font color=Red>&lt;-</font> ignoresectcontents+<a name="(line690)"></a>                   tok TokSectionClose+<a name="(line691)"></a>                   ig <font color=Red>&lt;-</font> ignore+<a name="(line692)"></a>                   return <font color=Cyan>(</font>ic<font color=Cyan>,</font>ig<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line693)"></a>    return <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>+<a name="(line694)"></a>+<a name="(line695)"></a><a name="ignore"></a>ignore <font color=Red>::</font> XParser Ignore+<a name="(line696)"></a>ignore <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line697)"></a>  is <font color=Red>&lt;-</font> many1 <font color=Cyan>(</font>nottok <font color=Red>[</font>TokSectionOpen<font color=Cyan>,</font>TokSectionClose<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line698)"></a>  return Ignore  <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ignored all of: "</font><font color=Cyan>++</font>show is<font color=Cyan>)</font>+<a name="(line699)"></a><font color=Blue>----</font>+<a name="(line700)"></a>+<a name="(line701)"></a><a name="reference"></a><font color=Blue>-- | Return either a general entity reference, or a character reference.</font>+<a name="(line702)"></a>reference <font color=Red>::</font> XParser Reference+<a name="(line703)"></a>reference <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line704)"></a>    bracket <font color=Cyan>(</font>tok TokAmp<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSemi<font color=Cyan>)</font> <font color=Cyan>(</font>freetext <font color=Cyan>&gt;&gt;=</font> val<font color=Cyan>)</font>+<a name="(line705)"></a>  <font color=Green><u>where</u></font>+<a name="(line706)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font><font color=Magenta>'x'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font> <font color=Red>|</font> all isHexDigit i+<a name="(line707)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readHex <font color=Cyan>$</font> i+<a name="(line708)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font>     <font color=Red>|</font> all isDigit i+<a name="(line709)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readDec <font color=Cyan>$</font> i+<a name="(line710)"></a>    val name        <font color=Red>=</font> return <font color=Cyan>.</font> RefEntity <font color=Cyan>$</font> name+<a name="(line711)"></a>+<a name="(line712)"></a><font color=Blue>{- -- following is incorrect+<a name="(line713)"></a>reference =+<a name="(line714)"></a>    ( charref &gt;&gt;= return . RefChar) `onFail`+<a name="(line715)"></a>    ( entityref &gt;&gt;= return . RefEntity)+<a name="(line716)"></a>+<a name="(line717)"></a>entityref :: XParser EntityRef+<a name="(line718)"></a>entityref = do+<a name="(line719)"></a>    bracket (tok TokAmp) (tok TokSemi) name+<a name="(line720)"></a>+<a name="(line721)"></a>charref :: XParser CharRef+<a name="(line722)"></a>charref = do+<a name="(line723)"></a>    bracket (tok TokAmp) (tok TokSemi) (freetext &gt;&gt;= readCharVal)+<a name="(line724)"></a>  where+<a name="(line725)"></a>    readCharVal ('#':'x':i) = return . fst . head . readHex $ i+<a name="(line726)"></a>    readCharVal ('#':i)     = return . fst . head . readDec $ i+<a name="(line727)"></a>    readCharVal _           = mzero+<a name="(line728)"></a>-}</font>+<a name="(line729)"></a>+<a name="(line730)"></a><a name="pereference"></a>pereference <font color=Red>::</font> XParser PEReference+<a name="(line731)"></a>pereference <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line732)"></a>    bracket <font color=Cyan>(</font>tok TokPercent<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSemi<font color=Cyan>)</font> nmtoken+<a name="(line733)"></a>+<a name="(line734)"></a><a name="entitydecl"></a>entitydecl <font color=Red>::</font> XParser EntityDecl+<a name="(line735)"></a>entitydecl <font color=Red>=</font>+<a name="(line736)"></a>    <font color=Cyan>(</font> gedecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EntityGEDecl<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line737)"></a>    <font color=Cyan>(</font> pedecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EntityPEDecl<font color=Cyan>)</font>+<a name="(line738)"></a>+<a name="(line739)"></a><a name="gedecl"></a>gedecl <font color=Red>::</font> XParser GEDecl+<a name="(line740)"></a>gedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line741)"></a>    tok TokSpecialOpen+<a name="(line742)"></a>    tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>+<a name="(line743)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line744)"></a>    e <font color=Red>&lt;-</font> entitydef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in general entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line745)"></a>    tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating G ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line746)"></a>    stUpdate <font color=Cyan>(</font>addGE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added GE defn &amp;"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line747)"></a>    return <font color=Cyan>(</font>GEDecl n e<font color=Cyan>)</font>+<a name="(line748)"></a>+<a name="(line749)"></a><a name="pedecl"></a>pedecl <font color=Red>::</font> XParser PEDecl+<a name="(line750)"></a>pedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line751)"></a>    tok TokSpecialOpen+<a name="(line752)"></a>    tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>+<a name="(line753)"></a>    tok TokPercent+<a name="(line754)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line755)"></a>    e <font color=Red>&lt;-</font> pedef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in parameter entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line756)"></a>    tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating P ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line757)"></a>    stUpdate <font color=Cyan>(</font>addPE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added PE defn %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";\n"</font><font color=Cyan>++</font>show e<font color=Cyan>)</font>+<a name="(line758)"></a>    return <font color=Cyan>(</font>PEDecl n e<font color=Cyan>)</font>+<a name="(line759)"></a>+<a name="(line760)"></a><a name="entitydef"></a>entitydef <font color=Red>::</font> XParser EntityDef+<a name="(line761)"></a>entitydef <font color=Red>=</font>+<a name="(line762)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> DefEntityValue<font color=Cyan>)</font>+<a name="(line763)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"external"</font><font color=Cyan>,</font>    <font color=Green><u>do</u></font> eid <font color=Red>&lt;-</font> externalid+<a name="(line764)"></a>                                ndd <font color=Red>&lt;-</font> maybe ndatadecl+<a name="(line765)"></a>                                return <font color=Cyan>(</font>DefExternalID eid ndd<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line766)"></a>           <font color=Red>]</font>+<a name="(line767)"></a>+<a name="(line768)"></a><a name="pedef"></a>pedef <font color=Red>::</font> XParser PEDef+<a name="(line769)"></a>pedef <font color=Red>=</font>+<a name="(line770)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PEDefEntityValue<font color=Cyan>)</font>+<a name="(line771)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"externalid"</font><font color=Cyan>,</font>  externalid  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PEDefExternalID<font color=Cyan>)</font>+<a name="(line772)"></a>           <font color=Red>]</font>+<a name="(line773)"></a>+<a name="(line774)"></a><a name="externalid"></a>externalid <font color=Red>::</font> XParser ExternalID+<a name="(line775)"></a>externalid <font color=Red>=</font>+<a name="(line776)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"SYSTEM"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"SYSTEM"</font>+<a name="(line777)"></a>                           s <font color=Red>&lt;-</font> systemliteral+<a name="(line778)"></a>                           return <font color=Cyan>(</font>SYSTEM s<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line779)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"PUBLIC"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"PUBLIC"</font>+<a name="(line780)"></a>                           p <font color=Red>&lt;-</font> pubidliteral+<a name="(line781)"></a>                           s <font color=Red>&lt;-</font> systemliteral+<a name="(line782)"></a>                           return <font color=Cyan>(</font>PUBLIC p s<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line783)"></a>           <font color=Red>]</font>+<a name="(line784)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an external id,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line785)"></a>+<a name="(line786)"></a><a name="ndatadecl"></a>ndatadecl <font color=Red>::</font> XParser NDataDecl+<a name="(line787)"></a>ndatadecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line788)"></a>    word <font color=Magenta>"NDATA"</font>+<a name="(line789)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line790)"></a>    return <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>+<a name="(line791)"></a>+<a name="(line792)"></a><a name="textdecl"></a>textdecl <font color=Red>::</font> XParser TextDecl+<a name="(line793)"></a>textdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line794)"></a>    tok TokPIOpen+<a name="(line795)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line796)"></a>    v <font color=Red>&lt;-</font> maybe versioninfo+<a name="(line797)"></a>    e <font color=Red>&lt;-</font> encodingdecl+<a name="(line798)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"expected ?&gt; terminating text decl"</font>+<a name="(line799)"></a>    return <font color=Cyan>(</font>TextDecl v e<font color=Cyan>)</font>+<a name="(line800)"></a>+<a name="(line801)"></a><a name="extparsedent"></a>extparsedent <font color=Red>::</font> XParser <font color=Cyan>(</font>ExtParsedEnt Posn<font color=Cyan>)</font>+<a name="(line802)"></a>extparsedent <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line803)"></a>    t <font color=Red>&lt;-</font> maybe textdecl+<a name="(line804)"></a>    c <font color=Red>&lt;-</font> content+<a name="(line805)"></a>    return <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font>+<a name="(line806)"></a>+<a name="(line807)"></a><a name="extpe"></a>extpe <font color=Red>::</font> XParser ExtPE+<a name="(line808)"></a>extpe <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line809)"></a>    t <font color=Red>&lt;-</font> maybe textdecl+<a name="(line810)"></a>    e <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>+<a name="(line811)"></a>    return <font color=Cyan>(</font>ExtPE t e<font color=Cyan>)</font>+<a name="(line812)"></a>+<a name="(line813)"></a><a name="encodingdecl"></a>encodingdecl <font color=Red>::</font> XParser EncodingDecl+<a name="(line814)"></a>encodingdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line815)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"encoding"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"ENCODING"</font><font color=Cyan>)</font>+<a name="(line816)"></a>    tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected = in 'encoding' decl"</font>+<a name="(line817)"></a>    f <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line818)"></a>    return <font color=Cyan>(</font>EncodingDecl f<font color=Cyan>)</font>+<a name="(line819)"></a>+<a name="(line820)"></a><a name="notationdecl"></a>notationdecl <font color=Red>::</font> XParser NotationDecl+<a name="(line821)"></a>notationdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line822)"></a>    tok TokSpecialOpen+<a name="(line823)"></a>    tok <font color=Cyan>(</font>TokSpecial NOTATIONx<font color=Cyan>)</font>+<a name="(line824)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line825)"></a>    e <font color=Red>&lt;-</font> either externalid publicid+<a name="(line826)"></a>    tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating NOTATION decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line827)"></a>    return <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>+<a name="(line828)"></a>+<a name="(line829)"></a><a name="publicid"></a>publicid <font color=Red>::</font> XParser PublicID+<a name="(line830)"></a>publicid <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line831)"></a>    word <font color=Magenta>"PUBLIC"</font>+<a name="(line832)"></a>    p <font color=Red>&lt;-</font> pubidliteral+<a name="(line833)"></a>    return <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>+<a name="(line834)"></a>+<a name="(line835)"></a><a name="entityvalue"></a>entityvalue <font color=Red>::</font> XParser EntityValue+<a name="(line836)"></a>entityvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line837)"></a> <font color=Blue>-- evs &lt;- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))</font>+<a name="(line838)"></a>    tok TokQuote+<a name="(line839)"></a>    pn <font color=Red>&lt;-</font> posn+<a name="(line840)"></a>    evs <font color=Red>&lt;-</font> many ev+<a name="(line841)"></a>    tok TokQuote <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected quote to terminate entityvalue"</font>+<a name="(line842)"></a>    <font color=Blue>-- quoted text must be rescanned for possible PERefs</font>+<a name="(line843)"></a>    st <font color=Red>&lt;-</font> stGet+<a name="(line844)"></a>    Prelude<font color=Cyan>.</font>either failBad <font color=Cyan>(</font>return <font color=Cyan>.</font> EntityValue<font color=Cyan>)</font> <font color=Cyan>.</font> fst3 <font color=Cyan>$</font>+<a name="(line845)"></a>                <font color=Cyan>(</font>runParser <font color=Cyan>(</font>many ev<font color=Cyan>)</font> st+<a name="(line846)"></a>                         <font color=Cyan>(</font>reLexEntityValue <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font> stringify <font color=Cyan>(</font>lookupPE s st<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line847)"></a>                                           pn+<a name="(line848)"></a>                                           <font color=Cyan>(</font>flattenEV <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line849)"></a>  <font color=Green><u>where</u></font>+<a name="(line850)"></a>    stringify <font color=Cyan>(</font>Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> Just <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font>+<a name="(line851)"></a>    stringify <font color=Green><u>_</u></font> <font color=Red>=</font> Nothing+<a name="(line852)"></a>+<a name="(line853)"></a><a name="ev"></a>ev <font color=Red>::</font> XParser EV+<a name="(line854)"></a>ev <font color=Red>=</font>+<a name="(line855)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"string"</font><font color=Cyan>,</font>    <font color=Cyan>(</font>string<font color=Cyan>`onFail`</font>freetext<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVString<font color=Cyan>)</font>+<a name="(line856)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVRef<font color=Cyan>)</font>+<a name="(line857)"></a>           <font color=Red>]</font>+<a name="(line858)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for entity value,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line859)"></a>+<a name="(line860)"></a><a name="attvalue"></a>attvalue <font color=Red>::</font> XParser AttValue+<a name="(line861)"></a>attvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line862)"></a>    avs <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line863)"></a>                   <font color=Cyan>(</font>many <font color=Cyan>(</font>either freetext reference<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line864)"></a>    return <font color=Cyan>(</font>AttValue avs<font color=Cyan>)</font>+<a name="(line865)"></a>+<a name="(line866)"></a><a name="systemliteral"></a>systemliteral <font color=Red>::</font> XParser SystemLiteral+<a name="(line867)"></a>systemliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line868)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line869)"></a>    return <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>            <font color=Blue>-- note: refs &amp;...; not permitted</font>+<a name="(line870)"></a>+<a name="(line871)"></a><a name="pubidliteral"></a>pubidliteral <font color=Red>::</font> XParser PubidLiteral+<a name="(line872)"></a>pubidliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line873)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line874)"></a>    return <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>             <font color=Blue>-- note: freetext is too liberal here</font>+<a name="(line875)"></a>+<a name="(line876)"></a><a name="chardata"></a><font color=Blue>-- | Return parsed freetext (i.e. until the next markup)</font>+<a name="(line877)"></a>chardata <font color=Red>::</font> XParser CharData+<a name="(line878)"></a>chardata <font color=Red>=</font> freetext+<a name="(line879)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/ParseLazy.html view
@@ -0,0 +1,892 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | A non-validating XML parser.  For the input grammar, see</font>+<a name="(line2)"></a><font color=Blue>--   &lt;<a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a>&gt;.</font>+<a name="(line3)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ParseLazy+<a name="(line4)"></a>  <font color=Cyan>(</font>+<a name="(line5)"></a>  <font color=Blue>-- * Parse a whole document</font>+<a name="(line6)"></a>    xmlParse  <font color=Blue>-- , xmlParse'</font>+<a name="(line7)"></a>  <font color=Blue>-- * Parse just a DTD</font>+<a name="(line8)"></a>  <font color=Cyan>,</font> dtdParse  <font color=Blue>-- , dtdParse'</font>+<a name="(line9)"></a>  <font color=Blue>-- * Parse a partial document</font>+<a name="(line10)"></a>  <font color=Cyan>,</font> xmlParseWith+<a name="(line11)"></a>  <font color=Blue>-- * Individual parsers for use with /xmlParseWith/ and module SAX</font>+<a name="(line12)"></a>  <font color=Cyan>,</font> document<font color=Cyan>,</font> element<font color=Cyan>,</font> content+<a name="(line13)"></a>  <font color=Cyan>,</font> comment<font color=Cyan>,</font> chardata+<a name="(line14)"></a>  <font color=Cyan>,</font> reference<font color=Cyan>,</font> doctypedecl+<a name="(line15)"></a>  <font color=Cyan>,</font> processinginstruction+<a name="(line16)"></a>  <font color=Cyan>,</font> elemtag<font color=Cyan>,</font> name<font color=Cyan>,</font> tok+<a name="(line17)"></a>  <font color=Cyan>,</font> elemOpenTag<font color=Cyan>,</font> elemCloseTag+<a name="(line18)"></a>  <font color=Cyan>,</font> emptySTs<font color=Cyan>,</font> XParser+<a name="(line19)"></a>  <font color=Blue>-- * These general utility functions don't belong here</font>+<a name="(line20)"></a>  <font color=Cyan>,</font> fst3<font color=Cyan>,</font> snd3<font color=Cyan>,</font> thd3+<a name="(line21)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line22)"></a>+<a name="(line23)"></a><font color=Blue>-- An XML parser, written using a slightly extended version of the</font>+<a name="(line24)"></a><font color=Blue>-- Hutton/Meijer parser combinators.  The input is tokenised internally</font>+<a name="(line25)"></a><font color=Blue>-- by the lexer xmlLex.  Whilst parsing, we gather a symbol</font>+<a name="(line26)"></a><font color=Blue>-- table of entity references.  PERefs must be defined before use, so we</font>+<a name="(line27)"></a><font color=Blue>-- expand their uses as we encounter them, forcing the remainder of the</font>+<a name="(line28)"></a><font color=Blue>-- input to be re-lexed and re-parsed.  GERefs are simply stored for</font>+<a name="(line29)"></a><font color=Blue>-- later retrieval.</font>+<a name="(line30)"></a>+<a name="(line31)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>either<font color=Cyan>,</font>maybe<font color=Cyan>,</font>sequence<font color=Cyan>,</font>catch<font color=Cyan>)</font>+<a name="(line32)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Prelude <font color=Cyan>(</font>either<font color=Cyan>)</font>+<a name="(line33)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line34)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>       <font color=Blue>-- debugging only</font>+<a name="(line35)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>isSpace<font color=Cyan>,</font>isDigit<font color=Cyan>,</font>isHexDigit<font color=Cyan>)</font>+<a name="(line36)"></a><font color=Green><u>import</u></font> Monad hiding <font color=Cyan>(</font>sequence<font color=Cyan>)</font>+<a name="(line37)"></a><font color=Green><u>import</u></font> Numeric <font color=Cyan>(</font>readDec<font color=Cyan>,</font>readHex<font color=Cyan>)</font>+<a name="(line38)"></a><font color=Blue>--import Control.Exception (catch)</font>+<a name="(line39)"></a>+<a name="(line40)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line41)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn+<a name="(line42)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Lex+<a name="(line43)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly<font color=Cyan>.</font>NoLeak<font color=Cyan>.</font>StateLazy+<a name="(line44)"></a>+<a name="(line45)"></a>+<a name="(line46)"></a><font color=Magenta><em>#if ( defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt; 502 ) || \</em></font>+<a name="(line47)"></a>    <font color=Cyan>(</font> defined<font color=Cyan>(</font><b><font color=Magenta>__NHC__</font></b><font color=Cyan>)</font> <font color=Cyan>&amp;&amp;</font> <b><font color=Magenta>__NHC__</font></b> <font color=Cyan>&gt;</font> <font color=Magenta>114</font> <font color=Cyan>)</font> <font color=Cyan>||</font> defined<font color=Cyan>(</font><b><font color=Magenta>__HUGS__</font></b><font color=Cyan>)</font>+<a name="(line48)"></a><font color=Green><u>import</u></font> System<font color=Cyan>.</font>IO<font color=Cyan>.</font>Unsafe <font color=Cyan>(</font>unsafePerformIO<font color=Cyan>)</font>+<a name="(line49)"></a><font color=Magenta><em>#elif defined(__GLASGOW_HASKELL__)</em></font>+<a name="(line50)"></a><font color=Green><u>import</u></font> IOExts <font color=Cyan>(</font>unsafePerformIO<font color=Cyan>)</font>+<a name="(line51)"></a><font color=Magenta><em>#elif defined(__NHC__)</em></font>+<a name="(line52)"></a><font color=Green><u>import</u></font> IOExtras <font color=Cyan>(</font>unsafePerformIO<font color=Cyan>)</font>+<a name="(line53)"></a><font color=Magenta><em>#elif defined(__HBC__)</em></font>+<a name="(line54)"></a><font color=Green><u>import</u></font> UnsafePerformIO+<a name="(line55)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line56)"></a>+<a name="(line57)"></a><font color=Blue>--  #define DEBUG</font>+<a name="(line58)"></a>+<a name="(line59)"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>+<a name="(line60)"></a><font color=Magenta><em>#  if ( defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt; 502 ) || \</em></font>+<a name="(line61)"></a>      <font color=Cyan>(</font> defined<font color=Cyan>(</font><b><font color=Magenta>__NHC__</font></b><font color=Cyan>)</font> <font color=Cyan>&amp;&amp;</font> <b><font color=Magenta>__NHC__</font></b> <font color=Cyan>&gt;</font> <font color=Magenta>114</font> <font color=Cyan>)</font> <font color=Cyan>||</font> defined<font color=Cyan>(</font><b><font color=Magenta>__HUGS__</font></b><font color=Cyan>)</font>+<a name="(line62)"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line63)"></a><font color=Magenta><em>#  elif defined(__GLASGOW_HASKELL__)</em></font>+<a name="(line64)"></a><font color=Green><u>import</u></font> IOExts<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line65)"></a><font color=Magenta><em>#  elif defined(__NHC__) || defined(__HBC__)</em></font>+<a name="(line66)"></a><font color=Green><u>import</u></font> NonStdTrace+<a name="(line67)"></a><font color=Magenta><em>#  endif</em></font>+<a name="(line68)"></a><a name="debug"></a>debug <font color=Red>::</font> a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> a+<a name="(line69)"></a><a name="debug"></a>v <font color=Cyan>`debug`</font> s <font color=Red>=</font> trace s v+<a name="(line70)"></a><font color=Magenta><em>#else</em></font>+<a name="(line71)"></a><a name="debug"></a>v <font color=Cyan>`debug`</font> s <font color=Red>=</font> v+<a name="(line72)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line73)"></a>+<a name="(line74)"></a>+<a name="(line75)"></a><a name="xmlParse"></a><font color=Blue>-- | To parse a whole document, @xmlParse file content@ takes a filename</font>+<a name="(line76)"></a><font color=Blue>--   (for generating error reports) and the string content of that file.</font>+<a name="(line77)"></a><font color=Blue>--   A parse error causes program failure, with message to stderr.</font>+<a name="(line78)"></a>xmlParse <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Document Posn+<a name="(line79)"></a>+<a name="(line80)"></a><font color=Blue>{-+<a name="(line81)"></a>-- | To parse a whole document, @xmlParse' file content@ takes a filename+<a name="(line82)"></a>--   (for generating error reports) and the string content of that file.+<a name="(line83)"></a>--   Any parse error message is passed back to the caller through the+<a name="(line84)"></a>--   @Either@ type.+<a name="(line85)"></a>xmlParse' :: String -&gt; String -&gt; Either String (Document Posn)+<a name="(line86)"></a>+<a name="(line87)"></a>-- | To parse just a DTD, @dtdParse file content@ takes a filename+<a name="(line88)"></a>--   (for generating error reports) and the string content of that+<a name="(line89)"></a>--   file.  If no DTD was found, you get @Nothing@ rather than an error.+<a name="(line90)"></a>--   However, if a DTD is found but contains errors, the program crashes.+<a name="(line91)"></a>dtdParse  :: String -&gt; String -&gt; Maybe DocTypeDecl+<a name="(line92)"></a>+<a name="(line93)"></a>-- | To parse just a DTD, @dtdParse' file content@ takes a filename+<a name="(line94)"></a>--   (for generating error reports) and the string content of that+<a name="(line95)"></a>--   file.  If no DTD was found, you get @Right Nothing@.+<a name="(line96)"></a>--   If a DTD was found but contains errors, you get a @Left message@.+<a name="(line97)"></a>dtdParse' :: String -&gt; String -&gt; Either String (Maybe DocTypeDecl)+<a name="(line98)"></a>+<a name="(line99)"></a>xmlParse' name inp = xmlParse name inp `catch` (Left . show)+<a name="(line100)"></a>dtdParse' name inp = dtdParse name inp `catch` (Left . show)+<a name="(line101)"></a>-}</font>+<a name="(line102)"></a>+<a name="(line103)"></a>xmlParse  name  <font color=Red>=</font> fst3 <font color=Cyan>.</font> runParser <font color=Cyan>(</font>toEOF document<font color=Cyan>)</font> emptySTs <font color=Cyan>.</font> xmlLex name+<a name="(line104)"></a><a name="dtdParse"></a>dtdParse  name  <font color=Red>=</font> fst3 <font color=Cyan>.</font> runParser justDTD  emptySTs <font color=Cyan>.</font> xmlLex name+<a name="(line105)"></a>+<a name="(line106)"></a>+<a name="(line107)"></a><a name="toEOF"></a>toEOF <font color=Red>=</font> id	<font color=Blue>-- there are other possible implementations...</font>+<a name="(line108)"></a>+<a name="(line109)"></a><a name="xmlParseWith"></a><font color=Blue>-- | To parse a partial document, e.g. from an XML-based stream protocol,</font>+<a name="(line110)"></a><font color=Blue>--   where you may later want to get more document elements from the same</font>+<a name="(line111)"></a><font color=Blue>--   stream.  Arguments are: a parser for the item you want, and the</font>+<a name="(line112)"></a><font color=Blue>--   already-lexed input to parse from.  Returns the item you wanted</font>+<a name="(line113)"></a><font color=Blue>--   (or an error message), plus the remainder of the input.</font>+<a name="(line114)"></a>xmlParseWith <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line115)"></a>                <font color=Red>-&gt;</font> <font color=Cyan>(</font>Either String a<font color=Cyan>,</font> <font color=Red>[</font><font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line116)"></a>xmlParseWith p <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>v<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Red>-&gt;</font><font color=Cyan>(</font>Right v<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> runParser p emptySTs+<a name="(line117)"></a>+<a name="(line118)"></a>+<a name="(line119)"></a><font color=Blue>---- Symbol table stuff ----</font>+<a name="(line120)"></a>+<a name="(line121)"></a><a name="SymTabs"></a><font color=Green><u>type</u></font> SymTabs <font color=Red>=</font> <font color=Cyan>(</font>SymTab PEDef<font color=Cyan>,</font> SymTab EntityDef<font color=Cyan>)</font>+<a name="(line122)"></a>+<a name="(line123)"></a><a name="emptySTs"></a><font color=Blue>-- | Some empty symbol tables for GE and PE references.</font>+<a name="(line124)"></a>emptySTs <font color=Red>::</font> SymTabs+<a name="(line125)"></a>emptySTs <font color=Red>=</font> <font color=Cyan>(</font>emptyST<font color=Cyan>,</font> emptyST<font color=Cyan>)</font>+<a name="(line126)"></a>+<a name="(line127)"></a><a name="addPE"></a>addPE <font color=Red>::</font> String <font color=Red>-&gt;</font> PEDef <font color=Red>-&gt;</font> SymTabs <font color=Red>-&gt;</font> SymTabs+<a name="(line128)"></a>addPE n v <font color=Cyan>(</font>pe<font color=Cyan>,</font>ge<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font>addST n v pe<font color=Cyan>,</font> ge<font color=Cyan>)</font>+<a name="(line129)"></a>+<a name="(line130)"></a><a name="addGE"></a>addGE <font color=Red>::</font> String <font color=Red>-&gt;</font> EntityDef <font color=Red>-&gt;</font> SymTabs <font color=Red>-&gt;</font> SymTabs+<a name="(line131)"></a>addGE n v <font color=Cyan>(</font>pe<font color=Cyan>,</font>ge<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>let</u></font> newge <font color=Red>=</font> addST n v ge <font color=Green><u>in</u></font> newge <font color=Cyan>`seq`</font> <font color=Cyan>(</font>pe<font color=Cyan>,</font> newge<font color=Cyan>)</font>+<a name="(line132)"></a>+<a name="(line133)"></a><a name="lookupPE"></a>lookupPE <font color=Red>::</font> String <font color=Red>-&gt;</font> SymTabs <font color=Red>-&gt;</font> Maybe PEDef+<a name="(line134)"></a>lookupPE s <font color=Cyan>(</font>pe<font color=Cyan>,</font>ge<font color=Cyan>)</font> <font color=Red>=</font> lookupST s pe+<a name="(line135)"></a>+<a name="(line136)"></a><a name="flattenEV"></a>flattenEV <font color=Red>::</font> EntityValue <font color=Red>-&gt;</font> String+<a name="(line137)"></a>flattenEV <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font> <font color=Red>=</font> concatMap flatten evs+<a name="(line138)"></a>  <font color=Green><u>where</u></font>+<a name="(line139)"></a>    flatten <font color=Cyan>(</font>EVString s<font color=Cyan>)</font>          <font color=Red>=</font> s+<a name="(line140)"></a>    flatten <font color=Cyan>(</font>EVRef <font color=Cyan>(</font>RefEntity r<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;"</font> <font color=Cyan>++</font>r<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line141)"></a>    flatten <font color=Cyan>(</font>EVRef <font color=Cyan>(</font>RefChar r<font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&amp;#"</font><font color=Cyan>++</font>show r<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line142)"></a> <font color=Blue>-- flatten (EVPERef n)           = "%" ++n++";"</font>+<a name="(line143)"></a>+<a name="(line144)"></a>+<a name="(line145)"></a><a name="fst3"></a><font color=Blue>---- Misc ----</font>+<a name="(line146)"></a>fst3 <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>-&gt;</font> a+<a name="(line147)"></a><a name="snd3"></a>snd3 <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>-&gt;</font> b+<a name="(line148)"></a><a name="thd3"></a>thd3 <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>-&gt;</font> c+<a name="(line149)"></a>+<a name="(line150)"></a>fst3 <font color=Cyan>(</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line151)"></a>snd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line152)"></a>thd3 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>,</font>a<font color=Cyan>)</font> <font color=Red>=</font> a+<a name="(line153)"></a>+<a name="(line154)"></a>+<a name="(line155)"></a><font color=Blue>---- Auxiliary Parsing Functions ----</font>+<a name="(line156)"></a>+<a name="(line157)"></a><a name="XParser"></a><font color=Blue>-- | XParser is just a specialisation of the PolyStateLazy parser.</font>+<a name="(line158)"></a><a name="XParser"></a><font color=Green><u>type</u></font> XParser a <font color=Red>=</font> Parser SymTabs <font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font> a+<a name="(line159)"></a>+<a name="(line160)"></a><a name="tok"></a><font color=Blue>-- | Return the next token from the input only if it matches the given token.</font>+<a name="(line161)"></a>tok <font color=Red>::</font> TokenT <font color=Red>-&gt;</font> XParser TokenT+<a name="(line162)"></a>tok t <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t'<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line163)"></a>           <font color=Green><u>case</u></font> t' <font color=Green><u>of</u></font> TokError <font color=Green><u>_</u></font>    <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line164)"></a>                      <font color=Green><u>_</u></font> <font color=Red>|</font> t'<font color=Cyan>==</font>t     <font color=Red>-&gt;</font> return t+<a name="(line165)"></a>                        <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show t<font color=Cyan>)</font> p t'+<a name="(line166)"></a><a name="nottok"></a>nottok <font color=Red>::</font> <font color=Red>[</font>TokenT<font color=Red>]</font> <font color=Red>-&gt;</font> XParser TokenT+<a name="(line167)"></a>nottok ts <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line168)"></a>               <font color=Green><u>if</u></font> t<font color=Cyan>`elem`</font>ts <font color=Green><u>then</u></font> report fail <font color=Cyan>(</font><font color=Magenta>"no "</font><font color=Cyan>++</font>show t<font color=Cyan>)</font> p t+<a name="(line169)"></a>                            <font color=Green><u>else</u></font> return t+<a name="(line170)"></a>+<a name="(line171)"></a><a name="name"></a><font color=Blue>-- | Return just a name, e.g. element name, attribute name.</font>+<a name="(line172)"></a>name <font color=Red>::</font> XParser Name+<a name="(line173)"></a>name <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>tok<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line174)"></a>          <font color=Green><u>case</u></font> tok <font color=Green><u>of</u></font>+<a name="(line175)"></a>            TokName s  <font color=Red>-&gt;</font> return s+<a name="(line176)"></a>            TokError <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> report failBad <font color=Magenta>"a name"</font> p tok+<a name="(line177)"></a>            <font color=Green><u>_</u></font>          <font color=Red>-&gt;</font> report fail <font color=Magenta>"a name"</font> p tok+<a name="(line178)"></a>+<a name="(line179)"></a><a name="string"></a>string<font color=Cyan>,</font> freetext <font color=Red>::</font> XParser String+<a name="(line180)"></a>string   <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line181)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokName s <font color=Red>-&gt;</font> return s+<a name="(line182)"></a>                        <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line183)"></a><a name="freetext"></a>freetext <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line184)"></a>              <font color=Green><u>case</u></font> t <font color=Green><u>of</u></font> TokFreeText s <font color=Red>-&gt;</font> return s+<a name="(line185)"></a>                        <font color=Green><u>_</u></font>             <font color=Red>-&gt;</font> report fail <font color=Magenta>"text"</font> p t+<a name="(line186)"></a>+<a name="(line187)"></a><a name="maybe"></a>maybe <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font>+<a name="(line188)"></a>maybe p <font color=Red>=</font>+<a name="(line189)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Just<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line190)"></a>    <font color=Cyan>(</font> return Nothing<font color=Cyan>)</font>+<a name="(line191)"></a>+<a name="(line192)"></a><a name="either"></a>either <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser b <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>Either a b<font color=Cyan>)</font>+<a name="(line193)"></a>either p q <font color=Red>=</font>+<a name="(line194)"></a>    <font color=Cyan>(</font> p <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Left<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line195)"></a>    <font color=Cyan>(</font> q <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Right<font color=Cyan>)</font>+<a name="(line196)"></a>+<a name="(line197)"></a><a name="word"></a>word <font color=Red>::</font> String <font color=Red>-&gt;</font> XParser ()+<a name="(line198)"></a>word s <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x <font color=Red>&lt;-</font> next+<a name="(line199)"></a>            <font color=Cyan>;</font> <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>+<a name="(line200)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokName n<font color=Cyan>)</font>     <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line201)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>TokFreeText n<font color=Cyan>)</font> <font color=Red>|</font> s<font color=Cyan>==</font>n <font color=Red>-&gt;</font> return ()+<a name="(line202)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Red>@</font><font color=Cyan>(</font>TokError <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> report failBad <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line203)"></a>                <font color=Cyan>(</font>p<font color=Cyan>,</font>t<font color=Cyan>)</font> <font color=Red>-&gt;</font> report fail <font color=Cyan>(</font>show s<font color=Cyan>)</font> p t+<a name="(line204)"></a>            <font color=Cyan>}</font>+<a name="(line205)"></a>+<a name="(line206)"></a><a name="posn"></a>posn <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> x<font color=Red>@</font><font color=Cyan>(</font>p<font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> next+<a name="(line207)"></a>          <font color=Cyan>;</font> reparse <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line208)"></a>          <font color=Cyan>;</font> return p+<a name="(line209)"></a>          <font color=Cyan>}</font>+<a name="(line210)"></a>+<a name="(line211)"></a><a name="nmtoken"></a>nmtoken <font color=Red>::</font> XParser NmToken+<a name="(line212)"></a>nmtoken <font color=Red>=</font> <font color=Cyan>(</font>string <font color=Cyan>`onFail`</font> freetext<font color=Cyan>)</font>+<a name="(line213)"></a>+<a name="(line214)"></a><a name="failP"></a>failP<font color=Cyan>,</font> failBadP <font color=Red>::</font> String <font color=Red>-&gt;</font> XParser a+<a name="(line215)"></a>failP msg <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> fail <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line216)"></a><a name="failBadP"></a>failBadP msg <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> p <font color=Red>&lt;-</font> posn<font color=Cyan>;</font> failBad <font color=Cyan>(</font>msg<font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line217)"></a>+<a name="(line218)"></a><a name="report"></a>report <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>XParser a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> TokenT <font color=Red>-&gt;</font> XParser a+<a name="(line219)"></a>report fail exp p t <font color=Red>=</font> fail <font color=Cyan>(</font><font color=Magenta>"Expected "</font><font color=Cyan>++</font>exp<font color=Cyan>++</font><font color=Magenta>" but found "</font><font color=Cyan>++</font>show t+<a name="(line220)"></a>                           <font color=Cyan>++</font><font color=Magenta>"\n  in "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line221)"></a>+<a name="(line222)"></a><a name="adjustErrP"></a>adjustErrP <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> XParser a+<a name="(line223)"></a><a name="adjustErrP"></a>p <font color=Cyan>`adjustErrP`</font> f <font color=Red>=</font> p <font color=Cyan>`onFail`</font> <font color=Green><u>do</u></font> pn <font color=Red>&lt;-</font> posn+<a name="(line224)"></a>                                 <font color=Cyan>(</font>p <font color=Cyan>`adjustErr`</font> f<font color=Cyan>)</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font>show pn<font color=Cyan>)</font>+<a name="(line225)"></a>+<a name="(line226)"></a><a name="peRef"></a>peRef <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser a+<a name="(line227)"></a>peRef p <font color=Red>=</font>+<a name="(line228)"></a>    p <font color=Cyan>`onFail`</font>+<a name="(line229)"></a>    <font color=Green><u>do</u></font> pn <font color=Red>&lt;-</font> posn+<a name="(line230)"></a>       n <font color=Red>&lt;-</font> pereference+<a name="(line231)"></a>       tr <font color=Red>&lt;-</font> stQuery <font color=Cyan>(</font>lookupPE n<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Looking up %"</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line232)"></a>       <font color=Green><u>case</u></font> tr <font color=Green><u>of</u></font>+<a name="(line233)"></a>           Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line234)"></a>                      <font color=Green><u>do</u></font> reparse <font color=Cyan>(</font>xmlReLex <font color=Cyan>(</font>posInNewCxt <font color=Cyan>(</font><font color=Magenta>"macro %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line235)"></a>                                                        <font color=Cyan>(</font>Just pn<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line236)"></a>                                           <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line237)"></a>                               <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"  defn:  "</font><font color=Cyan>++</font>flattenEV ev<font color=Cyan>)</font>+<a name="(line238)"></a>                         peRef p+<a name="(line239)"></a>           Just <font color=Cyan>(</font>PEDefExternalID <font color=Cyan>(</font>PUBLIC <font color=Green><u>_</u></font> <font color=Cyan>(</font>SystemLiteral f<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line240)"></a>                      <font color=Green><u>do</u></font> <font color=Green><u>let</u></font> val <font color=Red>=</font> unsafePerformIO <font color=Cyan>(</font>readFile f<font color=Cyan>)</font>+<a name="(line241)"></a>                         reparse <font color=Cyan>(</font>xmlReLex <font color=Cyan>(</font>posInNewCxt <font color=Cyan>(</font><font color=Magenta>"file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line242)"></a>                                                        <font color=Cyan>(</font>Just pn<font color=Cyan>)</font><font color=Cyan>)</font> val<font color=Cyan>)</font>+<a name="(line243)"></a>                               <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"  reading from file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line244)"></a>                         peRef p+<a name="(line245)"></a>           Just <font color=Cyan>(</font>PEDefExternalID <font color=Cyan>(</font>SYSTEM <font color=Cyan>(</font>SystemLiteral f<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line246)"></a>                      <font color=Green><u>do</u></font> <font color=Green><u>let</u></font> val <font color=Red>=</font> unsafePerformIO <font color=Cyan>(</font>readFile f<font color=Cyan>)</font>+<a name="(line247)"></a>                         reparse <font color=Cyan>(</font>xmlReLex <font color=Cyan>(</font>posInNewCxt <font color=Cyan>(</font><font color=Magenta>"file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line248)"></a>                                                        <font color=Cyan>(</font>Just pn<font color=Cyan>)</font><font color=Cyan>)</font> val<font color=Cyan>)</font>+<a name="(line249)"></a>                               <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"  reading from file "</font><font color=Cyan>++</font>f<font color=Cyan>)</font>+<a name="(line250)"></a>                         peRef p+<a name="(line251)"></a>           Nothing <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"PEReference use before definition: "</font><font color=Cyan>++</font><font color=Magenta>"%"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line252)"></a>                           <font color=Cyan>++</font><font color=Magenta>"\n    at "</font><font color=Cyan>++</font>show pn<font color=Cyan>)</font>+<a name="(line253)"></a>+<a name="(line254)"></a><a name="blank"></a>blank <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser a+<a name="(line255)"></a>blank p <font color=Red>=</font>+<a name="(line256)"></a>    p <font color=Cyan>`onFail`</font>+<a name="(line257)"></a>    <font color=Green><u>do</u></font> n <font color=Red>&lt;-</font> pereference+<a name="(line258)"></a>       tr <font color=Red>&lt;-</font> stQuery <font color=Cyan>(</font>lookupPE n<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Looking up %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>" (is blank?)"</font><font color=Cyan>)</font>+<a name="(line259)"></a>       <font color=Green><u>case</u></font> tr <font color=Green><u>of</u></font>+<a name="(line260)"></a>           Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font>+<a name="(line261)"></a>                    <font color=Red>|</font> all isSpace <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font>  <font color=Red>-&gt;</font>+<a name="(line262)"></a>                            <font color=Green><u>do</u></font> blank p <font color=Cyan>`debug`</font> <font color=Magenta>"Empty macro definition"</font>+<a name="(line263)"></a>           Just <font color=Green><u>_</u></font>  <font color=Red>-&gt;</font> failP <font color=Cyan>(</font><font color=Magenta>"expected a blank PERef macro: "</font><font color=Cyan>++</font><font color=Magenta>"%"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line264)"></a>           Nothing <font color=Red>-&gt;</font> failP <font color=Cyan>(</font><font color=Magenta>"PEReference use before definition: "</font><font color=Cyan>++</font><font color=Magenta>"%"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line265)"></a>+<a name="(line266)"></a>+<a name="(line267)"></a>+<a name="(line268)"></a><font color=Blue>---- XML Parsing Functions ----</font>+<a name="(line269)"></a>+<a name="(line270)"></a><a name="justDTD"></a>justDTD <font color=Red>::</font> XParser <font color=Cyan>(</font>Maybe DocTypeDecl<font color=Cyan>)</font>+<a name="(line271)"></a>justDTD <font color=Red>=</font>+<a name="(line272)"></a>  <font color=Green><u>do</u></font> <font color=Cyan>(</font>ExtSubset <font color=Green><u>_</u></font> ds<font color=Cyan>)</font> <font color=Red>&lt;-</font> extsubset <font color=Cyan>`debug`</font> <font color=Magenta>"Trying external subset"</font>+<a name="(line273)"></a>     <font color=Green><u>if</u></font> null ds <font color=Green><u>then</u></font> fail <font color=Magenta>"empty"</font>+<a name="(line274)"></a>         <font color=Green><u>else</u></font> return <font color=Cyan>(</font>Just <font color=Cyan>(</font>DTD <font color=Magenta>"extsubset"</font> Nothing <font color=Cyan>(</font>concatMap extract ds<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line275)"></a>  <font color=Cyan>`onFail`</font>+<a name="(line276)"></a>  <font color=Green><u>do</u></font> <font color=Cyan>(</font>Prolog <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> dtd <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> prolog+<a name="(line277)"></a>     return dtd+<a name="(line278)"></a> <font color=Green><u>where</u></font> extract <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>m<font color=Red>]</font>+<a name="(line279)"></a>       extract <font color=Cyan>(</font>ExtConditionalSect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> concatMap extract i+<a name="(line280)"></a>       extract <font color=Cyan>(</font>ExtConditionalSect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> []+<a name="(line281)"></a>+<a name="(line282)"></a><a name="document"></a><font color=Blue>-- | Return an entire XML document including prolog and trailing junk.</font>+<a name="(line283)"></a>document <font color=Red>::</font> XParser <font color=Cyan>(</font>Document Posn<font color=Cyan>)</font>+<a name="(line284)"></a>document <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line285)"></a> <font color=Blue>-- p &lt;- prolog `adjustErr` ("unrecognisable XML prolog\n"++)</font>+<a name="(line286)"></a> <font color=Blue>-- e &lt;- element</font>+<a name="(line287)"></a> <font color=Blue>-- ms &lt;- many misc</font>+<a name="(line288)"></a> <font color=Blue>-- (_,ge) &lt;- stGet</font>+<a name="(line289)"></a> <font color=Blue>-- return (Document p ge e ms)</font>+<a name="(line290)"></a>    return Document <font color=Cyan>`apply`</font> <font color=Cyan>(</font>prolog <font color=Cyan>`adjustErr`</font>+<a name="(line291)"></a>                                    <font color=Cyan>(</font><font color=Magenta>"unrecognisable XML prolog\n"</font><font color=Cyan>++</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line292)"></a>                    <font color=Cyan>`apply`</font> <font color=Cyan>(</font>fmap snd stGet<font color=Cyan>)</font>+<a name="(line293)"></a>                    <font color=Cyan>`apply`</font> element+<a name="(line294)"></a>                    <font color=Cyan>`apply`</font> many misc+<a name="(line295)"></a>+<a name="(line296)"></a><a name="comment"></a><font color=Blue>-- | Return an XML comment.</font>+<a name="(line297)"></a>comment <font color=Red>::</font> XParser Comment+<a name="(line298)"></a>comment <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line299)"></a>    bracket <font color=Cyan>(</font>tok TokCommentOpen<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokCommentClose<font color=Cyan>)</font> freetext+<a name="(line300)"></a><font color=Blue>--  tok TokCommentOpen</font>+<a name="(line301)"></a><font color=Blue>--  commit $ do</font>+<a name="(line302)"></a><font color=Blue>--    c &lt;- freetext</font>+<a name="(line303)"></a><font color=Blue>--    tok TokCommentClose</font>+<a name="(line304)"></a><font color=Blue>--    return c</font>+<a name="(line305)"></a>+<a name="(line306)"></a><a name="processinginstruction"></a><font color=Blue>-- | Parse a processing instruction.</font>+<a name="(line307)"></a>processinginstruction <font color=Red>::</font> XParser ProcessingInstruction+<a name="(line308)"></a>processinginstruction <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line309)"></a>    tok TokPIOpen+<a name="(line310)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line311)"></a>      n <font color=Red>&lt;-</font> string  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"processing instruction has no target"</font>+<a name="(line312)"></a>      f <font color=Red>&lt;-</font> freetext+<a name="(line313)"></a>      tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Cyan>(</font><font color=Magenta>"missing ?&gt; in &lt;?"</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line314)"></a>      return <font color=Cyan>(</font>n<font color=Cyan>,</font> f<font color=Cyan>)</font>+<a name="(line315)"></a>+<a name="(line316)"></a><a name="cdsect"></a>cdsect <font color=Red>::</font> XParser CDSect+<a name="(line317)"></a>cdsect <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line318)"></a>    tok TokSectionOpen+<a name="(line319)"></a>    bracket <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection CDATAx<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSectionClose<font color=Cyan>)</font> chardata+<a name="(line320)"></a>+<a name="(line321)"></a><a name="prolog"></a>prolog <font color=Red>::</font> XParser Prolog+<a name="(line322)"></a>prolog <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line323)"></a>    x   <font color=Red>&lt;-</font> maybe xmldecl+<a name="(line324)"></a>    m1  <font color=Red>&lt;-</font> many misc+<a name="(line325)"></a>    dtd <font color=Red>&lt;-</font> maybe doctypedecl+<a name="(line326)"></a>    m2  <font color=Red>&lt;-</font> many misc+<a name="(line327)"></a>    return <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font>+<a name="(line328)"></a>+<a name="(line329)"></a><a name="xmldecl"></a>xmldecl <font color=Red>::</font> XParser XMLDecl+<a name="(line330)"></a>xmldecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line331)"></a>    tok TokPIOpen+<a name="(line332)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line333)"></a>    p <font color=Red>&lt;-</font> posn+<a name="(line334)"></a>    s <font color=Red>&lt;-</font> freetext+<a name="(line335)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing ?&gt; in &lt;?xml ...?&gt;"</font>+<a name="(line336)"></a> <font color=Blue>-- raise ((runParser aux emptySTs . xmlReLex p) s)</font>+<a name="(line337)"></a>    return <font color=Cyan>(</font>fst3 <font color=Cyan>(</font><font color=Cyan>(</font>runParser aux emptySTs <font color=Cyan>.</font> xmlReLex p<font color=Cyan>)</font> s<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line338)"></a>  <font color=Green><u>where</u></font>+<a name="(line339)"></a>    aux <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line340)"></a>        v <font color=Red>&lt;-</font> versioninfo  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing XML version info"</font>+<a name="(line341)"></a>        e <font color=Red>&lt;-</font> maybe encodingdecl+<a name="(line342)"></a>        s <font color=Red>&lt;-</font> maybe sddecl+<a name="(line343)"></a>        return <font color=Cyan>(</font>XMLDecl v e s<font color=Cyan>)</font>+<a name="(line344)"></a> <font color=Blue>-- raise (Left err, _, _) = failP err</font>+<a name="(line345)"></a> <font color=Blue>-- raise (Right ok, _, _) = return ok</font>+<a name="(line346)"></a>+<a name="(line347)"></a><a name="versioninfo"></a>versioninfo <font color=Red>::</font> XParser VersionInfo+<a name="(line348)"></a>versioninfo <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line349)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"version"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"VERSION"</font><font color=Cyan>)</font>+<a name="(line350)"></a>    tok TokEqual+<a name="(line351)"></a>    bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line352)"></a>+<a name="(line353)"></a><a name="misc"></a>misc <font color=Red>::</font> XParser Misc+<a name="(line354)"></a>misc <font color=Red>=</font>+<a name="(line355)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"&lt;!--comment--&gt;"</font><font color=Cyan>,</font>  comment <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Comment<font color=Cyan>)</font>+<a name="(line356)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"&lt;?PI?&gt;"</font><font color=Cyan>,</font>          processinginstruction <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PI<font color=Cyan>)</font>+<a name="(line357)"></a>           <font color=Red>]</font>+<a name="(line358)"></a>+<a name="(line359)"></a><a name="doctypedecl"></a><font color=Blue>-- | Return a DOCTYPE decl, indicating a DTD.</font>+<a name="(line360)"></a>doctypedecl <font color=Red>::</font> XParser DocTypeDecl+<a name="(line361)"></a>doctypedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line362)"></a>    tok TokSpecialOpen+<a name="(line363)"></a>    tok <font color=Cyan>(</font>TokSpecial DOCTYPEx<font color=Cyan>)</font>+<a name="(line364)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line365)"></a>      n   <font color=Red>&lt;-</font> name+<a name="(line366)"></a>      eid <font color=Red>&lt;-</font> maybe externalid+<a name="(line367)"></a>      es  <font color=Red>&lt;-</font> maybe <font color=Cyan>(</font>bracket <font color=Cyan>(</font>tok TokSqOpen<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSqClose<font color=Cyan>)</font>+<a name="(line368)"></a>                            <font color=Cyan>(</font>many <font color=Cyan>(</font>peRef markupdecl<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line369)"></a>      blank <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font>  <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing &gt; in DOCTYPE decl"</font>+<a name="(line370)"></a>      return <font color=Cyan>(</font>DTD n eid <font color=Cyan>(</font><font color=Green><u>case</u></font> es <font color=Green><u>of</u></font> <font color=Cyan>{</font> Nothing <font color=Red>-&gt;</font> []<font color=Cyan>;</font> Just e <font color=Red>-&gt;</font> e <font color=Cyan>}</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line371)"></a>+<a name="(line372)"></a><a name="markupdecl"></a><font color=Blue>-- | Return a DTD markup decl, e.g. ELEMENT, ATTLIST, etc</font>+<a name="(line373)"></a>markupdecl <font color=Red>::</font> XParser MarkupDecl+<a name="(line374)"></a>markupdecl <font color=Red>=</font>+<a name="(line375)"></a>  oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"ELEMENT"</font><font color=Cyan>,</font>  elementdecl  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Element<font color=Cyan>)</font>+<a name="(line376)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ATTLIST"</font><font color=Cyan>,</font>  attlistdecl  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> AttList<font color=Cyan>)</font>+<a name="(line377)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ENTITY"</font><font color=Cyan>,</font>   entitydecl   <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Entity<font color=Cyan>)</font>+<a name="(line378)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"NOTATION"</font><font color=Cyan>,</font> notationdecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Notation<font color=Cyan>)</font>+<a name="(line379)"></a>         <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"misc"</font><font color=Cyan>,</font>     misc         <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> MarkupMisc<font color=Cyan>)</font>+<a name="(line380)"></a>         <font color=Red>]</font>+<a name="(line381)"></a>    <font color=Cyan>`adjustErrP`</font>+<a name="(line382)"></a>          <font color=Cyan>(</font><font color=Magenta>"when looking for a markup decl,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line383)"></a> <font color=Blue>--       (\  (ELEMENT, ATTLIST, ENTITY, NOTATION, &lt;!--comment--&gt;, or &lt;?PI?&gt;")</font>+<a name="(line384)"></a>+<a name="(line385)"></a><a name="extsubset"></a>extsubset <font color=Red>::</font> XParser ExtSubset+<a name="(line386)"></a>extsubset <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line387)"></a>    td <font color=Red>&lt;-</font> maybe textdecl+<a name="(line388)"></a>    ds <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>+<a name="(line389)"></a>    return <font color=Cyan>(</font>ExtSubset td ds<font color=Cyan>)</font>+<a name="(line390)"></a>+<a name="(line391)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> XParser ExtSubsetDecl+<a name="(line392)"></a>extsubsetdecl <font color=Red>=</font>+<a name="(line393)"></a>    <font color=Cyan>(</font> markupdecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> ExtMarkupDecl<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line394)"></a>    <font color=Cyan>(</font> conditionalsect <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> ExtConditionalSect<font color=Cyan>)</font>+<a name="(line395)"></a>+<a name="(line396)"></a><a name="sddecl"></a>sddecl <font color=Red>::</font> XParser SDDecl+<a name="(line397)"></a>sddecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line398)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"standalone"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"STANDALONE"</font><font color=Cyan>)</font>+<a name="(line399)"></a>    commit <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="(line400)"></a>      tok TokEqual <font color=Cyan>`onFail`</font> failP <font color=Magenta>"missing = in 'standalone' decl"</font>+<a name="(line401)"></a>      bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line402)"></a>              <font color=Cyan>(</font> <font color=Cyan>(</font>word <font color=Magenta>"yes"</font> <font color=Cyan>&gt;&gt;</font> return True<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line403)"></a>                <font color=Cyan>(</font>word <font color=Magenta>"no"</font> <font color=Cyan>&gt;&gt;</font> return False<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line404)"></a>                failP <font color=Magenta>"'standalone' decl requires 'yes' or 'no' value"</font> <font color=Cyan>)</font>+<a name="(line405)"></a>+<a name="(line406)"></a><font color=Blue>{-+<a name="(line407)"></a>element :: XParser (Element Posn)+<a name="(line408)"></a>element = do+<a name="(line409)"></a>    tok TokAnyOpen+<a name="(line410)"></a>    (ElemTag n as) &lt;- elemtag+<a name="(line411)"></a>    oneOf' [ ("self-closing tag &lt;"++n++"/&gt;"+<a name="(line412)"></a>             ,  do tok TokEndClose+<a name="(line413)"></a>                   return (Elem n as []))+<a name="(line414)"></a>           , ("after open tag &lt;"++n++"&gt;"+<a name="(line415)"></a>             ,  do tok TokAnyClose+<a name="(line416)"></a>                   cs &lt;- many content+<a name="(line417)"></a>                   p  &lt;- posn+<a name="(line418)"></a>                   m  &lt;- bracket (tok TokEndOpen) (tok TokAnyClose) name+<a name="(line419)"></a>                   checkmatch p n m+<a name="(line420)"></a>                   return (Elem n as cs))+<a name="(line421)"></a>           ] `adjustErr` (("in element tag "++n++",\n")++)+<a name="(line422)"></a>-}</font>+<a name="(line423)"></a>+<a name="(line424)"></a><a name="element"></a><font color=Blue>-- | Return a complete element including all its inner content.</font>+<a name="(line425)"></a>element <font color=Red>::</font> XParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>+<a name="(line426)"></a>element <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line427)"></a>    tok TokAnyOpen+<a name="(line428)"></a>    <font color=Cyan>(</font>ElemTag n <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> elemtag+<a name="(line429)"></a>    return <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>`apply`</font>+<a name="(line430)"></a>        <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokEndClose+<a name="(line431)"></a>             return []+<a name="(line432)"></a>          <font color=Cyan>`onFail`</font>+<a name="(line433)"></a>          <font color=Green><u>do</u></font> tok TokAnyClose+<a name="(line434)"></a>             commit <font color=Cyan>$</font> manyFinally content+<a name="(line435)"></a>                                  <font color=Cyan>(</font><font color=Green><u>do</u></font> p <font color=Red>&lt;-</font> posn+<a name="(line436)"></a>                                      m <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokEndOpen<font color=Cyan>)</font>+<a name="(line437)"></a>                                                   <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font> name+<a name="(line438)"></a>                                      checkmatch p n m<font color=Cyan>)</font>+<a name="(line439)"></a>          <font color=Cyan>)</font> <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in element tag "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line440)"></a>+<a name="(line441)"></a><a name="checkmatch"></a>checkmatch <font color=Red>::</font> Posn <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> Name <font color=Red>-&gt;</font> XParser ()+<a name="(line442)"></a>checkmatch p n m <font color=Red>=</font>+<a name="(line443)"></a>  <font color=Green><u>if</u></font> n <font color=Cyan>==</font> m <font color=Green><u>then</u></font> return ()+<a name="(line444)"></a>  <font color=Green><u>else</u></font> failBadP <font color=Cyan>(</font><font color=Magenta>"tag &lt;"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>"&gt; terminated by &lt;/"</font><font color=Cyan>++</font>m<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line445)"></a>+<a name="(line446)"></a><a name="elemtag"></a><font color=Blue>-- | Parse only the parts between angle brackets in an element tag.</font>+<a name="(line447)"></a>elemtag <font color=Red>::</font> XParser ElemTag+<a name="(line448)"></a>elemtag <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line449)"></a>    n  <font color=Red>&lt;-</font> name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"malformed element tag\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line450)"></a>    <font color=Green><u>as</u></font> <font color=Red>&lt;-</font> many attribute+<a name="(line451)"></a>    return <font color=Cyan>(</font>ElemTag n <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line452)"></a>+<a name="(line453)"></a><a name="elemOpenTag"></a><font color=Blue>-- | For use with stream parsers - returns the complete opening element tag.</font>+<a name="(line454)"></a>elemOpenTag <font color=Red>::</font> XParser ElemTag+<a name="(line455)"></a>elemOpenTag <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line456)"></a>    tok TokAnyOpen+<a name="(line457)"></a>    e <font color=Red>&lt;-</font> elemtag+<a name="(line458)"></a>    tok TokAnyClose+<a name="(line459)"></a>    return e+<a name="(line460)"></a>+<a name="(line461)"></a><a name="elemCloseTag"></a><font color=Blue>-- | For use with stream parsers - accepts a closing tag, provided it</font>+<a name="(line462)"></a><font color=Blue>--   matches the given element name.</font>+<a name="(line463)"></a>elemCloseTag <font color=Red>::</font> Name <font color=Red>-&gt;</font> XParser ()+<a name="(line464)"></a>elemCloseTag n <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line465)"></a>    tok TokEndOpen+<a name="(line466)"></a>    p <font color=Red>&lt;-</font> posn+<a name="(line467)"></a>    m <font color=Red>&lt;-</font> name+<a name="(line468)"></a>    tok TokAnyClose+<a name="(line469)"></a>    checkmatch p n m+<a name="(line470)"></a>+<a name="(line471)"></a><a name="attribute"></a>attribute <font color=Red>::</font> XParser Attribute+<a name="(line472)"></a>attribute <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line473)"></a>    n <font color=Red>&lt;-</font> name <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"malformed attribute name\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line474)"></a>    tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing = in attribute"</font>+<a name="(line475)"></a>    v <font color=Red>&lt;-</font> attvalue <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing attvalue"</font>+<a name="(line476)"></a>    return <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font>+<a name="(line477)"></a>+<a name="(line478)"></a><a name="content"></a><font color=Blue>-- | Return a content particle, e.g. text, element, reference, etc</font>+<a name="(line479)"></a>content <font color=Red>::</font> XParser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font>+<a name="(line480)"></a>content <font color=Red>=</font>+<a name="(line481)"></a>  <font color=Green><u>do</u></font> <font color=Cyan>{</font> p  <font color=Red>&lt;-</font> posn+<a name="(line482)"></a>     <font color=Cyan>;</font> c' <font color=Red>&lt;-</font> content'+<a name="(line483)"></a>     <font color=Cyan>;</font> return <font color=Cyan>(</font>c' p<font color=Cyan>)</font>+<a name="(line484)"></a>     <font color=Cyan>}</font>+<a name="(line485)"></a>  <font color=Green><u>where</u></font>+<a name="(line486)"></a>     content' <font color=Red>=</font> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"element"</font><font color=Cyan>,</font>   element   <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CElem<font color=Cyan>)</font>+<a name="(line487)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"chardata"</font><font color=Cyan>,</font>  chardata  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CString False<font color=Cyan>)</font>+<a name="(line488)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CRef<font color=Cyan>)</font>+<a name="(line489)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"CDATA"</font><font color=Cyan>,</font>     cdsect    <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CString True<font color=Cyan>)</font>+<a name="(line490)"></a>                       <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"misc"</font><font color=Cyan>,</font>      misc      <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> CMisc<font color=Cyan>)</font>+<a name="(line491)"></a>                       <font color=Red>]</font>+<a name="(line492)"></a>                  <font color=Cyan>`adjustErrP`</font> <font color=Cyan>(</font><font color=Magenta>"when looking for a content item,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line493)"></a><font color=Blue>-- (\    (element, text, reference, CDATA section, &lt;!--comment--&gt;, or &lt;?PI?&gt;")</font>+<a name="(line494)"></a>+<a name="(line495)"></a><a name="elementdecl"></a>elementdecl <font color=Red>::</font> XParser ElementDecl+<a name="(line496)"></a>elementdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line497)"></a>    tok TokSpecialOpen+<a name="(line498)"></a>    tok <font color=Cyan>(</font>TokSpecial ELEMENTx<font color=Cyan>)</font>+<a name="(line499)"></a>    n <font color=Red>&lt;-</font> peRef name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"expecting identifier in ELEMENT decl\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line500)"></a>    c <font color=Red>&lt;-</font> peRef contentspec+<a name="(line501)"></a>             <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in content spec of ELEMENT decl: "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line502)"></a>    blank <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failBadP+<a name="(line503)"></a>       <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating ELEMENT decl"</font>+<a name="(line504)"></a>       <font color=Cyan>++</font><font color=Magenta>"\n    element name was "</font><font color=Cyan>++</font>show n+<a name="(line505)"></a>       <font color=Cyan>++</font><font color=Magenta>"\n    contentspec was "</font><font color=Cyan>++</font><font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>ContentSpec p<font color=Cyan>)</font><font color=Red>-&gt;</font> show p<font color=Cyan>)</font> c<font color=Cyan>)</font>+<a name="(line506)"></a>    return <font color=Cyan>(</font>ElementDecl n c<font color=Cyan>)</font>+<a name="(line507)"></a>+<a name="(line508)"></a><a name="contentspec"></a>contentspec <font color=Red>::</font> XParser ContentSpec+<a name="(line509)"></a>contentspec <font color=Red>=</font>+<a name="(line510)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"EMPTY"</font><font color=Cyan>,</font>  peRef <font color=Cyan>(</font>word <font color=Magenta>"EMPTY"</font><font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return EMPTY<font color=Cyan>)</font>+<a name="(line511)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"ANY"</font><font color=Cyan>,</font>    peRef <font color=Cyan>(</font>word <font color=Magenta>"ANY"</font><font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return ANY<font color=Cyan>)</font>+<a name="(line512)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"mixed"</font><font color=Cyan>,</font>  peRef mixed <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Mixed<font color=Cyan>)</font>+<a name="(line513)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"simple"</font><font color=Cyan>,</font> peRef cp <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> ContentSpec<font color=Cyan>)</font>+<a name="(line514)"></a>           <font color=Red>]</font>+<a name="(line515)"></a> <font color=Blue>--   `adjustErr` ("when looking for content spec,\n"++)</font>+<a name="(line516)"></a> <font color=Blue>--   `adjustErr` (++"\nLooking for content spec (EMPTY, ANY, mixed, etc)")</font>+<a name="(line517)"></a>+<a name="(line518)"></a><a name="choice"></a>choice <font color=Red>::</font> XParser <font color=Red>[</font>CP<font color=Red>]</font>+<a name="(line519)"></a>choice <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line520)"></a>    bracket <font color=Cyan>(</font>tok TokBraOpen <font color=Cyan>`debug`</font> <font color=Magenta>"Trying choice"</font><font color=Cyan>)</font>+<a name="(line521)"></a>            <font color=Cyan>(</font>blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>`debug`</font> <font color=Magenta>"Succeeded with choice"</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line522)"></a>            <font color=Cyan>(</font>peRef cp <font color=Cyan>`sepBy1`</font> blank <font color=Cyan>(</font>tok TokPipe<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line523)"></a>+<a name="(line524)"></a><a name="sequence"></a>sequence <font color=Red>::</font> XParser <font color=Red>[</font>CP<font color=Red>]</font>+<a name="(line525)"></a>sequence <font color=Red>=</font> <font color=Green><u>do</u></font>	<font color=Blue>-- bracket is inappropriate because of inner failBad</font>+<a name="(line526)"></a> <font color=Blue>-- bracket (tok TokBraOpen `debug` "Trying sequence")</font>+<a name="(line527)"></a> <font color=Blue>--         (blank (tok TokBraClose `debug` "Succeeded with sequence"))</font>+<a name="(line528)"></a> <font color=Blue>--         (peRef cp `sepBy1` blank (tok TokComma))</font>+<a name="(line529)"></a>    tok TokBraOpen <font color=Cyan>`debug`</font> <font color=Magenta>"Trying sequence"</font>+<a name="(line530)"></a>    cps <font color=Red>&lt;-</font> peRef cp <font color=Cyan>`sepBy1`</font> blank <font color=Cyan>(</font>tok TokComma<font color=Cyan>)</font>+<a name="(line531)"></a>    blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>`debug`</font> <font color=Magenta>"Succeeded with sequence"</font><font color=Cyan>)</font>+<a name="(line532)"></a>    return cps+<a name="(line533)"></a>+<a name="(line534)"></a><a name="cp"></a>cp <font color=Red>::</font> XParser CP+<a name="(line535)"></a>cp <font color=Red>=</font> oneOf <font color=Red>[</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> n <font color=Red>&lt;-</font> name+<a name="(line536)"></a>                  m <font color=Red>&lt;-</font> modifier+<a name="(line537)"></a>                  <font color=Green><u>let</u></font> c <font color=Red>=</font> TagName n m+<a name="(line538)"></a>                  return c <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ContentSpec: name "</font><font color=Cyan>++</font>show c<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line539)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> ss <font color=Red>&lt;-</font> sequence+<a name="(line540)"></a>                  m <font color=Red>&lt;-</font> modifier+<a name="(line541)"></a>                  <font color=Green><u>let</u></font> c <font color=Red>=</font> Seq ss m+<a name="(line542)"></a>                  return c <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ContentSpec: sequence "</font><font color=Cyan>++</font>show c<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line543)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> cs <font color=Red>&lt;-</font> choice+<a name="(line544)"></a>                  m <font color=Red>&lt;-</font> modifier+<a name="(line545)"></a>                  <font color=Green><u>let</u></font> c <font color=Red>=</font> Choice cs m+<a name="(line546)"></a>                  return c <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ContentSpec: choice "</font><font color=Cyan>++</font>show c<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line547)"></a>           <font color=Red>]</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"\nwhen looking for a content particle"</font><font color=Cyan>)</font>+<a name="(line548)"></a>+<a name="(line549)"></a><a name="modifier"></a>modifier <font color=Red>::</font> XParser Modifier+<a name="(line550)"></a>modifier <font color=Red>=</font> oneOf <font color=Red>[</font> <font color=Cyan>(</font> tok TokStar <font color=Cyan>&gt;&gt;</font> return Star <font color=Cyan>)</font>+<a name="(line551)"></a>                 <font color=Cyan>,</font> <font color=Cyan>(</font> tok TokQuery <font color=Cyan>&gt;&gt;</font> return Query <font color=Cyan>)</font>+<a name="(line552)"></a>                 <font color=Cyan>,</font> <font color=Cyan>(</font> tok TokPlus <font color=Cyan>&gt;&gt;</font> return Plus <font color=Cyan>)</font>+<a name="(line553)"></a>                 <font color=Cyan>,</font> <font color=Cyan>(</font> return None <font color=Cyan>)</font>+<a name="(line554)"></a>                 <font color=Red>]</font>+<a name="(line555)"></a>+<a name="(line556)"></a><font color=Blue>-- just for debugging</font>+<a name="(line557)"></a><font color=Green><u>instance</u></font> Show CP <font color=Green><u>where</u></font>+<a name="(line558)"></a>    show <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font> <font color=Red>=</font> n<font color=Cyan>++</font>show m+<a name="(line559)"></a>    show <font color=Cyan>(</font>Choice cps m<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'('</font><font color=Red><b>:</b></font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>"|"</font> <font color=Cyan>(</font>map show cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line560)"></a>                          <font color=Cyan>++</font><font color=Magenta>")"</font><font color=Cyan>++</font>show m+<a name="(line561)"></a>    show <font color=Cyan>(</font>Seq cps m<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'('</font><font color=Red><b>:</b></font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>","</font> <font color=Cyan>(</font>map show cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line562)"></a>                          <font color=Cyan>++</font><font color=Magenta>")"</font><font color=Cyan>++</font>show m+<a name="(line563)"></a><font color=Green><u>instance</u></font> Show Modifier <font color=Green><u>where</u></font>+<a name="(line564)"></a>    show None <font color=Red>=</font> <font color=Magenta>""</font>+<a name="(line565)"></a>    show Query <font color=Red>=</font> <font color=Magenta>"?"</font>+<a name="(line566)"></a>    show Star <font color=Red>=</font> <font color=Magenta>"*"</font>+<a name="(line567)"></a>    show Plus <font color=Red>=</font> <font color=Magenta>"+"</font>+<a name="(line568)"></a><font color=Blue>----</font>+<a name="(line569)"></a>+<a name="(line570)"></a><a name="mixed"></a>mixed <font color=Red>::</font> XParser Mixed+<a name="(line571)"></a>mixed <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line572)"></a>    tok TokBraOpen+<a name="(line573)"></a>    peRef <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokHash+<a name="(line574)"></a>              word <font color=Magenta>"PCDATA"</font><font color=Cyan>)</font>+<a name="(line575)"></a>    commit <font color=Cyan>$</font>+<a name="(line576)"></a>      oneOf <font color=Red>[</font> <font color=Cyan>(</font> <font color=Green><u>do</u></font> cs <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokPipe+<a name="(line577)"></a>                                         peRef name<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line578)"></a>                   blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>&gt;&gt;</font> tok TokStar<font color=Cyan>)</font>+<a name="(line579)"></a>                   return <font color=Cyan>(</font>PCDATAplus cs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line580)"></a>            <font color=Cyan>,</font> <font color=Cyan>(</font> blank <font color=Cyan>(</font>tok TokBraClose <font color=Cyan>&gt;&gt;</font> tok TokStar<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return PCDATA<font color=Cyan>)</font>+<a name="(line581)"></a>            <font color=Cyan>,</font> <font color=Cyan>(</font> blank <font color=Cyan>(</font>tok TokBraClose<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;</font> return PCDATA<font color=Cyan>)</font>+<a name="(line582)"></a>            <font color=Red>]</font>+<a name="(line583)"></a>        <font color=Cyan>`adjustErrP`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"\nLooking for mixed content spec (#PCDATA | ...)*\n"</font><font color=Cyan>)</font>+<a name="(line584)"></a>+<a name="(line585)"></a><a name="attlistdecl"></a>attlistdecl <font color=Red>::</font> XParser AttListDecl+<a name="(line586)"></a>attlistdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line587)"></a>    tok TokSpecialOpen+<a name="(line588)"></a>    tok <font color=Cyan>(</font>TokSpecial ATTLISTx<font color=Cyan>)</font>+<a name="(line589)"></a>    n <font color=Red>&lt;-</font> peRef name <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Magenta>"expecting identifier in ATTLIST\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line590)"></a>    ds <font color=Red>&lt;-</font> peRef <font color=Cyan>(</font>many1 <font color=Cyan>(</font>peRef attdef<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line591)"></a>    blank <font color=Cyan>(</font>tok TokAnyClose<font color=Cyan>)</font> <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing &gt; terminating ATTLIST"</font>+<a name="(line592)"></a>    return <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font>+<a name="(line593)"></a>+<a name="(line594)"></a><a name="attdef"></a>attdef <font color=Red>::</font> XParser AttDef+<a name="(line595)"></a>attdef <font color=Red>=</font>+<a name="(line596)"></a>  <font color=Green><u>do</u></font> n <font color=Red>&lt;-</font> peRef name <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"expecting attribute name\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line597)"></a>     t <font color=Red>&lt;-</font> peRef atttype <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"within attlist defn: "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line598)"></a>     d <font color=Red>&lt;-</font> peRef defaultdecl <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in attlist defn: "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line599)"></a>     return <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font>+<a name="(line600)"></a>+<a name="(line601)"></a><a name="atttype"></a>atttype <font color=Red>::</font> XParser AttType+<a name="(line602)"></a>atttype <font color=Red>=</font>+<a name="(line603)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"CDATA"</font><font color=Cyan>,</font>      word <font color=Magenta>"CDATA"</font> <font color=Cyan>&gt;&gt;</font> return StringType<font color=Cyan>)</font>+<a name="(line604)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"tokenized"</font><font color=Cyan>,</font>  tokenizedtype <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> TokenizedType<font color=Cyan>)</font>+<a name="(line605)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"enumerated"</font><font color=Cyan>,</font> enumeratedtype <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EnumeratedType<font color=Cyan>)</font>+<a name="(line606)"></a>           <font color=Red>]</font>+<a name="(line607)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for ATTTYPE,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line608)"></a> <font color=Blue>--   `adjustErr` (++"\nLooking for ATTTYPE (CDATA, tokenized, or enumerated")</font>+<a name="(line609)"></a>+<a name="(line610)"></a><a name="tokenizedtype"></a>tokenizedtype <font color=Red>::</font> XParser TokenizedType+<a name="(line611)"></a>tokenizedtype <font color=Red>=</font>+<a name="(line612)"></a>    oneOf <font color=Red>[</font> <font color=Cyan>(</font> word <font color=Magenta>"ID"</font> <font color=Cyan>&gt;&gt;</font> return ID<font color=Cyan>)</font>+<a name="(line613)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"IDREF"</font> <font color=Cyan>&gt;&gt;</font> return IDREF<font color=Cyan>)</font>+<a name="(line614)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"IDREFS"</font> <font color=Cyan>&gt;&gt;</font> return IDREFS<font color=Cyan>)</font>+<a name="(line615)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"ENTITY"</font> <font color=Cyan>&gt;&gt;</font> return ENTITY<font color=Cyan>)</font>+<a name="(line616)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"ENTITIES"</font> <font color=Cyan>&gt;&gt;</font> return ENTITIES<font color=Cyan>)</font>+<a name="(line617)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"NMTOKEN"</font> <font color=Cyan>&gt;&gt;</font> return NMTOKEN<font color=Cyan>)</font>+<a name="(line618)"></a>          <font color=Cyan>,</font> <font color=Cyan>(</font> word <font color=Magenta>"NMTOKENS"</font> <font color=Cyan>&gt;&gt;</font> return NMTOKENS<font color=Cyan>)</font>+<a name="(line619)"></a>          <font color=Red>]</font> <font color=Cyan>`onFail`</font>+<a name="(line620)"></a>    <font color=Green><u>do</u></font> <font color=Cyan>{</font> t <font color=Red>&lt;-</font> next+<a name="(line621)"></a>       <font color=Cyan>;</font> failP <font color=Cyan>(</font><font color=Magenta>"Expected one of"</font>+<a name="(line622)"></a>               <font color=Cyan>++</font><font color=Magenta>" (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)"</font>+<a name="(line623)"></a>               <font color=Cyan>++</font><font color=Magenta>"\nbut got "</font><font color=Cyan>++</font>show t<font color=Cyan>)</font>+<a name="(line624)"></a>       <font color=Cyan>}</font>+<a name="(line625)"></a><font color=Blue>-- `adjustErr` (++"\nLooking for a tokenized type:\n\ </font>+<a name="(line626)"></a><font color=Blue>-- \    (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)")</font>+<a name="(line627)"></a>+<a name="(line628)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Red>::</font> XParser EnumeratedType+<a name="(line629)"></a>enumeratedtype <font color=Red>=</font>+<a name="(line630)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"NOTATION"</font><font color=Cyan>,</font>   notationtype <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> NotationType<font color=Cyan>)</font>+<a name="(line631)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"enumerated"</font><font color=Cyan>,</font> enumeration <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> Enumeration<font color=Cyan>)</font>+<a name="(line632)"></a>           <font color=Red>]</font>+<a name="(line633)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an enumerated or NOTATION type,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line634)"></a>+<a name="(line635)"></a><a name="notationtype"></a>notationtype <font color=Red>::</font> XParser NotationType+<a name="(line636)"></a>notationtype <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line637)"></a>    word <font color=Magenta>"NOTATION"</font>+<a name="(line638)"></a>    bracket <font color=Cyan>(</font>tok TokBraOpen<font color=Cyan>)</font> <font color=Cyan>(</font>blank <font color=Cyan>(</font>tok TokBraClose<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line639)"></a>            <font color=Cyan>(</font>peRef name <font color=Cyan>`sepBy1`</font> peRef <font color=Cyan>(</font>tok TokPipe<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line640)"></a>+<a name="(line641)"></a><a name="enumeration"></a>enumeration <font color=Red>::</font> XParser Enumeration+<a name="(line642)"></a>enumeration <font color=Red>=</font>+<a name="(line643)"></a>    bracket <font color=Cyan>(</font>tok TokBraOpen<font color=Cyan>)</font> <font color=Cyan>(</font>blank <font color=Cyan>(</font>tok TokBraClose<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line644)"></a>            <font color=Cyan>(</font>peRef nmtoken <font color=Cyan>`sepBy1`</font> blank <font color=Cyan>(</font>peRef <font color=Cyan>(</font>tok TokPipe<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line645)"></a>+<a name="(line646)"></a><a name="defaultdecl"></a>defaultdecl <font color=Red>::</font> XParser DefaultDecl+<a name="(line647)"></a>defaultdecl <font color=Red>=</font>+<a name="(line648)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"REQUIRED"</font><font color=Cyan>,</font>  tok TokHash <font color=Cyan>&gt;&gt;</font> word <font color=Magenta>"REQUIRED"</font> <font color=Cyan>&gt;&gt;</font> return REQUIRED<font color=Cyan>)</font>+<a name="(line649)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"IMPLIED"</font><font color=Cyan>,</font>   tok TokHash <font color=Cyan>&gt;&gt;</font> word <font color=Magenta>"IMPLIED"</font> <font color=Cyan>&gt;&gt;</font> return IMPLIED<font color=Cyan>)</font>+<a name="(line650)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"FIXED"</font><font color=Cyan>,</font>     <font color=Green><u>do</u></font> f <font color=Red>&lt;-</font> maybe <font color=Cyan>(</font>tok TokHash <font color=Cyan>&gt;&gt;</font> word <font color=Magenta>"FIXED"</font>+<a name="(line651)"></a>                                                      <font color=Cyan>&gt;&gt;</font> return FIXED<font color=Cyan>)</font>+<a name="(line652)"></a>                              a <font color=Red>&lt;-</font> peRef attvalue+<a name="(line653)"></a>                              return <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line654)"></a>           <font color=Red>]</font>+<a name="(line655)"></a>        <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an attribute default decl,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line656)"></a><font color=Blue>--      `adjustErr` (++"\nLooking for an attribute default decl:\n\ </font>+<a name="(line657)"></a><font color=Blue>-- \    (REQUIRED, IMPLIED, FIXED)")</font>+<a name="(line658)"></a>+<a name="(line659)"></a><a name="conditionalsect"></a>conditionalsect <font color=Red>::</font> XParser ConditionalSect+<a name="(line660)"></a>conditionalsect <font color=Red>=</font> oneOf'+<a name="(line661)"></a>    <font color=Red>[</font> <font color=Cyan>(</font> <font color=Magenta>"INCLUDE"</font>+<a name="(line662)"></a>      <font color=Cyan>,</font> <font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line663)"></a>           peRef <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection INCLUDEx<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line664)"></a>           p <font color=Red>&lt;-</font> posn+<a name="(line665)"></a>           tok TokSqOpen <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing [ after INCLUDE"</font>+<a name="(line666)"></a>           i <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>+<a name="(line667)"></a>           tok TokSectionClose+<a name="(line668)"></a>                   <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"missing ]]&gt; for INCLUDE section"</font>+<a name="(line669)"></a>                                     <font color=Cyan>++</font><font color=Magenta>"\n    begun at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line670)"></a>           return <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line671)"></a>    <font color=Cyan>,</font> <font color=Cyan>(</font> <font color=Magenta>"IGNORE"</font>+<a name="(line672)"></a>      <font color=Cyan>,</font> <font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line673)"></a>           peRef <font color=Cyan>(</font>tok <font color=Cyan>(</font>TokSection IGNOREx<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line674)"></a>           p <font color=Red>&lt;-</font> posn+<a name="(line675)"></a>           tok TokSqOpen <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"missing [ after IGNORE"</font>+<a name="(line676)"></a>           i <font color=Red>&lt;-</font> many newIgnore  <font color=Blue>-- many ignoresectcontents</font>+<a name="(line677)"></a>           tok TokSectionClose+<a name="(line678)"></a>                   <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"missing ]]&gt; for IGNORE section"</font>+<a name="(line679)"></a>                                     <font color=Cyan>++</font><font color=Magenta>"\n    begun at "</font><font color=Cyan>++</font>show p<font color=Cyan>)</font>+<a name="(line680)"></a>           return <font color=Cyan>(</font>IgnoreSect []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line681)"></a>    <font color=Red>]</font> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"in a conditional section,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line682)"></a>+<a name="(line683)"></a><a name="newIgnore"></a>newIgnore <font color=Red>::</font> XParser Ignore+<a name="(line684)"></a>newIgnore <font color=Red>=</font>+<a name="(line685)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line686)"></a>         many newIgnore <font color=Cyan>`debug`</font> <font color=Magenta>"IGNORING conditional section"</font>+<a name="(line687)"></a>         tok TokSectionClose+<a name="(line688)"></a>         return Ignore <font color=Cyan>`debug`</font> <font color=Magenta>"end of IGNORED conditional section"</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line689)"></a>    <font color=Cyan>(</font> <font color=Green><u>do</u></font> t <font color=Red>&lt;-</font> nottok <font color=Red>[</font>TokSectionOpen<font color=Cyan>,</font>TokSectionClose<font color=Red>]</font>+<a name="(line690)"></a>         return Ignore  <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ignoring: "</font><font color=Cyan>++</font>show t<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line691)"></a>+<a name="(line692)"></a><a name="ignoresectcontents"></a><font color=Blue>--- obsolete?</font>+<a name="(line693)"></a>ignoresectcontents <font color=Red>::</font> XParser IgnoreSectContents+<a name="(line694)"></a>ignoresectcontents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line695)"></a>    i <font color=Red>&lt;-</font> ignore+<a name="(line696)"></a>    is <font color=Red>&lt;-</font> many <font color=Cyan>(</font><font color=Green><u>do</u></font> tok TokSectionOpen+<a name="(line697)"></a>                   ic <font color=Red>&lt;-</font> ignoresectcontents+<a name="(line698)"></a>                   tok TokSectionClose+<a name="(line699)"></a>                   ig <font color=Red>&lt;-</font> ignore+<a name="(line700)"></a>                   return <font color=Cyan>(</font>ic<font color=Cyan>,</font>ig<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line701)"></a>    return <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>+<a name="(line702)"></a>+<a name="(line703)"></a><a name="ignore"></a>ignore <font color=Red>::</font> XParser Ignore+<a name="(line704)"></a>ignore <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line705)"></a>  is <font color=Red>&lt;-</font> many1 <font color=Cyan>(</font>nottok <font color=Red>[</font>TokSectionOpen<font color=Cyan>,</font>TokSectionClose<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line706)"></a>  return Ignore  <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"ignored all of: "</font><font color=Cyan>++</font>show is<font color=Cyan>)</font>+<a name="(line707)"></a><font color=Blue>----</font>+<a name="(line708)"></a>+<a name="(line709)"></a><a name="reference"></a><font color=Blue>-- | Return either a general entity reference, or a character reference.</font>+<a name="(line710)"></a>reference <font color=Red>::</font> XParser Reference+<a name="(line711)"></a>reference <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line712)"></a>    bracket <font color=Cyan>(</font>tok TokAmp<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSemi<font color=Cyan>)</font> <font color=Cyan>(</font>freetext <font color=Cyan>&gt;&gt;=</font> val<font color=Cyan>)</font>+<a name="(line713)"></a>  <font color=Green><u>where</u></font>+<a name="(line714)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font><font color=Magenta>'x'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font> <font color=Red>|</font> all isHexDigit i+<a name="(line715)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readHex <font color=Cyan>$</font> i+<a name="(line716)"></a>    val <font color=Cyan>(</font><font color=Magenta>'#'</font><font color=Red><b>:</b></font>i<font color=Cyan>)</font>     <font color=Red>|</font> all isDigit i+<a name="(line717)"></a>                    <font color=Red>=</font> return <font color=Cyan>.</font> RefChar <font color=Cyan>.</font> fst <font color=Cyan>.</font> head <font color=Cyan>.</font> readDec <font color=Cyan>$</font> i+<a name="(line718)"></a>    val name        <font color=Red>=</font> return <font color=Cyan>.</font> RefEntity <font color=Cyan>$</font> name+<a name="(line719)"></a>+<a name="(line720)"></a><font color=Blue>{- -- following is incorrect+<a name="(line721)"></a>reference =+<a name="(line722)"></a>    ( charref &gt;&gt;= return . RefChar) `onFail`+<a name="(line723)"></a>    ( entityref &gt;&gt;= return . RefEntity)+<a name="(line724)"></a>+<a name="(line725)"></a>entityref :: XParser EntityRef+<a name="(line726)"></a>entityref = do+<a name="(line727)"></a>    bracket (tok TokAmp) (tok TokSemi) name+<a name="(line728)"></a>+<a name="(line729)"></a>charref :: XParser CharRef+<a name="(line730)"></a>charref = do+<a name="(line731)"></a>    bracket (tok TokAmp) (tok TokSemi) (freetext &gt;&gt;= readCharVal)+<a name="(line732)"></a>  where+<a name="(line733)"></a>    readCharVal ('#':'x':i) = return . fst . head . readHex $ i+<a name="(line734)"></a>    readCharVal ('#':i)     = return . fst . head . readDec $ i+<a name="(line735)"></a>    readCharVal _           = mzero+<a name="(line736)"></a>-}</font>+<a name="(line737)"></a>+<a name="(line738)"></a><a name="pereference"></a>pereference <font color=Red>::</font> XParser PEReference+<a name="(line739)"></a>pereference <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line740)"></a>    bracket <font color=Cyan>(</font>tok TokPercent<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSemi<font color=Cyan>)</font> nmtoken+<a name="(line741)"></a>+<a name="(line742)"></a><a name="entitydecl"></a>entitydecl <font color=Red>::</font> XParser EntityDecl+<a name="(line743)"></a>entitydecl <font color=Red>=</font>+<a name="(line744)"></a>    <font color=Cyan>(</font> gedecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EntityGEDecl<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line745)"></a>    <font color=Cyan>(</font> pedecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EntityPEDecl<font color=Cyan>)</font>+<a name="(line746)"></a>+<a name="(line747)"></a><a name="gedecl"></a>gedecl <font color=Red>::</font> XParser GEDecl+<a name="(line748)"></a>gedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line749)"></a>    tok TokSpecialOpen+<a name="(line750)"></a>    tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>+<a name="(line751)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line752)"></a>    e <font color=Red>&lt;-</font> entitydef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in general entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line753)"></a>    tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating G ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line754)"></a>    stUpdate <font color=Cyan>(</font>addGE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added GE defn &amp;"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line755)"></a>    return <font color=Cyan>(</font>GEDecl n e<font color=Cyan>)</font>+<a name="(line756)"></a>+<a name="(line757)"></a><a name="pedecl"></a>pedecl <font color=Red>::</font> XParser PEDecl+<a name="(line758)"></a>pedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line759)"></a>    tok TokSpecialOpen+<a name="(line760)"></a>    tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>+<a name="(line761)"></a>    tok TokPercent+<a name="(line762)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line763)"></a>    e <font color=Red>&lt;-</font> pedef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in parameter entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line764)"></a>    tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating P ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line765)"></a>    stUpdate <font color=Cyan>(</font>addPE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added PE defn %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";\n"</font><font color=Cyan>++</font>show e<font color=Cyan>)</font>+<a name="(line766)"></a>    return <font color=Cyan>(</font>PEDecl n e<font color=Cyan>)</font>+<a name="(line767)"></a>+<a name="(line768)"></a><a name="entitydef"></a>entitydef <font color=Red>::</font> XParser EntityDef+<a name="(line769)"></a>entitydef <font color=Red>=</font>+<a name="(line770)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> DefEntityValue<font color=Cyan>)</font>+<a name="(line771)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"external"</font><font color=Cyan>,</font>    <font color=Green><u>do</u></font> eid <font color=Red>&lt;-</font> externalid+<a name="(line772)"></a>                                ndd <font color=Red>&lt;-</font> maybe ndatadecl+<a name="(line773)"></a>                                return <font color=Cyan>(</font>DefExternalID eid ndd<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line774)"></a>           <font color=Red>]</font>+<a name="(line775)"></a>+<a name="(line776)"></a><a name="pedef"></a>pedef <font color=Red>::</font> XParser PEDef+<a name="(line777)"></a>pedef <font color=Red>=</font>+<a name="(line778)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PEDefEntityValue<font color=Cyan>)</font>+<a name="(line779)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"externalid"</font><font color=Cyan>,</font>  externalid  <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> PEDefExternalID<font color=Cyan>)</font>+<a name="(line780)"></a>           <font color=Red>]</font>+<a name="(line781)"></a>+<a name="(line782)"></a><a name="externalid"></a>externalid <font color=Red>::</font> XParser ExternalID+<a name="(line783)"></a>externalid <font color=Red>=</font>+<a name="(line784)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"SYSTEM"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"SYSTEM"</font>+<a name="(line785)"></a>                           s <font color=Red>&lt;-</font> systemliteral+<a name="(line786)"></a>                           return <font color=Cyan>(</font>SYSTEM s<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line787)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"PUBLIC"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"PUBLIC"</font>+<a name="(line788)"></a>                           p <font color=Red>&lt;-</font> pubidliteral+<a name="(line789)"></a>                           s <font color=Red>&lt;-</font> systemliteral+<a name="(line790)"></a>                           return <font color=Cyan>(</font>PUBLIC p s<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line791)"></a>           <font color=Red>]</font>+<a name="(line792)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an external id,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line793)"></a>+<a name="(line794)"></a><a name="ndatadecl"></a>ndatadecl <font color=Red>::</font> XParser NDataDecl+<a name="(line795)"></a>ndatadecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line796)"></a>    word <font color=Magenta>"NDATA"</font>+<a name="(line797)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line798)"></a>    return <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>+<a name="(line799)"></a>+<a name="(line800)"></a><a name="textdecl"></a>textdecl <font color=Red>::</font> XParser TextDecl+<a name="(line801)"></a>textdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line802)"></a>    tok TokPIOpen+<a name="(line803)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line804)"></a>    v <font color=Red>&lt;-</font> maybe versioninfo+<a name="(line805)"></a>    e <font color=Red>&lt;-</font> encodingdecl+<a name="(line806)"></a>    tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"expected ?&gt; terminating text decl"</font>+<a name="(line807)"></a>    return <font color=Cyan>(</font>TextDecl v e<font color=Cyan>)</font>+<a name="(line808)"></a>+<a name="(line809)"></a><a name="extparsedent"></a>extparsedent <font color=Red>::</font> XParser <font color=Cyan>(</font>ExtParsedEnt Posn<font color=Cyan>)</font>+<a name="(line810)"></a>extparsedent <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line811)"></a>    t <font color=Red>&lt;-</font> maybe textdecl+<a name="(line812)"></a>    c <font color=Red>&lt;-</font> content+<a name="(line813)"></a>    return <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font>+<a name="(line814)"></a>+<a name="(line815)"></a><a name="extpe"></a>extpe <font color=Red>::</font> XParser ExtPE+<a name="(line816)"></a>extpe <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line817)"></a>    t <font color=Red>&lt;-</font> maybe textdecl+<a name="(line818)"></a>    e <font color=Red>&lt;-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>+<a name="(line819)"></a>    return <font color=Cyan>(</font>ExtPE t e<font color=Cyan>)</font>+<a name="(line820)"></a>+<a name="(line821)"></a><a name="encodingdecl"></a>encodingdecl <font color=Red>::</font> XParser EncodingDecl+<a name="(line822)"></a>encodingdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line823)"></a>    <font color=Cyan>(</font>word <font color=Magenta>"encoding"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"ENCODING"</font><font color=Cyan>)</font>+<a name="(line824)"></a>    tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected = in 'encoding' decl"</font>+<a name="(line825)"></a>    f <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line826)"></a>    return <font color=Cyan>(</font>EncodingDecl f<font color=Cyan>)</font>+<a name="(line827)"></a>+<a name="(line828)"></a><a name="notationdecl"></a>notationdecl <font color=Red>::</font> XParser NotationDecl+<a name="(line829)"></a>notationdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line830)"></a>    tok TokSpecialOpen+<a name="(line831)"></a>    tok <font color=Cyan>(</font>TokSpecial NOTATIONx<font color=Cyan>)</font>+<a name="(line832)"></a>    n <font color=Red>&lt;-</font> name+<a name="(line833)"></a>    e <font color=Red>&lt;-</font> either externalid publicid+<a name="(line834)"></a>    tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected &gt; terminating NOTATION decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line835)"></a>    return <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>+<a name="(line836)"></a>+<a name="(line837)"></a><a name="publicid"></a>publicid <font color=Red>::</font> XParser PublicID+<a name="(line838)"></a>publicid <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line839)"></a>    word <font color=Magenta>"PUBLIC"</font>+<a name="(line840)"></a>    p <font color=Red>&lt;-</font> pubidliteral+<a name="(line841)"></a>    return <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>+<a name="(line842)"></a>+<a name="(line843)"></a><a name="entityvalue"></a>entityvalue <font color=Red>::</font> XParser EntityValue+<a name="(line844)"></a>entityvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line845)"></a> <font color=Blue>-- evs &lt;- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))</font>+<a name="(line846)"></a>    tok TokQuote+<a name="(line847)"></a>    pn <font color=Red>&lt;-</font> posn+<a name="(line848)"></a>    evs <font color=Red>&lt;-</font> many ev+<a name="(line849)"></a>    tok TokQuote <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected quote to terminate entityvalue"</font>+<a name="(line850)"></a>    <font color=Blue>-- quoted text must be rescanned for possible PERefs</font>+<a name="(line851)"></a>    st <font color=Red>&lt;-</font> stGet+<a name="(line852)"></a> <font color=Blue>-- Prelude.either failBad (return . EntityValue) . fst3 $</font>+<a name="(line853)"></a>    return <font color=Cyan>.</font> EntityValue <font color=Cyan>.</font> fst3 <font color=Cyan>$</font>+<a name="(line854)"></a>                <font color=Cyan>(</font>runParser <font color=Cyan>(</font>many ev<font color=Cyan>)</font> st+<a name="(line855)"></a>                         <font color=Cyan>(</font>reLexEntityValue <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font> stringify <font color=Cyan>(</font>lookupPE s st<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line856)"></a>                                           pn+<a name="(line857)"></a>                                           <font color=Cyan>(</font>flattenEV <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line858)"></a>  <font color=Green><u>where</u></font>+<a name="(line859)"></a>    stringify <font color=Cyan>(</font>Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> Just <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font>+<a name="(line860)"></a>    stringify <font color=Green><u>_</u></font> <font color=Red>=</font> Nothing+<a name="(line861)"></a>+<a name="(line862)"></a><a name="ev"></a>ev <font color=Red>::</font> XParser EV+<a name="(line863)"></a>ev <font color=Red>=</font>+<a name="(line864)"></a>    oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"string"</font><font color=Cyan>,</font>    <font color=Cyan>(</font>string<font color=Cyan>`onFail`</font>freetext<font color=Cyan>)</font> <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVString<font color=Cyan>)</font>+<a name="(line865)"></a>           <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> EVRef<font color=Cyan>)</font>+<a name="(line866)"></a>           <font color=Red>]</font>+<a name="(line867)"></a>      <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for entity value,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line868)"></a>+<a name="(line869)"></a><a name="attvalue"></a>attvalue <font color=Red>::</font> XParser AttValue+<a name="(line870)"></a>attvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line871)"></a>    avs <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line872)"></a>                   <font color=Cyan>(</font>many <font color=Cyan>(</font>either freetext reference<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line873)"></a>    return <font color=Cyan>(</font>AttValue avs<font color=Cyan>)</font>+<a name="(line874)"></a>+<a name="(line875)"></a><a name="systemliteral"></a>systemliteral <font color=Red>::</font> XParser SystemLiteral+<a name="(line876)"></a>systemliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line877)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line878)"></a>    return <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>            <font color=Blue>-- note: refs &amp;...; not permitted</font>+<a name="(line879)"></a>+<a name="(line880)"></a><a name="pubidliteral"></a>pubidliteral <font color=Red>::</font> XParser PubidLiteral+<a name="(line881)"></a>pubidliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line882)"></a>    s <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line883)"></a>    return <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>             <font color=Blue>-- note: freetext is too liberal here</font>+<a name="(line884)"></a>+<a name="(line885)"></a><a name="chardata"></a><font color=Blue>-- | Return parsed freetext (i.e. until the next markup)</font>+<a name="(line886)"></a>chardata <font color=Red>::</font> XParser CharData+<a name="(line887)"></a>chardata <font color=Red>=</font> freetext+<a name="(line888)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Posn.html view
@@ -0,0 +1,79 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | Define a position datatype for giving locations in error messages.</font>+<a name="(line2)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn+<a name="(line3)"></a>  <font color=Cyan>(</font>+<a name="(line4)"></a>  <font color=Blue>-- * Position type</font>+<a name="(line5)"></a>    Posn()+<a name="(line6)"></a>  <font color=Blue>-- ** Constructors of a new position</font>+<a name="(line7)"></a>  <font color=Cyan>,</font> posInNewCxt    <font color=Blue>-- :: String -&gt; Maybe Posn -&gt; Posn</font>+<a name="(line8)"></a>  <font color=Cyan>,</font> noPos          <font color=Blue>-- :: Posn</font>+<a name="(line9)"></a>  <font color=Blue>-- ** Strictifier</font>+<a name="(line10)"></a>  <font color=Cyan>,</font> forcep+<a name="(line11)"></a>  <font color=Blue>-- ** Modifiers</font>+<a name="(line12)"></a>  <font color=Cyan>,</font> addcol<font color=Cyan>,</font> newline<font color=Cyan>,</font> tab<font color=Cyan>,</font> white+<a name="(line13)"></a>  <font color=Blue>-- ** Accessors</font>+<a name="(line14)"></a>  <font color=Cyan>,</font> posnFilename<font color=Cyan>,</font> posnLine<font color=Cyan>,</font> posnColumn+<a name="(line15)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line16)"></a>+<a name="(line17)"></a><font color=Green><u>import</u></font> Char+<a name="(line18)"></a>+<a name="(line19)"></a><a name="Posn"></a><font color=Blue>-- | Source positions contain a filename, line, column, and an</font>+<a name="(line20)"></a><a name="Posn"></a><font color=Blue>--   inclusion point, which is itself another source position,</font>+<a name="(line21)"></a><a name="Posn"></a><font color=Blue>--   recursively.</font>+<a name="(line22)"></a><a name="Posn"></a><font color=Green><u>data</u></font> Posn <font color=Red>=</font> Pn String <font color=Cyan>!</font>Int <font color=Cyan>!</font>Int <font color=Cyan>(</font>Maybe Posn<font color=Cyan>)</font>+<a name="(line23)"></a>        <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>)</font>+<a name="(line24)"></a>+<a name="(line25)"></a><a name="posnFilename"></a>posnFilename <font color=Red>::</font> Posn <font color=Red>-&gt;</font> FilePath+<a name="(line26)"></a>posnFilename <font color=Cyan>(</font>Pn f <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> f+<a name="(line27)"></a>+<a name="(line28)"></a><a name="posnLine"></a>posnLine<font color=Cyan>,</font> posnColumn <font color=Red>::</font> Posn <font color=Red>-&gt;</font> Int+<a name="(line29)"></a>posnLine   <font color=Cyan>(</font>Pn <font color=Green><u>_</u></font> x <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> x+<a name="(line30)"></a><a name="posnColumn"></a>posnColumn <font color=Cyan>(</font>Pn <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> x <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> x+<a name="(line31)"></a>+<a name="(line32)"></a><a name="noPos"></a><font color=Blue>-- | Dummy value for generated data, where a true source position does</font>+<a name="(line33)"></a><font color=Blue>--   not exist.</font>+<a name="(line34)"></a>noPos <font color=Red>::</font> Posn+<a name="(line35)"></a>noPos <font color=Red>=</font> Pn <font color=Magenta>"no recorded position"</font> <font color=Magenta>0</font> <font color=Magenta>0</font> Nothing+<a name="(line36)"></a>+<a name="(line37)"></a><a name="posInNewCxt"></a><font color=Blue>-- | @posInNewCxt name pos@ creates a new source position from an old one.</font>+<a name="(line38)"></a><font color=Blue>--   It is used when opening a new file (e.g. a DTD inclusion), to denote</font>+<a name="(line39)"></a><font color=Blue>--   the start of the file @name@, but retain the stacked information that</font>+<a name="(line40)"></a><font color=Blue>--   it was included from the old @pos@.</font>+<a name="(line41)"></a>posInNewCxt <font color=Red>::</font> String <font color=Red>-&gt;</font> Maybe Posn <font color=Red>-&gt;</font> Posn+<a name="(line42)"></a>posInNewCxt name pos <font color=Red>=</font> Pn name <font color=Magenta>1</font> <font color=Magenta>1</font> pos+<a name="(line43)"></a>+<a name="(line44)"></a><font color=Green><u>instance</u></font> Show Posn <font color=Green><u>where</u></font>+<a name="(line45)"></a>      showsPrec p <font color=Cyan>(</font>Pn f l c i<font color=Cyan>)</font> <font color=Red>=</font> showString f <font color=Cyan>.</font>+<a name="(line46)"></a>                                 showString <font color=Magenta>"  at line "</font> <font color=Cyan>.</font> shows l <font color=Cyan>.</font>+<a name="(line47)"></a>                                 showString <font color=Magenta>" col "</font> <font color=Cyan>.</font> shows c <font color=Cyan>.</font>+<a name="(line48)"></a>                                 <font color=Cyan>(</font> <font color=Green><u>case</u></font> i <font color=Green><u>of</u></font>+<a name="(line49)"></a>                                    Nothing <font color=Red>-&gt;</font> id+<a name="(line50)"></a>                                    Just p  <font color=Red>-&gt;</font> showString <font color=Magenta>"\n    used by  "</font> <font color=Cyan>.</font>+<a name="(line51)"></a>                                               shows p <font color=Cyan>)</font>+<a name="(line52)"></a>+<a name="(line53)"></a><a name="forcep"></a><font color=Blue>-- | Just used to strictify the internal values of a position, to avoid</font>+<a name="(line54)"></a><font color=Blue>--   space leaks.</font>+<a name="(line55)"></a>forcep <font color=Red>::</font> Posn <font color=Red>-&gt;</font> Int+<a name="(line56)"></a>forcep <font color=Cyan>(</font>Pn f n m i<font color=Cyan>)</font> <font color=Red>=</font> m <font color=Cyan>`seq`</font> n+<a name="(line57)"></a>+<a name="(line58)"></a><a name="addcol"></a><font color=Blue>-- | Add n character positions to the given position.</font>+<a name="(line59)"></a>addcol <font color=Red>::</font> Int <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> Posn+<a name="(line60)"></a>addcol n <font color=Cyan>(</font>Pn f r c i<font color=Cyan>)</font> <font color=Red>=</font> Pn f r <font color=Cyan>(</font>c<font color=Cyan>+</font>n<font color=Cyan>)</font> i+<a name="(line61)"></a>+<a name="(line62)"></a><a name="newline"></a><font color=Blue>-- | Add a newline or tab to the given position.</font>+<a name="(line63)"></a>newline<font color=Cyan>,</font> tab <font color=Red>::</font> Posn <font color=Red>-&gt;</font> Posn+<a name="(line64)"></a>newline <font color=Cyan>(</font>Pn f r c i<font color=Cyan>)</font> <font color=Red>=</font> Pn f <font color=Cyan>(</font>r<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> <font color=Magenta>1</font> i+<a name="(line65)"></a><a name="tab"></a>tab     <font color=Cyan>(</font>Pn f r c i<font color=Cyan>)</font> <font color=Red>=</font> Pn f r <font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>(</font>c<font color=Cyan>`div`</font><font color=Magenta>8</font><font color=Cyan>)</font><font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font><font color=Cyan>*</font><font color=Magenta>8</font><font color=Cyan>)</font> i+<a name="(line66)"></a>+<a name="(line67)"></a><a name="white"></a><font color=Blue>-- | Add the given whitespace char to the given position.</font>+<a name="(line68)"></a><font color=Blue>--   Precondition: @white c | isSpace c = True@</font>+<a name="(line69)"></a>white <font color=Red>::</font> Char <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> Posn+<a name="(line70)"></a>white <font color=Magenta>' '</font>  <font color=Red>=</font> addcol <font color=Magenta>1</font>+<a name="(line71)"></a>white <font color=Magenta>'\n'</font> <font color=Red>=</font> newline+<a name="(line72)"></a>white <font color=Magenta>'\r'</font> <font color=Red>=</font> id+<a name="(line73)"></a>white <font color=Magenta>'\t'</font> <font color=Red>=</font> tab+<a name="(line74)"></a>white <font color=Magenta>'\xa0'</font> <font color=Red>=</font> addcol <font color=Magenta>1</font>+<a name="(line75)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Pretty.html view
@@ -0,0 +1,263 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This is a pretty-printer for turning the internal representation</font>+<a name="(line2)"></a><font color=Blue>--   of generic structured XML documents into the Doc type (which can</font>+<a name="(line3)"></a><font color=Blue>--   later be rendered using Text.PrettyPrint.HughesPJ.render).</font>+<a name="(line4)"></a><font color=Blue>--   Essentially there is one pp function for each type in</font>+<a name="(line5)"></a><font color=Blue>--   Text.Xml.HaXml.Types, so you can pretty-print as much or as little</font>+<a name="(line6)"></a><font color=Blue>--   of the document as you wish.</font>+<a name="(line7)"></a>+<a name="(line8)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty+<a name="(line9)"></a>  <font color=Cyan>(</font>+<a name="(line10)"></a>  <font color=Blue>-- * Pretty-print a whole document</font>+<a name="(line11)"></a>    document+<a name="(line12)"></a>  <font color=Blue>-- ** Just one content</font>+<a name="(line13)"></a>  <font color=Cyan>,</font>   content+<a name="(line14)"></a>  <font color=Blue>-- ** Just one tagged element</font>+<a name="(line15)"></a>  <font color=Cyan>,</font>   element+<a name="(line16)"></a>  <font color=Blue>-- * Pretty-print just a DTD</font>+<a name="(line17)"></a>  <font color=Cyan>,</font> doctypedecl+<a name="(line18)"></a>  <font color=Blue>-- ** The prolog</font>+<a name="(line19)"></a>  <font color=Cyan>,</font>   prolog+<a name="(line20)"></a>  <font color=Blue>-- ** A content particle description</font>+<a name="(line21)"></a>  <font color=Cyan>,</font>   cp+<a name="(line22)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line23)"></a>+<a name="(line24)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>maybe<font color=Cyan>,</font>either<font color=Cyan>)</font>+<a name="(line25)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line26)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font>+<a name="(line27)"></a><font color=Blue>--import Char (isSpace)</font>+<a name="(line28)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ+<a name="(line29)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line30)"></a>+<a name="(line31)"></a><a name="either"></a>either f g <font color=Cyan>(</font>Left x<font color=Cyan>)</font>  <font color=Red>=</font> f x+<a name="(line32)"></a>either f g <font color=Cyan>(</font>Right x<font color=Cyan>)</font> <font color=Red>=</font> g x+<a name="(line33)"></a>+<a name="(line34)"></a><a name="maybe"></a>maybe f Nothing  <font color=Red>=</font> empty+<a name="(line35)"></a>maybe f <font color=Cyan>(</font>Just x<font color=Cyan>)</font> <font color=Red>=</font> f x+<a name="(line36)"></a>+<a name="(line37)"></a><font color=Blue>--peref p   = text "%" &lt;&gt; text p &lt;&gt; text ";"</font>+<a name="(line38)"></a>+<a name="(line39)"></a><font color=Blue>----</font>+<a name="(line40)"></a>+<a name="(line41)"></a><a name="document"></a>document <font color=Red>::</font> Document i <font color=Red>-&gt;</font> Doc+<a name="(line42)"></a><a name="prolog"></a>prolog   <font color=Red>::</font> Prolog <font color=Red>-&gt;</font> Doc+<a name="(line43)"></a><a name="xmldecl"></a>xmldecl  <font color=Red>::</font> XMLDecl <font color=Red>-&gt;</font> Doc+<a name="(line44)"></a><a name="misc"></a>misc     <font color=Red>::</font> Misc <font color=Red>-&gt;</font> Doc+<a name="(line45)"></a><a name="sddecl"></a>sddecl   <font color=Red>::</font> Bool <font color=Red>-&gt;</font> Doc+<a name="(line46)"></a>+<a name="(line47)"></a><a name="doctypedecl"></a>doctypedecl <font color=Red>::</font> DocTypeDecl <font color=Red>-&gt;</font> Doc+<a name="(line48)"></a><a name="markupdecl"></a>markupdecl  <font color=Red>::</font> MarkupDecl <font color=Red>-&gt;</font> Doc+<a name="(line49)"></a><a name="extsubset"></a>extsubset   <font color=Red>::</font> ExtSubset <font color=Red>-&gt;</font> Doc+<a name="(line50)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> ExtSubsetDecl <font color=Red>-&gt;</font> Doc+<a name="(line51)"></a><a name="cp"></a>cp          <font color=Red>::</font> CP <font color=Red>-&gt;</font> Doc+<a name="(line52)"></a>+<a name="(line53)"></a><a name="element"></a>element   <font color=Red>::</font> Element i <font color=Red>-&gt;</font> Doc+<a name="(line54)"></a><a name="attribute"></a>attribute <font color=Red>::</font> Attribute <font color=Red>-&gt;</font> Doc                     <font color=Cyan>--etc</font>+<a name="(line55)"></a><a name="content"></a>content   <font color=Red>::</font> Content i <font color=Red>-&gt;</font> Doc+<a name="(line56)"></a>+<a name="(line57)"></a><font color=Blue>----</font>+<a name="(line58)"></a>+<a name="(line59)"></a>document <font color=Cyan>(</font>Document p <font color=Green><u>_</u></font> e m<font color=Cyan>)</font><font color=Red>=</font> prolog p <font color=Cyan>$$</font> element e <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>map misc m<font color=Cyan>)</font>+<a name="(line60)"></a>prolog <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font><font color=Red>=</font> maybe xmldecl x <font color=Cyan>$$</font>+<a name="(line61)"></a>                             vcat <font color=Cyan>(</font>map misc m1<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line62)"></a>                             maybe doctypedecl dtd <font color=Cyan>$$</font>+<a name="(line63)"></a>                             vcat <font color=Cyan>(</font>map misc m2<font color=Cyan>)</font>+<a name="(line64)"></a>xmldecl <font color=Cyan>(</font>XMLDecl v e sd<font color=Cyan>)</font>   <font color=Red>=</font> text <font color=Magenta>"&lt;?xml version='"</font> <font color=Cyan>&lt;&gt;</font> text v <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line65)"></a>                             maybe encodingdecl e <font color=Cyan>&lt;+&gt;</font>+<a name="(line66)"></a>                             maybe sddecl sd <font color=Cyan>&lt;+&gt;</font>+<a name="(line67)"></a>                             text <font color=Magenta>"?&gt;"</font>+<a name="(line68)"></a>misc <font color=Cyan>(</font>Comment s<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!--"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"--&gt;"</font>+<a name="(line69)"></a>misc <font color=Cyan>(</font>PI <font color=Cyan>(</font>n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"&lt;?"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line70)"></a>sddecl sd   <font color=Red>|</font> sd           <font color=Red>=</font> text <font color=Magenta>"standalone='yes'"</font>+<a name="(line71)"></a>            <font color=Red>|</font> otherwise    <font color=Red>=</font> text <font color=Magenta>"standalone='no'"</font>+<a name="(line72)"></a>doctypedecl <font color=Cyan>(</font>DTD n eid ds<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>if</u></font> null ds <font color=Green><u>then</u></font> +<a name="(line73)"></a>                                  hd <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line74)"></a>                             <font color=Green><u>else</u></font> hd <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>" ["</font> <font color=Cyan>$$</font>+<a name="(line75)"></a>                                  vcat <font color=Cyan>(</font>map markupdecl ds<font color=Cyan>)</font> <font color=Cyan>$$</font> text <font color=Magenta>"]&gt;"</font>+<a name="(line76)"></a>                           <font color=Green><u>where</u></font> hd <font color=Red>=</font> text <font color=Magenta>"&lt;!DOCTYPE"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line77)"></a>                                      maybe externalid eid+<a name="(line78)"></a>markupdecl <font color=Cyan>(</font>Element e<font color=Cyan>)</font>     <font color=Red>=</font> elementdecl e+<a name="(line79)"></a>markupdecl <font color=Cyan>(</font>AttList a<font color=Cyan>)</font>     <font color=Red>=</font> attlistdecl a+<a name="(line80)"></a>markupdecl <font color=Cyan>(</font>Entity e<font color=Cyan>)</font>      <font color=Red>=</font> entitydecl e+<a name="(line81)"></a>markupdecl <font color=Cyan>(</font>Notation n<font color=Cyan>)</font>    <font color=Red>=</font> notationdecl n+<a name="(line82)"></a>markupdecl <font color=Cyan>(</font>MarkupMisc m<font color=Cyan>)</font>  <font color=Red>=</font> misc m+<a name="(line83)"></a><font color=Blue>--markupdecl (MarkupPE p m)  = peref p</font>+<a name="(line84)"></a>extsubset <font color=Cyan>(</font>ExtSubset t ds<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan>$$</font>+<a name="(line85)"></a>                             vcat <font color=Cyan>(</font>map extsubsetdecl ds<font color=Cyan>)</font>+<a name="(line86)"></a>extsubsetdecl <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font>      <font color=Red>=</font> markupdecl m+<a name="(line87)"></a>extsubsetdecl <font color=Cyan>(</font>ExtConditionalSect c<font color=Cyan>)</font> <font color=Red>=</font> conditionalsect c+<a name="(line88)"></a><font color=Blue>--extsubsetdecl (ExtPEReference p e)   = peref p</font>+<a name="(line89)"></a>+<a name="(line90)"></a>element <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line91)"></a>                         fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"/&gt;"</font>+<a name="(line92)"></a>element e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font>+<a name="(line93)"></a><font color=Blue>--  | any isText cs    = text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as) &lt;&gt;</font>+<a name="(line94)"></a><font color=Blue>--                       text "&gt;" &lt;&gt; hcat (map content cs) &lt;&gt;</font>+<a name="(line95)"></a><font color=Blue>--                       text "&lt;/" &lt;&gt; text n &lt;&gt; text "&gt;"</font>+<a name="(line96)"></a>    <font color=Red>|</font> isText <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line97)"></a>                         text <font color=Magenta>"&gt;"</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map content cs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line98)"></a>                         text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line99)"></a>    <font color=Red>|</font> otherwise        <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> carryelem e empty+<a name="(line100)"></a>                         <font color=Green><u>in</u></font> d <font color=Cyan>&lt;&gt;</font> c+<a name="(line101)"></a>+<a name="(line102)"></a><a name="isText"></a>isText <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line103)"></a>isText <font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> True+<a name="(line104)"></a>isText <font color=Green><u>_</u></font>               <font color=Red>=</font> False+<a name="(line105)"></a>+<a name="(line106)"></a><a name="carryelem"></a>carryelem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> c+<a name="(line107)"></a>                       <font color=Red>=</font> <font color=Cyan>(</font> c <font color=Cyan>&lt;&gt;</font>+<a name="(line108)"></a>                           text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line109)"></a>                         <font color=Cyan>,</font> text <font color=Magenta>"/&gt;"</font><font color=Cyan>)</font>+<a name="(line110)"></a>carryelem e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> c+<a name="(line111)"></a><font color=Blue>--  | any isText cs    =  ( c &lt;&gt; element e, empty)</font>+<a name="(line112)"></a>    <font color=Red>|</font> otherwise        <font color=Red>=</font>  <font color=Green><u>let</u></font> <font color=Cyan>(</font>cs0<font color=Cyan>,</font>d0<font color=Cyan>)</font> <font color=Red>=</font> carryscan carrycontent cs <font color=Cyan>(</font>text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line113)"></a>                          <font color=Green><u>in</u></font>+<a name="(line114)"></a>                          <font color=Cyan>(</font> c <font color=Cyan>&lt;&gt;</font>+<a name="(line115)"></a>                            text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line116)"></a>                            nest <font color=Magenta>2</font> <font color=Cyan>(</font>vcat cs0<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> <font color=Blue>--- $$</font>+<a name="(line117)"></a>                            d0 <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n+<a name="(line118)"></a>                          <font color=Cyan>,</font> text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line119)"></a><a name="carrycontent"></a>carrycontent <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font> c   <font color=Red>=</font> carryelem e c+<a name="(line120)"></a>carrycontent <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> chardata s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line121)"></a>carrycontent <font color=Cyan>(</font>CString True  s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> cdsect s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line122)"></a>carrycontent <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font> c    <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> reference r<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line123)"></a>carrycontent <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font> c   <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> misc m<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line124)"></a>+<a name="(line125)"></a><a name="carryscan"></a>carryscan <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>c<font color=Red>-&gt;</font><font color=Cyan>(</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> c <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line126)"></a>carryscan f []     c <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line127)"></a>carryscan f <font color=Cyan>(</font>a<font color=Red><b>:</b></font><font color=Green><u>as</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>b<font color=Cyan>,</font> c0<font color=Cyan>)</font> <font color=Red>=</font> f a c+<a name="(line128)"></a>                           <font color=Cyan>(</font>bs<font color=Cyan>,</font>c1<font color=Cyan>)</font> <font color=Red>=</font> carryscan f <font color=Green><u>as</u></font> c0+<a name="(line129)"></a>                       <font color=Green><u>in</u></font> <font color=Cyan>(</font>b<font color=Red><b>:</b></font>bs<font color=Cyan>,</font> c1<font color=Cyan>)</font>+<a name="(line130)"></a>+<a name="(line131)"></a><font color=Blue>--carryelem e@(Elem n as cs) c</font>+<a name="(line132)"></a><font color=Blue>--  | isText (head cs) =</font>+<a name="(line133)"></a><font color=Blue>--        ( start &lt;&gt;</font>+<a name="(line134)"></a><font color=Blue>--          text "&gt;" &lt;&gt; hcat (map content cs) &lt;&gt; text "&lt;/" &lt;&gt; text n</font>+<a name="(line135)"></a><font color=Blue>--        , text "&gt;")</font>+<a name="(line136)"></a><font color=Blue>--  | otherwise =</font>+<a name="(line137)"></a><font color=Blue>--        let (d,c0) = foldl carrycontent (start, text "&gt;") cs in</font>+<a name="(line138)"></a><font color=Blue>--        ( d &lt;&gt; c0 &lt;&gt; text "&lt;/" &lt;&gt; text n</font>+<a name="(line139)"></a><font color=Blue>--        , text "&gt;")</font>+<a name="(line140)"></a><font color=Blue>--  where start = c &lt;&gt; text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as)</font>+<a name="(line141)"></a><font color=Blue>--</font>+<a name="(line142)"></a><font color=Blue>--carrycontent (d,c) (CElem e)   = let (d',c') = carryelem e c in</font>+<a name="(line143)"></a><font color=Blue>--                                 (d $$ nest 2 d',       c')</font>+<a name="(line144)"></a><font color=Blue>--carrycontent (d,c) (CString _ s) = (d &lt;&gt; c &lt;&gt; chardata s, empty)</font>+<a name="(line145)"></a><font color=Blue>--carrycontent (d,c) (CRef r)    = (d &lt;&gt; c &lt;&gt; reference r,empty)</font>+<a name="(line146)"></a><font color=Blue>--carrycontent (d,c) (CMisc m)   = (d $$ c &lt;&gt; misc m,     empty)</font>+<a name="(line147)"></a>+<a name="(line148)"></a>+<a name="(line149)"></a>attribute <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font>             <font color=Red>=</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;&gt;</font> attvalue v+<a name="(line150)"></a>content <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font>         <font color=Red>=</font> element e+<a name="(line151)"></a>content <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> chardata s+<a name="(line152)"></a>content <font color=Cyan>(</font>CString True s <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> cdsect s+<a name="(line153)"></a>content <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font>          <font color=Red>=</font> reference r+<a name="(line154)"></a>content <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font>         <font color=Red>=</font> misc m+<a name="(line155)"></a>+<a name="(line156)"></a><a name="elementdecl"></a>elementdecl <font color=Cyan>(</font>ElementDecl n cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ELEMENT"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line157)"></a>                                 contentspec cs <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line158)"></a><a name="contentspec"></a>contentspec EMPTY              <font color=Red>=</font> text <font color=Magenta>"EMPTY"</font>+<a name="(line159)"></a>contentspec ANY                <font color=Red>=</font> text <font color=Magenta>"ANY"</font>+<a name="(line160)"></a>contentspec <font color=Cyan>(</font>Mixed m<font color=Cyan>)</font>          <font color=Red>=</font> mixed m+<a name="(line161)"></a>contentspec <font color=Cyan>(</font>ContentSpec c<font color=Cyan>)</font>    <font color=Red>=</font> cp c+<a name="(line162)"></a><font color=Blue>--contentspec (ContentPE p cs)   = peref p</font>+<a name="(line163)"></a>cp <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font>       <font color=Red>=</font> parens <font color=Cyan>(</font>text n<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> modifier m+<a name="(line164)"></a>cp <font color=Cyan>(</font>Choice cs m<font color=Cyan>)</font>       <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line165)"></a>                           modifier m+<a name="(line166)"></a>cp <font color=Cyan>(</font>Seq cs m<font color=Cyan>)</font>          <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>","</font><font color=Cyan>)</font> <font color=Cyan>(</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line167)"></a>                           modifier m+<a name="(line168)"></a><a name="modifier"></a><font color=Blue>--cp (CPPE p c)          = peref p</font>+<a name="(line169)"></a>modifier None          <font color=Red>=</font> empty+<a name="(line170)"></a>modifier Query         <font color=Red>=</font> text <font color=Magenta>"?"</font>+<a name="(line171)"></a>modifier Star          <font color=Red>=</font> text <font color=Magenta>"*"</font>+<a name="(line172)"></a>modifier Plus          <font color=Red>=</font> text <font color=Magenta>"+"</font>+<a name="(line173)"></a><a name="mixed"></a>mixed  PCDATA          <font color=Red>=</font> text <font color=Magenta>"(#PCDATA)"</font>+<a name="(line174)"></a>mixed <font color=Cyan>(</font>PCDATAplus ns<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"(#PCDATA |"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line175)"></a>                         hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line176)"></a>                         text <font color=Magenta>")*"</font>+<a name="(line177)"></a>+<a name="(line178)"></a><a name="attlistdecl"></a>attlistdecl <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ATTLIST"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line179)"></a>                                 fsep <font color=Cyan>(</font>map attdef ds<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line180)"></a><a name="attdef"></a>attdef <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font>          <font color=Red>=</font> text n <font color=Cyan>&lt;+&gt;</font> atttype t <font color=Cyan>&lt;+&gt;</font> defaultdecl d+<a name="(line181)"></a><a name="atttype"></a>atttype  StringType            <font color=Red>=</font> text <font color=Magenta>"CDATA"</font>+<a name="(line182)"></a>atttype <font color=Cyan>(</font>TokenizedType t<font color=Cyan>)</font>      <font color=Red>=</font> tokenizedtype t+<a name="(line183)"></a>atttype <font color=Cyan>(</font>EnumeratedType t<font color=Cyan>)</font>     <font color=Red>=</font> enumeratedtype t+<a name="(line184)"></a><a name="tokenizedtype"></a>tokenizedtype ID               <font color=Red>=</font> text <font color=Magenta>"ID"</font>+<a name="(line185)"></a>tokenizedtype IDREF            <font color=Red>=</font> text <font color=Magenta>"IDREF"</font>+<a name="(line186)"></a>tokenizedtype IDREFS           <font color=Red>=</font> text <font color=Magenta>"IDREFS"</font>+<a name="(line187)"></a>tokenizedtype ENTITY           <font color=Red>=</font> text <font color=Magenta>"ENTITY"</font>+<a name="(line188)"></a>tokenizedtype ENTITIES         <font color=Red>=</font> text <font color=Magenta>"ENTITIES"</font>+<a name="(line189)"></a>tokenizedtype NMTOKEN          <font color=Red>=</font> text <font color=Magenta>"NMTOKEN"</font>+<a name="(line190)"></a>tokenizedtype NMTOKENS         <font color=Red>=</font> text <font color=Magenta>"NMTOKENS"</font>+<a name="(line191)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Cyan>(</font>NotationType n<font color=Cyan>)</font><font color=Red>=</font> notationtype n+<a name="(line192)"></a>enumeratedtype <font color=Cyan>(</font>Enumeration e<font color=Cyan>)</font> <font color=Red>=</font> enumeration e+<a name="(line193)"></a><a name="notationtype"></a>notationtype ns                <font color=Red>=</font> text <font color=Magenta>"NOTATION"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line194)"></a>                                 parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line195)"></a><a name="enumeration"></a>enumeration ns                 <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map nmtoken ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line196)"></a><a name="defaultdecl"></a>defaultdecl  REQUIRED          <font color=Red>=</font> text <font color=Magenta>"#REQUIRED"</font>+<a name="(line197)"></a>defaultdecl  IMPLIED           <font color=Red>=</font> text <font color=Magenta>"#IMPLIED"</font>+<a name="(line198)"></a>defaultdecl <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font>    <font color=Red>=</font> maybe <font color=Cyan>(</font>const <font color=Cyan>(</font>text <font color=Magenta>"#FIXED"</font><font color=Cyan>)</font><font color=Cyan>)</font> f <font color=Cyan>&lt;+&gt;</font> attvalue a+<a name="(line199)"></a><a name="conditionalsect"></a>conditionalsect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Red>=</font> text <font color=Magenta>"&lt;![INCLUDE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line200)"></a>                                 vcat <font color=Cyan>(</font>map extsubsetdecl i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line201)"></a>conditionalsect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![IGNORE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line202)"></a>                                 fsep <font color=Cyan>(</font>map ignoresectcontents i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line203)"></a><a name="ignore"></a>ignore <font color=Cyan>(</font>Ignore<font color=Cyan>)</font>                <font color=Red>=</font> empty+<a name="(line204)"></a><a name="ignoresectcontents"></a>ignoresectcontents <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>+<a name="(line205)"></a>                               <font color=Red>=</font> ignore i <font color=Cyan>&lt;+&gt;</font> vcat <font color=Cyan>(</font>map internal is<font color=Cyan>)</font>+<a name="(line206)"></a>                          <font color=Green><u>where</u></font> internal <font color=Cyan>(</font>ics<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line207)"></a>                                                   ignoresectcontents ics <font color=Cyan>&lt;+&gt;</font>+<a name="(line208)"></a>                                                   text <font color=Magenta>"]]&gt;"</font> <font color=Cyan>&lt;+&gt;</font> ignore i+<a name="(line209)"></a><a name="reference"></a>reference <font color=Cyan>(</font>RefEntity er<font color=Cyan>)</font>       <font color=Red>=</font> entityref er+<a name="(line210)"></a>reference <font color=Cyan>(</font>RefChar cr<font color=Cyan>)</font>         <font color=Red>=</font> charref cr+<a name="(line211)"></a><a name="entityref"></a>entityref n                    <font color=Red>=</font> text <font color=Magenta>"&amp;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line212)"></a><a name="charref"></a>charref c                      <font color=Red>=</font> text <font color=Magenta>"&amp;#"</font> <font color=Cyan>&lt;&gt;</font> text <font color=Cyan>(</font>show c<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line213)"></a><a name="entitydecl"></a>entitydecl <font color=Cyan>(</font>EntityGEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> gedecl d+<a name="(line214)"></a>entitydecl <font color=Cyan>(</font>EntityPEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> pedecl d+<a name="(line215)"></a><a name="gedecl"></a>gedecl <font color=Cyan>(</font>GEDecl n ed<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> entitydef ed <font color=Cyan>&lt;&gt;</font>+<a name="(line216)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line217)"></a><a name="pedecl"></a>pedecl <font color=Cyan>(</font>PEDecl n pd<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY %"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> pedef pd <font color=Cyan>&lt;&gt;</font>+<a name="(line218)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line219)"></a><a name="entitydef"></a>entitydef <font color=Cyan>(</font>DefEntityValue ev<font color=Cyan>)</font>  <font color=Red>=</font> entityvalue ev+<a name="(line220)"></a>entitydef <font color=Cyan>(</font>DefExternalID i nd<font color=Cyan>)</font> <font color=Red>=</font> externalid i <font color=Cyan>&lt;+&gt;</font> maybe ndatadecl nd+<a name="(line221)"></a><a name="pedef"></a>pedef <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font>    <font color=Red>=</font> entityvalue ev+<a name="(line222)"></a>pedef <font color=Cyan>(</font>PEDefExternalID eid<font color=Cyan>)</font>    <font color=Red>=</font> externalid eid+<a name="(line223)"></a><a name="externalid"></a>externalid <font color=Cyan>(</font>SYSTEM sl<font color=Cyan>)</font>         <font color=Red>=</font> text <font color=Magenta>"SYSTEM"</font> <font color=Cyan>&lt;+&gt;</font> systemliteral sl+<a name="(line224)"></a>externalid <font color=Cyan>(</font>PUBLIC i sl<font color=Cyan>)</font>       <font color=Red>=</font> text <font color=Magenta>"PUBLIC"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral i <font color=Cyan>&lt;+&gt;</font>+<a name="(line225)"></a>                                 systemliteral sl+<a name="(line226)"></a><a name="ndatadecl"></a>ndatadecl <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"NDATA"</font> <font color=Cyan>&lt;+&gt;</font> text n+<a name="(line227)"></a><a name="textdecl"></a>textdecl <font color=Cyan>(</font>TextDecl vi ed<font color=Cyan>)</font>      <font color=Red>=</font> text <font color=Magenta>"&lt;?xml"</font> <font color=Cyan>&lt;+&gt;</font> maybe text vi <font color=Cyan>&lt;+&gt;</font>+<a name="(line228)"></a>                                 encodingdecl ed <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line229)"></a><a name="extparsedent"></a>extparsedent <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font><font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font> content c+<a name="(line230)"></a><a name="extpe"></a>extpe <font color=Cyan>(</font>ExtPE t esd<font color=Cyan>)</font>            <font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font>+<a name="(line231)"></a>                                 vcat <font color=Cyan>(</font>map extsubsetdecl esd<font color=Cyan>)</font>+<a name="(line232)"></a><a name="notationdecl"></a>notationdecl <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>    <font color=Red>=</font> text <font color=Magenta>"&lt;!NOTATION"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line233)"></a>                                 either externalid publicid e <font color=Cyan>&lt;&gt;</font>+<a name="(line234)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line235)"></a><a name="publicid"></a>publicid <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>          <font color=Red>=</font> text <font color=Magenta>"PUBLIC"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral p+<a name="(line236)"></a><a name="encodingdecl"></a>encodingdecl <font color=Cyan>(</font>EncodingDecl s<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"encoding='"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line237)"></a><a name="nmtoken"></a>nmtoken s                      <font color=Red>=</font> text s+<a name="(line238)"></a><a name="attvalue"></a>attvalue <font color=Cyan>(</font>AttValue esr<font color=Cyan>)</font>        <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line239)"></a>                                 hcat <font color=Cyan>(</font>map <font color=Cyan>(</font>either text reference<font color=Cyan>)</font> esr<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line240)"></a>                                 text <font color=Magenta>"\""</font>+<a name="(line241)"></a><a name="entityvalue"></a>entityvalue <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>+<a name="(line242)"></a>  <font color=Red>|</font> containsDoubleQuote evs    <font color=Red>=</font> text <font color=Magenta>"'"</font>  <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map ev evs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line243)"></a>  <font color=Red>|</font> otherwise                  <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map ev evs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line244)"></a><a name="ev"></a>ev <font color=Cyan>(</font>EVString s<font color=Cyan>)</font>                <font color=Red>=</font> text s+<a name="(line245)"></a><font color=Blue>--ev (EVPERef p e)               = peref p</font>+<a name="(line246)"></a>ev <font color=Cyan>(</font>EVRef r<font color=Cyan>)</font>                   <font color=Red>=</font> reference r+<a name="(line247)"></a><a name="pubidliteral"></a>pubidliteral <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>+<a name="(line248)"></a>    <font color=Red>|</font> <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> s             <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line249)"></a>    <font color=Red>|</font> otherwise                <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line250)"></a><a name="systemliteral"></a>systemliteral <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>+<a name="(line251)"></a>    <font color=Red>|</font> <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> s             <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line252)"></a>    <font color=Red>|</font> otherwise                <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line253)"></a><a name="chardata"></a>chardata s                     <font color=Red>=</font> <font color=Blue>{-if all isSpace s then empty else-}</font> text s+<a name="(line254)"></a><a name="cdsect"></a>cdsect c                       <font color=Red>=</font> text <font color=Magenta>"&lt;![CDATA["</font> <font color=Cyan>&lt;&gt;</font> chardata c <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line255)"></a>+<a name="(line256)"></a><a name="containsDoubleQuote"></a><font color=Blue>----</font>+<a name="(line257)"></a>containsDoubleQuote evs <font color=Red>=</font> any csq evs+<a name="(line258)"></a>    <font color=Green><u>where</u></font> csq <font color=Cyan>(</font>EVString s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> s+<a name="(line259)"></a>          csq <font color=Green><u>_</u></font>            <font color=Red>=</font> False+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/SAX.html view
@@ -0,0 +1,97 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | A streaming XML parser, using a method known as SAX. SAX isn't really a</font>+<a name="(line2)"></a><font color=Blue>--   standard, but an implementation, so it's just an \"SAX-like\" parser.</font>+<a name="(line3)"></a><font color=Blue>--   This module allows you parse an XML document without having to evaluate</font>+<a name="(line4)"></a><font color=Blue>--   it as a whole. This is needed for protocols like jabber, which use xml</font>+<a name="(line5)"></a><font color=Blue>--   streams for communication.</font>+<a name="(line6)"></a>+<a name="(line7)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>SAX+<a name="(line8)"></a>	<font color=Cyan>(</font> SaxElement<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line9)"></a>	<font color=Cyan>,</font> saxParse+<a name="(line10)"></a>	<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line11)"></a>+<a name="(line12)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line13)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse+<a name="(line14)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Lex+<a name="(line15)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>PolyState+<a name="(line16)"></a>+<a name="(line17)"></a><a name="SaxElement"></a><font color=Green><u>data</u></font> SaxElement+<a name="(line18)"></a>	<font color=Red>=</font> SaxDocTypeDecl DocTypeDecl+<a name="(line19)"></a>		<font color=Blue>-- ^ A doctype declaration occured(\&lt;!DOCTYPE\&gt;)</font>+<a name="(line20)"></a>	<font color=Red>|</font> SaxProcessingInstruction ProcessingInstruction+<a name="(line21)"></a>		<font color=Blue>-- ^ A processing instruction occured (\&lt;??\&gt;)</font>+<a name="(line22)"></a>	<font color=Red>|</font> SaxComment String		<font color=Blue>-- ^ A comment occured (\&lt;!-- --\&gt;)</font>+<a name="(line23)"></a>	<font color=Red>|</font> SaxElementOpen Name <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Blue>-- ^ An element was opened (\&lt;\&gt;)</font>+<a name="(line24)"></a>	<font color=Red>|</font> SaxElementClose Name		<font color=Blue>-- ^ An element was closed (\&lt;\/\&gt;)</font>+<a name="(line25)"></a>	<font color=Red>|</font> SaxElementTag Name <font color=Red>[</font>Attribute<font color=Red>]</font>+<a name="(line26)"></a>		<font color=Blue>-- ^ An element without content occured (\&lt;\/\&gt;)</font>+<a name="(line27)"></a>	<font color=Red>|</font> SaxCharData CharData		<font color=Blue>-- ^ Some string data occured</font>+<a name="(line28)"></a>	<font color=Red>|</font> SaxReference Reference	<font color=Blue>-- ^ A reference occured</font>+<a name="(line29)"></a>+<a name="(line30)"></a><a name="saxParse"></a><font color=Blue>-- | @saxParse file content@ takes a filename and the string content of that</font>+<a name="(line31)"></a><font color=Blue>--   file and generates a stream of @SaxElement@s. If an error occurs, the</font>+<a name="(line32)"></a><font color=Blue>--   parsing stops and a string is returned using the @Maybe@ type.</font>+<a name="(line33)"></a>saxParse <font color=Red>::</font> String <font color=Blue>-- ^ The filename</font>+<a name="(line34)"></a>	 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ The content of the file</font>+<a name="(line35)"></a>	 <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Red>[</font>SaxElement<font color=Red>]</font><font color=Cyan>,</font>Maybe String<font color=Cyan>)</font>+<a name="(line36)"></a>		<font color=Blue>-- ^ A tuple of the parsed elements and @Nothing@, if no</font>+<a name="(line37)"></a>		<font color=Blue>--   error occured, or @Just@ @String@ if an error occured.</font>+<a name="(line38)"></a>saxParse file content <font color=Red>=</font> parseStream sax emptySTs+<a name="(line39)"></a>                                    <font color=Cyan>(</font>xmlLex file content<font color=Cyan>)</font>+<a name="(line40)"></a>+<a name="(line41)"></a><a name="parseStream"></a>parseStream <font color=Red>::</font> Parser s t a <font color=Red>-&gt;</font> s <font color=Red>-&gt;</font> <font color=Red>[</font>t<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Red>[</font>a<font color=Red>]</font><font color=Cyan>,</font> Maybe String<font color=Cyan>)</font>+<a name="(line42)"></a>parseStream <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>Nothing<font color=Cyan>)</font>+<a name="(line43)"></a>parseStream p state toks <font color=Red>=</font> <font color=Green><u>case</u></font> runParser p state toks <font color=Green><u>of</u></font>+<a name="(line44)"></a>	<font color=Cyan>(</font>Left err<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>Just err<font color=Cyan>)</font>+<a name="(line45)"></a>	<font color=Cyan>(</font>Right res<font color=Cyan>,</font> nstate<font color=Cyan>,</font> rest<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>res<font color=Red><b>:</b></font>moreres<font color=Cyan>,</font> err<font color=Cyan>)</font>+<a name="(line46)"></a>            <font color=Green><u>where</u></font> <font color=Cyan>(</font>moreres<font color=Cyan>,</font>err<font color=Cyan>)</font> <font color=Red>=</font> parseStream p nstate rest+<a name="(line47)"></a>+<a name="(line48)"></a><a name="sax"></a>sax <font color=Red>::</font> XParser SaxElement+<a name="(line49)"></a>sax <font color=Red>=</font> oneOf <font color=Red>[</font> saxelementopen+<a name="(line50)"></a>            <font color=Cyan>,</font> saxelementclose+<a name="(line51)"></a>            <font color=Cyan>,</font> saxprocessinginstruction+<a name="(line52)"></a>            <font color=Cyan>,</font> saxcomment+<a name="(line53)"></a>            <font color=Cyan>,</font> saxdoctypedecl+<a name="(line54)"></a>            <font color=Cyan>,</font> saxreference+<a name="(line55)"></a>            <font color=Cyan>,</font> saxchardata+<a name="(line56)"></a>            <font color=Red>]</font>+<a name="(line57)"></a>	<font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Cyan>(</font><font color=Magenta>"\nLooking for a SAX event:\n"</font>+<a name="(line58)"></a>               <font color=Cyan>++</font><font color=Magenta>"  elem-open, elem-close, PI, comment, DTD, ref, or chardata"</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line59)"></a>+<a name="(line60)"></a><a name="saxelementopen"></a>saxelementopen <font color=Red>::</font> XParser SaxElement+<a name="(line61)"></a>saxelementopen <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line62)"></a>	tok TokAnyOpen+<a name="(line63)"></a>	<font color=Cyan>(</font>ElemTag n <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> elemtag+<a name="(line64)"></a>	<font color=Cyan>(</font><font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokEndClose+<a name="(line65)"></a>	      return <font color=Cyan>(</font>SaxElementTag n <font color=Green><u>as</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line66)"></a>	 <font color=Cyan>(</font> <font color=Green><u>do</u></font> tok TokAnyClose+<a name="(line67)"></a>	      return <font color=Cyan>(</font>SaxElementOpen n <font color=Green><u>as</u></font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line68)"></a>	 <font color=Cyan>`onFail`</font> fail <font color=Magenta>"missing &gt; or /&gt; in element tag"</font><font color=Cyan>)</font>+<a name="(line69)"></a>+<a name="(line70)"></a><a name="saxelementclose"></a>saxelementclose <font color=Red>::</font> XParser SaxElement+<a name="(line71)"></a>saxelementclose <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line72)"></a>	tok TokEndOpen+<a name="(line73)"></a>	n <font color=Red>&lt;-</font> name+<a name="(line74)"></a>	tok TokAnyClose+<a name="(line75)"></a>	return <font color=Cyan>(</font>SaxElementClose n<font color=Cyan>)</font>+<a name="(line76)"></a>+<a name="(line77)"></a><a name="saxcomment"></a>saxcomment <font color=Red>::</font> XParser SaxElement+<a name="(line78)"></a>saxcomment <font color=Red>=</font> comment <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> SaxComment+<a name="(line79)"></a>+<a name="(line80)"></a><a name="saxchardata"></a>saxchardata <font color=Red>::</font> XParser SaxElement+<a name="(line81)"></a>saxchardata <font color=Red>=</font> +<a name="(line82)"></a>  <font color=Cyan>(</font>cdsect <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> SaxCharData<font color=Cyan>)</font>+<a name="(line83)"></a>  <font color=Cyan>`onFail`</font>+<a name="(line84)"></a>  <font color=Cyan>(</font>chardata <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> SaxCharData<font color=Cyan>)</font>+<a name="(line85)"></a>+<a name="(line86)"></a><a name="saxreference"></a>saxreference <font color=Red>::</font> XParser SaxElement+<a name="(line87)"></a>saxreference <font color=Red>=</font> reference <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> SaxReference	+<a name="(line88)"></a>+<a name="(line89)"></a><a name="saxdoctypedecl"></a>saxdoctypedecl <font color=Red>::</font> XParser SaxElement+<a name="(line90)"></a>saxdoctypedecl <font color=Red>=</font> doctypedecl <font color=Cyan>&gt;&gt;=</font> return <font color=Cyan>.</font> SaxDocTypeDecl+<a name="(line91)"></a>+<a name="(line92)"></a><a name="saxprocessinginstruction"></a>saxprocessinginstruction <font color=Red>::</font> XParser SaxElement+<a name="(line93)"></a>saxprocessinginstruction <font color=Red>=</font> fmap SaxProcessingInstruction processinginstruction+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/ShowXmlLazy.html view
@@ -0,0 +1,283 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a>+<a name="(line2)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ShowXmlLazy <font color=Cyan>(</font>showXmlLazy<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line3)"></a>+<a name="(line4)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line5)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="(line6)"></a>+<a name="(line7)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent <font color=Green><u>as</u></font> X+<a name="(line8)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>maybe<font color=Cyan>,</font>either<font color=Cyan>)</font>+<a name="(line9)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font>+<a name="(line10)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>List+<a name="(line11)"></a>+<a name="(line12)"></a><a name="showXmlLazy"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).                                         </font>+<a name="(line13)"></a>showXmlLazy <font color=Red>::</font> X<font color=Cyan>.</font>XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String+<a name="(line14)"></a>showXmlLazy dtd x <font color=Red>=</font>+<a name="(line15)"></a>    <font color=Green><u>case</u></font> X<font color=Cyan>.</font>toContents x <font color=Green><u>of</u></font>+<a name="(line16)"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> document <font color=Cyan>$</font> toXmlLazy dtd x+<a name="(line17)"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>+<a name="(line18)"></a>+<a name="(line19)"></a>+<a name="(line20)"></a><a name="toXmlLazy"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).                                 </font>+<a name="(line21)"></a>toXmlLazy <font color=Red>::</font> X<font color=Cyan>.</font>XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()+<a name="(line22)"></a>toXmlLazy dtd value <font color=Red>=</font>+<a name="(line23)"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>+<a name="(line24)"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line25)"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>+<a name="(line26)"></a>             emptyST+<a name="(line27)"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> <font color=Cyan>(</font>ht<font color=Cyan>,</font> X<font color=Cyan>.</font>toContents value<font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="(line28)"></a>                 <font color=Cyan>(</font>Tuple <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font>       <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> [] cs+<a name="(line29)"></a>                 <font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>"-XML"</font><font color=Cyan>)</font> [] cs+<a name="(line30)"></a>                 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Red>[</font>CElem e ()<font color=Red>]</font><font color=Cyan>)</font>   <font color=Red>-&gt;</font> e <font color=Cyan>)</font>+<a name="(line31)"></a>             []+<a name="(line32)"></a>+<a name="(line33)"></a>+<a name="(line34)"></a>+<a name="(line35)"></a>+<a name="(line36)"></a><a name="Doc"></a><font color=Green><u>type</u></font> Doc <font color=Red>=</font> String+<a name="(line37)"></a><a name="empty"></a>empty <font color=Red>=</font> <font color=Magenta>""</font>+<a name="(line38)"></a><a name="$$"></a><font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font> a b <font color=Red>=</font> a <font color=Cyan>++</font> <font color=Magenta>"\n"</font> <font color=Cyan>++</font> b+<a name="(line39)"></a><a name="vcat"></a>vcat a <font color=Red>=</font> foldr <font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font> [] a+<a name="(line40)"></a><a name="hcat"></a>hcat <font color=Red>=</font> concat+<a name="(line41)"></a><a name="<>"></a><font color=Cyan>(</font><font color=Cyan>&lt;&gt;</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line42)"></a><a name="<+>"></a><font color=Cyan>(</font><font color=Cyan>&lt;+&gt;</font><font color=Cyan>)</font> a b <font color=Red>=</font> a <font color=Cyan>++</font> <font color=Magenta>" "</font> <font color=Cyan>++</font> b+<a name="(line43)"></a><a name="fsep"></a>fsep <font color=Red>=</font> vcat+<a name="(line44)"></a><a name="text"></a>text string <font color=Red>=</font> string+<a name="(line45)"></a><a name="parens"></a>parens string <font color=Red>=</font> <font color=Magenta>"("</font><font color=Cyan>++</font>string<font color=Cyan>++</font><font color=Magenta>")"</font>+<a name="(line46)"></a><a name="nest"></a>nest <font color=Green><u>_</u></font> string <font color=Red>=</font> string+<a name="(line47)"></a>+<a name="(line48)"></a>+<a name="(line49)"></a>+<a name="(line50)"></a><a name="either"></a>either f g <font color=Cyan>(</font>Left x<font color=Cyan>)</font>  <font color=Red>=</font> f x+<a name="(line51)"></a>either f g <font color=Cyan>(</font>Right x<font color=Cyan>)</font> <font color=Red>=</font> g x+<a name="(line52)"></a>+<a name="(line53)"></a><a name="maybe"></a>maybe f Nothing  <font color=Red>=</font> empty+<a name="(line54)"></a>maybe f <font color=Cyan>(</font>Just x<font color=Cyan>)</font> <font color=Red>=</font> f x+<a name="(line55)"></a>+<a name="(line56)"></a><font color=Blue>--peref p   = text "%" &lt;&gt; text p &lt;&gt; text ";"</font>+<a name="(line57)"></a>+<a name="(line58)"></a><font color=Blue>----</font>+<a name="(line59)"></a>+<a name="(line60)"></a><a name="document"></a>document <font color=Red>::</font> Document i <font color=Red>-&gt;</font> Doc+<a name="(line61)"></a><a name="prolog"></a>prolog   <font color=Red>::</font> Prolog <font color=Red>-&gt;</font> Doc+<a name="(line62)"></a><a name="xmldecl"></a>xmldecl  <font color=Red>::</font> XMLDecl <font color=Red>-&gt;</font> Doc+<a name="(line63)"></a><a name="misc"></a>misc     <font color=Red>::</font> Misc <font color=Red>-&gt;</font> Doc+<a name="(line64)"></a><a name="sddecl"></a>sddecl   <font color=Red>::</font> Bool <font color=Red>-&gt;</font> Doc+<a name="(line65)"></a>+<a name="(line66)"></a><a name="doctypedecl"></a>doctypedecl <font color=Red>::</font> DocTypeDecl <font color=Red>-&gt;</font> Doc+<a name="(line67)"></a><a name="markupdecl"></a>markupdecl  <font color=Red>::</font> MarkupDecl <font color=Red>-&gt;</font> Doc+<a name="(line68)"></a><a name="extsubset"></a>extsubset   <font color=Red>::</font> ExtSubset <font color=Red>-&gt;</font> Doc+<a name="(line69)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> ExtSubsetDecl <font color=Red>-&gt;</font> Doc+<a name="(line70)"></a><a name="cp"></a>cp          <font color=Red>::</font> CP <font color=Red>-&gt;</font> Doc+<a name="(line71)"></a>+<a name="(line72)"></a><a name="element"></a>element   <font color=Red>::</font> Element i <font color=Red>-&gt;</font> Doc+<a name="(line73)"></a><a name="attribute"></a>attribute <font color=Red>::</font> Attribute <font color=Red>-&gt;</font> Doc                     <font color=Cyan>--etc</font>+<a name="(line74)"></a><a name="content"></a>content   <font color=Red>::</font> Content i <font color=Red>-&gt;</font> Doc+<a name="(line75)"></a>+<a name="(line76)"></a><font color=Blue>----</font>+<a name="(line77)"></a>+<a name="(line78)"></a>document <font color=Cyan>(</font>Document p <font color=Green><u>_</u></font> e m<font color=Cyan>)</font><font color=Red>=</font> prolog p <font color=Cyan>$$</font> element e <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>map misc m<font color=Cyan>)</font>+<a name="(line79)"></a>prolog <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font><font color=Red>=</font> maybe xmldecl x <font color=Cyan>$$</font>+<a name="(line80)"></a>                             vcat <font color=Cyan>(</font>map misc m1<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line81)"></a>                             maybe doctypedecl dtd <font color=Cyan>$$</font>+<a name="(line82)"></a>                             vcat <font color=Cyan>(</font>map misc m2<font color=Cyan>)</font>+<a name="(line83)"></a>xmldecl <font color=Cyan>(</font>XMLDecl v e sd<font color=Cyan>)</font>   <font color=Red>=</font> text <font color=Magenta>"&lt;?xml version='"</font> <font color=Cyan>&lt;&gt;</font> text v <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line84)"></a>                             maybe encodingdecl e <font color=Cyan>&lt;+&gt;</font>+<a name="(line85)"></a>                             maybe sddecl sd <font color=Cyan>&lt;+&gt;</font>+<a name="(line86)"></a>                             text <font color=Magenta>"?&gt;"</font>+<a name="(line87)"></a>misc <font color=Cyan>(</font>Comment s<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!--"</font> <font color=Cyan>&lt;+&gt;</font> text s <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"--&gt;"</font>+<a name="(line88)"></a>misc <font color=Cyan>(</font>PI <font color=Cyan>(</font>n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"&lt;?"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> text s <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line89)"></a>sddecl sd   <font color=Red>|</font> sd           <font color=Red>=</font> text <font color=Magenta>"standalone='yes'"</font>+<a name="(line90)"></a>            <font color=Red>|</font> otherwise    <font color=Red>=</font> text <font color=Magenta>"standalone='no'"</font>+<a name="(line91)"></a>doctypedecl <font color=Cyan>(</font>DTD n eid ds<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>if</u></font> null ds <font color=Green><u>then</u></font> +<a name="(line92)"></a>                                  hd <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line93)"></a>                             <font color=Green><u>else</u></font> hd <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>" ["</font> <font color=Cyan>$$</font>+<a name="(line94)"></a>                                  vcat <font color=Cyan>(</font>map markupdecl ds<font color=Cyan>)</font> <font color=Cyan>$$</font> text <font color=Magenta>"]&gt;"</font>+<a name="(line95)"></a>                           <font color=Green><u>where</u></font> hd <font color=Red>=</font> text <font color=Magenta>"&lt;!DOCTYPE"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line96)"></a>                                      maybe externalid eid+<a name="(line97)"></a>markupdecl <font color=Cyan>(</font>Element e<font color=Cyan>)</font>     <font color=Red>=</font> elementdecl e+<a name="(line98)"></a>markupdecl <font color=Cyan>(</font>AttList a<font color=Cyan>)</font>     <font color=Red>=</font> attlistdecl a+<a name="(line99)"></a>markupdecl <font color=Cyan>(</font>Entity e<font color=Cyan>)</font>      <font color=Red>=</font> entitydecl e+<a name="(line100)"></a>markupdecl <font color=Cyan>(</font>Notation n<font color=Cyan>)</font>    <font color=Red>=</font> notationdecl n+<a name="(line101)"></a>markupdecl <font color=Cyan>(</font>MarkupMisc m<font color=Cyan>)</font>  <font color=Red>=</font> misc m+<a name="(line102)"></a><font color=Blue>--markupdecl (MarkupPE p m)  = peref p</font>+<a name="(line103)"></a>extsubset <font color=Cyan>(</font>ExtSubset t ds<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan>$$</font>+<a name="(line104)"></a>                             vcat <font color=Cyan>(</font>map extsubsetdecl ds<font color=Cyan>)</font>+<a name="(line105)"></a>extsubsetdecl <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font>      <font color=Red>=</font> markupdecl m+<a name="(line106)"></a>extsubsetdecl <font color=Cyan>(</font>ExtConditionalSect c<font color=Cyan>)</font> <font color=Red>=</font> conditionalsect c+<a name="(line107)"></a><font color=Blue>--extsubsetdecl (ExtPEReference p e)   = peref p</font>+<a name="(line108)"></a>+<a name="(line109)"></a>element <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line110)"></a>                         fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"/&gt;"</font>+<a name="(line111)"></a>element e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font>+<a name="(line112)"></a><font color=Blue>--  | any isText cs    = text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as) &lt;&gt;</font>+<a name="(line113)"></a><font color=Blue>--                       text "&gt;" &lt;&gt; hcat (map content cs) &lt;&gt;</font>+<a name="(line114)"></a><font color=Blue>--                       text "&lt;/" &lt;&gt; text n &lt;&gt; text "&gt;"</font>+<a name="(line115)"></a>    <font color=Red>|</font> isText <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line116)"></a>                         text <font color=Magenta>"&gt;"</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map content cs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line117)"></a>                         text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line118)"></a>    <font color=Red>|</font> otherwise        <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> carryelem e empty+<a name="(line119)"></a>                         <font color=Green><u>in</u></font> d <font color=Cyan>&lt;&gt;</font> c+<a name="(line120)"></a>+<a name="(line121)"></a><a name="isText"></a>isText <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line122)"></a>isText <font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> True+<a name="(line123)"></a>isText <font color=Green><u>_</u></font>               <font color=Red>=</font> False+<a name="(line124)"></a>+<a name="(line125)"></a><a name="carryelem"></a>carryelem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> c+<a name="(line126)"></a>                       <font color=Red>=</font> <font color=Cyan>(</font> c <font color=Cyan>&lt;&gt;</font>+<a name="(line127)"></a>                           text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line128)"></a>                         <font color=Cyan>,</font> text <font color=Magenta>"/&gt;"</font><font color=Cyan>)</font>+<a name="(line129)"></a>carryelem e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> c+<a name="(line130)"></a><font color=Blue>--  | any isText cs    =  ( c &lt;&gt; element e, empty)</font>+<a name="(line131)"></a>    <font color=Red>|</font> otherwise        <font color=Red>=</font>  <font color=Green><u>let</u></font> <font color=Cyan>(</font>cs0<font color=Cyan>,</font>d0<font color=Cyan>)</font> <font color=Red>=</font> carryscan carrycontent cs <font color=Cyan>(</font>text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line132)"></a>                          <font color=Green><u>in</u></font>+<a name="(line133)"></a>                          <font color=Cyan>(</font> c <font color=Cyan>&lt;&gt;</font>+<a name="(line134)"></a>                            text <font color=Magenta>"&lt;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> fsep <font color=Cyan>(</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line135)"></a>                            nest <font color=Magenta>2</font> <font color=Cyan>(</font>vcat cs0<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> <font color=Blue>--- $$</font>+<a name="(line136)"></a>                            d0 <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&lt;/"</font> <font color=Cyan>&lt;&gt;</font> text n+<a name="(line137)"></a>                          <font color=Cyan>,</font> text <font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line138)"></a><a name="carrycontent"></a>carrycontent <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font> c   <font color=Red>=</font> carryelem e c+<a name="(line139)"></a>carrycontent <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> chardata s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line140)"></a>carrycontent <font color=Cyan>(</font>CString True  s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> cdsect s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line141)"></a>carrycontent <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font> c    <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> reference r<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line142)"></a>carrycontent <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font> c   <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan>&lt;&gt;</font> misc m<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line143)"></a>+<a name="(line144)"></a><a name="carryscan"></a>carryscan <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>c<font color=Red>-&gt;</font><font color=Cyan>(</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> c <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line145)"></a>carryscan f []     c <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line146)"></a>carryscan f <font color=Cyan>(</font>a<font color=Red><b>:</b></font><font color=Green><u>as</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>b<font color=Cyan>,</font> c0<font color=Cyan>)</font> <font color=Red>=</font> f a c+<a name="(line147)"></a>                           <font color=Cyan>(</font>bs<font color=Cyan>,</font>c1<font color=Cyan>)</font> <font color=Red>=</font> carryscan f <font color=Green><u>as</u></font> c0+<a name="(line148)"></a>                       <font color=Green><u>in</u></font> <font color=Cyan>(</font>b<font color=Red><b>:</b></font>bs<font color=Cyan>,</font> c1<font color=Cyan>)</font>+<a name="(line149)"></a>+<a name="(line150)"></a><font color=Blue>--carryelem e@(Elem n as cs) c</font>+<a name="(line151)"></a><font color=Blue>--  | isText (head cs) =</font>+<a name="(line152)"></a><font color=Blue>--        ( start &lt;&gt;</font>+<a name="(line153)"></a><font color=Blue>--          text "&gt;" &lt;&gt; hcat (map content cs) &lt;&gt; text "&lt;/" &lt;&gt; text n</font>+<a name="(line154)"></a><font color=Blue>--        , text "&gt;")</font>+<a name="(line155)"></a><font color=Blue>--  | otherwise =</font>+<a name="(line156)"></a><font color=Blue>--        let (d,c0) = foldl carrycontent (start, text "&gt;") cs in</font>+<a name="(line157)"></a><font color=Blue>--        ( d &lt;&gt; c0 &lt;&gt; text "&lt;/" &lt;&gt; text n</font>+<a name="(line158)"></a><font color=Blue>--        , text "&gt;")</font>+<a name="(line159)"></a><font color=Blue>--  where start = c &lt;&gt; text "&lt;" &lt;&gt; text n &lt;+&gt; fsep (map attribute as)</font>+<a name="(line160)"></a><font color=Blue>--</font>+<a name="(line161)"></a><font color=Blue>--carrycontent (d,c) (CElem e)   = let (d',c') = carryelem e c in</font>+<a name="(line162)"></a><font color=Blue>--                                 (d $$ nest 2 d',       c')</font>+<a name="(line163)"></a><font color=Blue>--carrycontent (d,c) (CString _ s) = (d &lt;&gt; c &lt;&gt; chardata s, empty)</font>+<a name="(line164)"></a><font color=Blue>--carrycontent (d,c) (CRef r)    = (d &lt;&gt; c &lt;&gt; reference r,empty)</font>+<a name="(line165)"></a><font color=Blue>--carrycontent (d,c) (CMisc m)   = (d $$ c &lt;&gt; misc m,     empty)</font>+<a name="(line166)"></a>+<a name="(line167)"></a>+<a name="(line168)"></a>attribute <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font>             <font color=Red>=</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"="</font> <font color=Cyan>&lt;&gt;</font> attvalue v+<a name="(line169)"></a>content <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font>         <font color=Red>=</font> element e+<a name="(line170)"></a>content <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> chardata s+<a name="(line171)"></a>content <font color=Cyan>(</font>CString True s <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> cdsect s+<a name="(line172)"></a>content <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font>          <font color=Red>=</font> reference r+<a name="(line173)"></a>content <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font>         <font color=Red>=</font> misc m+<a name="(line174)"></a>+<a name="(line175)"></a><a name="elementdecl"></a>elementdecl <font color=Cyan>(</font>ElementDecl n cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ELEMENT"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line176)"></a>                                 contentspec cs <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line177)"></a><a name="contentspec"></a>contentspec EMPTY              <font color=Red>=</font> text <font color=Magenta>"EMPTY"</font>+<a name="(line178)"></a>contentspec ANY                <font color=Red>=</font> text <font color=Magenta>"ANY"</font>+<a name="(line179)"></a>contentspec <font color=Cyan>(</font>Mixed m<font color=Cyan>)</font>          <font color=Red>=</font> mixed m+<a name="(line180)"></a>contentspec <font color=Cyan>(</font>ContentSpec c<font color=Cyan>)</font>    <font color=Red>=</font> cp c+<a name="(line181)"></a><font color=Blue>--contentspec (ContentPE p cs)   = peref p</font>+<a name="(line182)"></a>cp <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font>       <font color=Red>=</font> text n <font color=Cyan>&lt;&gt;</font> modifier m+<a name="(line183)"></a>cp <font color=Cyan>(</font>Choice cs m<font color=Cyan>)</font>       <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line184)"></a>                           modifier m+<a name="(line185)"></a>cp <font color=Cyan>(</font>Seq cs m<font color=Cyan>)</font>          <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>","</font><font color=Cyan>)</font> <font color=Cyan>(</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line186)"></a>                           modifier m+<a name="(line187)"></a><a name="modifier"></a><font color=Blue>--cp (CPPE p c)          = peref p</font>+<a name="(line188)"></a>modifier None          <font color=Red>=</font> empty+<a name="(line189)"></a>modifier Query         <font color=Red>=</font> text <font color=Magenta>"?"</font>+<a name="(line190)"></a>modifier Star          <font color=Red>=</font> text <font color=Magenta>"*"</font>+<a name="(line191)"></a>modifier Plus          <font color=Red>=</font> text <font color=Magenta>"+"</font>+<a name="(line192)"></a><a name="mixed"></a>mixed  PCDATA          <font color=Red>=</font> text <font color=Magenta>"(#PCDATA)"</font>+<a name="(line193)"></a>mixed <font color=Cyan>(</font>PCDATAplus ns<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"(#PCDATA |"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line194)"></a>                         hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line195)"></a>                         text <font color=Magenta>")*"</font>+<a name="(line196)"></a>+<a name="(line197)"></a><a name="attlistdecl"></a>attlistdecl <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;!ATTLIST"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line198)"></a>                                 fsep <font color=Cyan>(</font>map attdef ds<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"&gt;"</font>+<a name="(line199)"></a><a name="attdef"></a>attdef <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font>          <font color=Red>=</font> text n <font color=Cyan>&lt;+&gt;</font> atttype t <font color=Cyan>&lt;+&gt;</font> defaultdecl d+<a name="(line200)"></a><a name="atttype"></a>atttype  StringType            <font color=Red>=</font> text <font color=Magenta>"CDATA"</font>+<a name="(line201)"></a>atttype <font color=Cyan>(</font>TokenizedType t<font color=Cyan>)</font>      <font color=Red>=</font> tokenizedtype t+<a name="(line202)"></a>atttype <font color=Cyan>(</font>EnumeratedType t<font color=Cyan>)</font>     <font color=Red>=</font> enumeratedtype t+<a name="(line203)"></a><a name="tokenizedtype"></a>tokenizedtype ID               <font color=Red>=</font> text <font color=Magenta>"ID"</font>+<a name="(line204)"></a>tokenizedtype IDREF            <font color=Red>=</font> text <font color=Magenta>"IDREF"</font>+<a name="(line205)"></a>tokenizedtype IDREFS           <font color=Red>=</font> text <font color=Magenta>"IDREFS"</font>+<a name="(line206)"></a>tokenizedtype ENTITY           <font color=Red>=</font> text <font color=Magenta>"ENTITY"</font>+<a name="(line207)"></a>tokenizedtype ENTITIES         <font color=Red>=</font> text <font color=Magenta>"ENTITIES"</font>+<a name="(line208)"></a>tokenizedtype NMTOKEN          <font color=Red>=</font> text <font color=Magenta>"NMTOKEN"</font>+<a name="(line209)"></a>tokenizedtype NMTOKENS         <font color=Red>=</font> text <font color=Magenta>"NMTOKENS"</font>+<a name="(line210)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Cyan>(</font>NotationType n<font color=Cyan>)</font><font color=Red>=</font> notationtype n+<a name="(line211)"></a>enumeratedtype <font color=Cyan>(</font>Enumeration e<font color=Cyan>)</font> <font color=Red>=</font> enumeration e+<a name="(line212)"></a><a name="notationtype"></a>notationtype ns                <font color=Red>=</font> text <font color=Magenta>"NOTATION"</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line213)"></a>                                 parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line214)"></a><a name="enumeration"></a>enumeration ns                 <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>map nmtoken ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line215)"></a><a name="defaultdecl"></a>defaultdecl  REQUIRED          <font color=Red>=</font> text <font color=Magenta>"#REQUIRED"</font>+<a name="(line216)"></a>defaultdecl  IMPLIED           <font color=Red>=</font> text <font color=Magenta>"#IMPLIED"</font>+<a name="(line217)"></a>defaultdecl <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font>    <font color=Red>=</font> maybe <font color=Cyan>(</font>const <font color=Cyan>(</font>text <font color=Magenta>"#FIXED"</font><font color=Cyan>)</font><font color=Cyan>)</font> f <font color=Cyan>&lt;+&gt;</font> attvalue a+<a name="(line218)"></a><a name="conditionalsect"></a>conditionalsect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Red>=</font> text <font color=Magenta>"&lt;![INCLUDE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line219)"></a>                                 vcat <font color=Cyan>(</font>map extsubsetdecl i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line220)"></a>conditionalsect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![IGNORE ["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line221)"></a>                                 fsep <font color=Cyan>(</font>map ignoresectcontents i<font color=Cyan>)</font> <font color=Cyan>&lt;+&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line222)"></a><a name="ignore"></a>ignore <font color=Cyan>(</font>Ignore<font color=Cyan>)</font>                <font color=Red>=</font> empty+<a name="(line223)"></a><a name="ignoresectcontents"></a>ignoresectcontents <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>+<a name="(line224)"></a>                               <font color=Red>=</font> ignore i <font color=Cyan>&lt;+&gt;</font> vcat <font color=Cyan>(</font>map internal is<font color=Cyan>)</font>+<a name="(line225)"></a>                          <font color=Green><u>where</u></font> internal <font color=Cyan>(</font>ics<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"&lt;![["</font> <font color=Cyan>&lt;+&gt;</font>+<a name="(line226)"></a>                                                   ignoresectcontents ics <font color=Cyan>&lt;+&gt;</font>+<a name="(line227)"></a>                                                   text <font color=Magenta>"]]&gt;"</font> <font color=Cyan>&lt;+&gt;</font> ignore i+<a name="(line228)"></a><a name="reference"></a>reference <font color=Cyan>(</font>RefEntity er<font color=Cyan>)</font>       <font color=Red>=</font> entityref er+<a name="(line229)"></a>reference <font color=Cyan>(</font>RefChar cr<font color=Cyan>)</font>         <font color=Red>=</font> charref cr+<a name="(line230)"></a><a name="entityref"></a>entityref n                    <font color=Red>=</font> text <font color=Magenta>"&amp;"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line231)"></a><a name="charref"></a>charref c                      <font color=Red>=</font> text <font color=Magenta>"&amp;#"</font> <font color=Cyan>&lt;&gt;</font> text <font color=Cyan>(</font>show c<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>";"</font>+<a name="(line232)"></a><a name="entitydecl"></a>entitydecl <font color=Cyan>(</font>EntityGEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> gedecl d+<a name="(line233)"></a>entitydecl <font color=Cyan>(</font>EntityPEDecl d<font color=Cyan>)</font>    <font color=Red>=</font> pedecl d+<a name="(line234)"></a><a name="gedecl"></a>gedecl <font color=Cyan>(</font>GEDecl n ed<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> entitydef ed <font color=Cyan>&lt;&gt;</font>+<a name="(line235)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line236)"></a><a name="pedecl"></a>pedecl <font color=Cyan>(</font>PEDecl n pd<font color=Cyan>)</font>           <font color=Red>=</font> text <font color=Magenta>"&lt;!ENTITY %"</font> <font color=Cyan>&lt;&gt;</font> text n <font color=Cyan>&lt;+&gt;</font> pedef pd <font color=Cyan>&lt;&gt;</font>+<a name="(line237)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line238)"></a><a name="entitydef"></a>entitydef <font color=Cyan>(</font>DefEntityValue ev<font color=Cyan>)</font>  <font color=Red>=</font> entityvalue ev+<a name="(line239)"></a>entitydef <font color=Cyan>(</font>DefExternalID i nd<font color=Cyan>)</font> <font color=Red>=</font> externalid i <font color=Cyan>&lt;+&gt;</font> maybe ndatadecl nd+<a name="(line240)"></a><a name="pedef"></a>pedef <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font>    <font color=Red>=</font> entityvalue ev+<a name="(line241)"></a>pedef <font color=Cyan>(</font>PEDefExternalID eid<font color=Cyan>)</font>    <font color=Red>=</font> externalid eid+<a name="(line242)"></a><a name="externalid"></a>externalid <font color=Cyan>(</font>SYSTEM sl<font color=Cyan>)</font>         <font color=Red>=</font> text <font color=Magenta>"SYSTEM"</font> <font color=Cyan>&lt;+&gt;</font> systemliteral sl+<a name="(line243)"></a>externalid <font color=Cyan>(</font>PUBLIC i sl<font color=Cyan>)</font>       <font color=Red>=</font> text <font color=Magenta>"PUBLIC"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral i <font color=Cyan>&lt;+&gt;</font>+<a name="(line244)"></a>                                 systemliteral sl+<a name="(line245)"></a><a name="ndatadecl"></a>ndatadecl <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>            <font color=Red>=</font> text <font color=Magenta>"NDATA"</font> <font color=Cyan>&lt;+&gt;</font> text n+<a name="(line246)"></a><a name="textdecl"></a>textdecl <font color=Cyan>(</font>TextDecl vi ed<font color=Cyan>)</font>      <font color=Red>=</font> text <font color=Magenta>"&lt;?xml"</font> <font color=Cyan>&lt;+&gt;</font> maybe text vi <font color=Cyan>&lt;+&gt;</font>+<a name="(line247)"></a>                                 encodingdecl ed <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"?&gt;"</font>+<a name="(line248)"></a><a name="extparsedent"></a>extparsedent <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font><font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font> content c+<a name="(line249)"></a><a name="extpe"></a>extpe <font color=Cyan>(</font>ExtPE t esd<font color=Cyan>)</font>            <font color=Red>=</font> maybe textdecl t <font color=Cyan>&lt;+&gt;</font>+<a name="(line250)"></a>                                 vcat <font color=Cyan>(</font>map extsubsetdecl esd<font color=Cyan>)</font>+<a name="(line251)"></a><a name="notationdecl"></a>notationdecl <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>    <font color=Red>=</font> text <font color=Magenta>"&lt;!NOTATION"</font> <font color=Cyan>&lt;+&gt;</font> text n <font color=Cyan>&lt;+&gt;</font>+<a name="(line252)"></a>                                 either externalid publicid e <font color=Cyan>&lt;&gt;</font>+<a name="(line253)"></a>                                 text <font color=Magenta>"&gt;"</font>+<a name="(line254)"></a><a name="publicid"></a>publicid <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>          <font color=Red>=</font> text <font color=Magenta>"PUBLICID"</font> <font color=Cyan>&lt;+&gt;</font> pubidliteral p+<a name="(line255)"></a><a name="encodingdecl"></a>encodingdecl <font color=Cyan>(</font>EncodingDecl s<font color=Cyan>)</font>  <font color=Red>=</font> text <font color=Magenta>"encoding='"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line256)"></a><a name="nmtoken"></a>nmtoken s                      <font color=Red>=</font> text s+<a name="(line257)"></a><a name="attvalue"></a>attvalue <font color=Cyan>(</font>AttValue esr<font color=Cyan>)</font>        <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line258)"></a>                                 hcat <font color=Cyan>(</font>map <font color=Cyan>(</font>either text reference<font color=Cyan>)</font> esr<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font>+<a name="(line259)"></a>                                 text <font color=Magenta>"\""</font>+<a name="(line260)"></a><a name="entityvalue"></a>entityvalue <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>+<a name="(line261)"></a>  <font color=Red>|</font> containsDoubleQuote evs    <font color=Red>=</font> text <font color=Magenta>"'"</font>  <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map ev evs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line262)"></a>  <font color=Red>|</font> otherwise                  <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> hcat <font color=Cyan>(</font>map ev evs<font color=Cyan>)</font> <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line263)"></a><a name="ev"></a>ev <font color=Cyan>(</font>EVString s<font color=Cyan>)</font>                <font color=Red>=</font> text s+<a name="(line264)"></a><font color=Blue>--ev (EVPERef p e)               = peref p</font>+<a name="(line265)"></a>ev <font color=Cyan>(</font>EVRef r<font color=Cyan>)</font>                   <font color=Red>=</font> reference r+<a name="(line266)"></a><a name="pubidliteral"></a>pubidliteral <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>+<a name="(line267)"></a>    <font color=Red>|</font> <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> s             <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line268)"></a>    <font color=Red>|</font> otherwise                <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line269)"></a><a name="systemliteral"></a>systemliteral <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>+<a name="(line270)"></a>    <font color=Red>|</font> <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> s             <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"'"</font>+<a name="(line271)"></a>    <font color=Red>|</font> otherwise                <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan>&lt;&gt;</font> text s <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"\""</font>+<a name="(line272)"></a><a name="chardata"></a>chardata s                     <font color=Red>=</font> <font color=Blue>{-if all isSpace s then empty else-}</font> text s+<a name="(line273)"></a><a name="cdsect"></a>cdsect c                       <font color=Red>=</font> text <font color=Magenta>"&lt;![CDATA["</font> <font color=Cyan>&lt;&gt;</font> chardata c <font color=Cyan>&lt;&gt;</font> text <font color=Magenta>"]]&gt;"</font>+<a name="(line274)"></a>+<a name="(line275)"></a><a name="containsDoubleQuote"></a><font color=Blue>----</font>+<a name="(line276)"></a>containsDoubleQuote evs <font color=Red>=</font> any csq evs+<a name="(line277)"></a>    <font color=Green><u>where</u></font> csq <font color=Cyan>(</font>EVString s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> s+<a name="(line278)"></a>          csq <font color=Green><u>_</u></font>            <font color=Red>=</font> False+<a name="(line279)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/TypeMapping.html view
@@ -0,0 +1,217 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="(line2)"></a>  <font color=Cyan>(</font>+<a name="(line3)"></a>  <font color=Blue>-- * A class to get an explicit type representation for any value</font>+<a name="(line4)"></a>    HTypeable<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>	<font color=Blue>-- sole method, toHType</font>+<a name="(line5)"></a>  <font color=Blue>-- * Explicit representation of Haskell datatype information</font>+<a name="(line6)"></a>  <font color=Cyan>,</font> HType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>		<font color=Blue>-- instance of Eq, Show</font>+<a name="(line7)"></a>  <font color=Cyan>,</font> Constr<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>		<font color=Blue>-- instance of Eq, Show</font>+<a name="(line8)"></a>  <font color=Blue>-- * Helper functions to extract type info as strings</font>+<a name="(line9)"></a>  <font color=Cyan>,</font> showHType		<font color=Blue>-- :: HType -&gt; ShowS</font>+<a name="(line10)"></a>  <font color=Cyan>,</font> showConstr		<font color=Blue>-- :: Int -&gt; HType -&gt; String</font>+<a name="(line11)"></a>  <font color=Blue>-- * Conversion from Haskell datatype to DTD</font>+<a name="(line12)"></a>  <font color=Cyan>,</font> toDTD+<a name="(line13)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line14)"></a>+<a name="(line15)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line16)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>List <font color=Cyan>(</font>partition<font color=Cyan>,</font> intersperse<font color=Cyan>)</font>+<a name="(line17)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="(line18)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP+<a name="(line19)"></a>+<a name="(line20)"></a>+<a name="(line21)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line22)"></a>        <font color=Blue>-- idea: in DrIFT,</font>+<a name="(line23)"></a>        <font color=Blue>--      named field == primitive type, becomes an attribute</font>+<a name="(line24)"></a>        <font color=Blue>--      named field == single-constructor type, renames the tag</font>+<a name="(line25)"></a>        <font color=Blue>--      named field == multi-constructor type, as normal</font>+<a name="(line26)"></a>        <font color=Blue>-- if prefix of all named fields is roughly typename, delete it</font>+<a name="(line27)"></a>+<a name="(line28)"></a><a name="HTypeable"></a><font color=Blue>-- | @HTypeable@ promises that we can create an explicit representation of</font>+<a name="(line29)"></a><a name="HTypeable"></a><font color=Blue>--   of the type of any value.</font>+<a name="(line30)"></a><a name="HTypeable"></a><font color=Green><u>class</u></font> HTypeable a <font color=Green><u>where</u></font>+<a name="(line31)"></a>    toHType <font color=Red>::</font> a <font color=Red>-&gt;</font> HType+<a name="(line32)"></a>+<a name="(line33)"></a><a name="HType"></a><font color=Blue>-- | A concrete representation of any Haskell type.</font>+<a name="(line34)"></a><a name="HType"></a><font color=Green><u>data</u></font> HType <font color=Red>=</font>+<a name="(line35)"></a>      Maybe HType+<a name="(line36)"></a>    <font color=Red>|</font> List HType+<a name="(line37)"></a>    <font color=Red>|</font> Tuple <font color=Red>[</font>HType<font color=Red>]</font>+<a name="(line38)"></a>    <font color=Red>|</font> Prim String String        <font color=Blue>-- ^ separate Haskell name and XML name</font>+<a name="(line39)"></a>    <font color=Red>|</font> String+<a name="(line40)"></a>    <font color=Red>|</font> Defined String <font color=Red>[</font>HType<font color=Red>]</font> <font color=Red>[</font>Constr<font color=Red>]</font>+<a name="(line41)"></a>	<font color=Blue>-- ^ A user-defined type has a name, a sequence of type variables,</font>+<a name="(line42)"></a>	<font color=Blue>--   and a set of constructors.  (The variables might already be</font>+<a name="(line43)"></a>	<font color=Blue>--   instantiated to actual types.)</font>+<a name="(line44)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="(line45)"></a>+<a name="(line46)"></a><font color=Green><u>instance</u></font> Eq HType <font color=Green><u>where</u></font>+<a name="(line47)"></a>    <font color=Cyan>(</font>Maybe x<font color=Cyan>)</font>  <font color=Cyan>==</font> <font color=Cyan>(</font>Maybe y<font color=Cyan>)</font>  <font color=Red>=</font>  x<font color=Cyan>==</font>y+<a name="(line48)"></a>    <font color=Cyan>(</font>List x<font color=Cyan>)</font>   <font color=Cyan>==</font> <font color=Cyan>(</font>List y<font color=Cyan>)</font>   <font color=Red>=</font>  x<font color=Cyan>==</font>y+<a name="(line49)"></a>    <font color=Cyan>(</font>Tuple xs<font color=Cyan>)</font> <font color=Cyan>==</font> <font color=Cyan>(</font>Tuple ys<font color=Cyan>)</font> <font color=Red>=</font>  xs<font color=Cyan>==</font>ys+<a name="(line50)"></a>    <font color=Cyan>(</font>Prim x <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Cyan>==</font> <font color=Cyan>(</font>Prim y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>  x<font color=Cyan>==</font>y+<a name="(line51)"></a>    String     <font color=Cyan>==</font> String     <font color=Red>=</font>  True+<a name="(line52)"></a>    <font color=Cyan>(</font>Defined n xs <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Cyan>==</font> <font color=Cyan>(</font>Defined m ys <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font>  n<font color=Cyan>==</font>m 	<font color=Blue>-- &amp;&amp; xs==ys</font>+<a name="(line53)"></a>    <font color=Green><u>_</u></font>          <font color=Cyan>==</font> <font color=Green><u>_</u></font>          <font color=Red>=</font>  False+<a name="(line54)"></a>+<a name="(line55)"></a><a name="Constr"></a><font color=Blue>-- | A concrete representation of any user-defined Haskell constructor.</font>+<a name="(line56)"></a><a name="Constr"></a><font color=Blue>--   The constructor has a name, and a sequence of component types.  The</font>+<a name="(line57)"></a><a name="Constr"></a><font color=Blue>--   first sequence of types represents the minimum set of free type</font>+<a name="(line58)"></a><a name="Constr"></a><font color=Blue>--   variables occurring in the (second) list of real component types.</font>+<a name="(line59)"></a><a name="Constr"></a><font color=Blue>--   If there are fieldnames, they are contained in the final list, and</font>+<a name="(line60)"></a><a name="Constr"></a><font color=Blue>--   correspond one-to-one with the component types.</font>+<a name="(line61)"></a><a name="Constr"></a><font color=Blue>--   The Synonym alternative is for where the type-mapping from Haskell to</font>+<a name="(line62)"></a><a name="Constr"></a><font color=Blue>--   XML is user-defined rather than automatic.  There, one might wish to</font>+<a name="(line63)"></a><a name="Constr"></a><font color=Blue>--   rename an existing XML type, without the addition of a constructor\/tag.</font>+<a name="(line64)"></a><a name="Constr"></a><font color=Green><u>data</u></font> Constr <font color=Red>=</font> Constr String <font color=Red>[</font>HType<font color=Red>]</font> <font color=Red>[</font>HType<font color=Red>]</font> <font color=Blue>-- (Maybe [String])</font>+<a name="(line65)"></a>            <font color=Red>|</font> Synonym HType+<a name="(line66)"></a>    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line67)"></a>+<a name="(line68)"></a><a name="showConstr"></a><font color=Blue>-- | Project the n'th constructor from an HType and convert it to a string</font>+<a name="(line69)"></a><font color=Blue>--   suitable for an XML tagname.</font>+<a name="(line70)"></a>showConstr <font color=Red>::</font> Int <font color=Red>-&gt;</font> HType <font color=Red>-&gt;</font> String+<a name="(line71)"></a>showConstr n <font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Red>=</font> flatConstr <font color=Cyan>(</font>cs<font color=Cyan>!!</font>n<font color=Cyan>)</font> <font color=Magenta>""</font>+<a name="(line72)"></a>showConstr n <font color=Green><u>_</u></font> <font color=Red>=</font> error <font color=Magenta>"no constructors for builtin types"</font>+<a name="(line73)"></a>+<a name="(line74)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line75)"></a><font color=Blue>-- Some instances</font>+<a name="(line76)"></a><font color=Green><u>instance</u></font> HTypeable Bool <font color=Green><u>where</u></font>+<a name="(line77)"></a>    toHType   <font color=Green><u>_</u></font>    <font color=Red>=</font> Prim <font color=Magenta>"Bool"</font> <font color=Magenta>"bool"</font>+<a name="(line78)"></a><font color=Green><u>instance</u></font> HTypeable Int <font color=Green><u>where</u></font>+<a name="(line79)"></a>    toHType   <font color=Green><u>_</u></font>    <font color=Red>=</font> Prim <font color=Magenta>"Int"</font> <font color=Magenta>"int"</font>+<a name="(line80)"></a><font color=Green><u>instance</u></font> HTypeable Integer <font color=Green><u>where</u></font>+<a name="(line81)"></a>    toHType   <font color=Green><u>_</u></font>    <font color=Red>=</font> Prim <font color=Magenta>"Integer"</font> <font color=Magenta>"integer"</font>+<a name="(line82)"></a><font color=Green><u>instance</u></font> HTypeable Float <font color=Green><u>where</u></font>+<a name="(line83)"></a>    toHType   <font color=Green><u>_</u></font>    <font color=Red>=</font> Prim <font color=Magenta>"Float"</font> <font color=Magenta>"float"</font>+<a name="(line84)"></a><font color=Green><u>instance</u></font> HTypeable Double <font color=Green><u>where</u></font>+<a name="(line85)"></a>    toHType   <font color=Green><u>_</u></font>    <font color=Red>=</font> Prim <font color=Magenta>"Double"</font> <font color=Magenta>"double"</font>+<a name="(line86)"></a><font color=Green><u>instance</u></font> HTypeable Char <font color=Green><u>where</u></font>+<a name="(line87)"></a>    toHType   <font color=Green><u>_</u></font>    <font color=Red>=</font> Prim <font color=Magenta>"Char"</font> <font color=Magenta>"char"</font>+<a name="(line88)"></a>+<a name="(line89)"></a><font color=Green><u>instance</u></font> HTypeable () <font color=Green><u>where</u></font>+<a name="(line90)"></a>    toHType <font color=Green><u>_</u></font>      <font color=Red>=</font> Prim <font color=Magenta>"unit"</font> <font color=Magenta>"unit"</font>+<a name="(line91)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font> HTypeable b<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line92)"></a>    toHType p      <font color=Red>=</font> Tuple <font color=Red>[</font>toHType a<font color=Cyan>,</font> toHType b<font color=Red>]</font>+<a name="(line93)"></a>                   <font color=Green><u>where</u></font>  <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> p+<a name="(line94)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font> HTypeable b<font color=Cyan>,</font> HTypeable c<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line95)"></a>    toHType p      <font color=Red>=</font> Tuple <font color=Red>[</font>toHType a<font color=Cyan>,</font> toHType b<font color=Cyan>,</font> toHType c<font color=Red>]</font>+<a name="(line96)"></a>                   <font color=Green><u>where</u></font>  <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> p+<a name="(line97)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line98)"></a>    toHType m      <font color=Red>=</font> Maybe <font color=Cyan>(</font>toHType x<font color=Cyan>)</font>   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>Just x<font color=Cyan>)</font> <font color=Red>=</font> m+<a name="(line99)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>,</font> HTypeable b<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line100)"></a>    toHType m      <font color=Red>=</font> Defined <font color=Magenta>"Either"</font> <font color=Red>[</font>hx<font color=Cyan>,</font> hy<font color=Red>]</font>+<a name="(line101)"></a>                         <font color=Red>[</font> Constr <font color=Magenta>"Left"</font> <font color=Red>[</font>hx<font color=Red>]</font> <font color=Red>[</font>hx<font color=Red>]</font> <font color=Blue>{-Nothing-}</font>+<a name="(line102)"></a>                         <font color=Cyan>,</font> Constr <font color=Magenta>"Right"</font> <font color=Red>[</font>hy<font color=Red>]</font> <font color=Red>[</font>hy<font color=Red>]</font> <font color=Blue>{-Nothing-}</font><font color=Red>]</font>+<a name="(line103)"></a>                   <font color=Green><u>where</u></font> <font color=Cyan>(</font>Left x<font color=Cyan>)</font>  <font color=Red>=</font> m+<a name="(line104)"></a>                         <font color=Cyan>(</font>Right y<font color=Cyan>)</font> <font color=Red>=</font> m+<a name="(line105)"></a>                         hx <font color=Red>=</font> toHType x+<a name="(line106)"></a>                         hy <font color=Red>=</font> toHType y+<a name="(line107)"></a>+<a name="(line108)"></a><font color=Green><u>instance</u></font> HTypeable a <font color=Red>=&gt;</font> HTypeable <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>+<a name="(line109)"></a>    toHType xs     <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font> <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> String+<a name="(line110)"></a>                                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> List <font color=Cyan>(</font>toHType x<font color=Cyan>)</font>+<a name="(line111)"></a>                   <font color=Green><u>where</u></font>  <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs+<a name="(line112)"></a>+<a name="(line113)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line114)"></a>+<a name="(line115)"></a><a name="toDTD"></a><font color=Blue>-- | 'toDTD' converts a concrete representation of the Haskell type of</font>+<a name="(line116)"></a><font color=Blue>--   a value (obtained by the method 'toHType') into a real DocTypeDecl.</font>+<a name="(line117)"></a><font color=Blue>--   It ensures that PERefs are defined before they are used, and that no</font>+<a name="(line118)"></a><font color=Blue>--   element or attribute-list is declared more than once.</font>+<a name="(line119)"></a>toDTD <font color=Red>::</font> HType <font color=Red>-&gt;</font> DocTypeDecl+<a name="(line120)"></a>toDTD ht <font color=Red>=</font>+<a name="(line121)"></a>  DTD <font color=Cyan>(</font>toplevel ht<font color=Cyan>)</font> Nothing <font color=Cyan>(</font>macrosFirst <font color=Cyan>(</font>reverse <font color=Cyan>(</font>h2d True [] [] <font color=Red>[</font>ht<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line122)"></a>  <font color=Green><u>where</u></font>+<a name="(line123)"></a>    macrosFirst <font color=Red>::</font> <font color=Red>[</font>MarkupDecl<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>MarkupDecl<font color=Red>]</font>+<a name="(line124)"></a>    macrosFirst decls <font color=Red>=</font> concat <font color=Red>[</font>p<font color=Cyan>,</font> p'<font color=Red>]</font> <font color=Green><u>where</u></font> <font color=Cyan>(</font>p<font color=Cyan>,</font> p'<font color=Cyan>)</font> <font color=Red>=</font> partition f decls+<a name="(line125)"></a>                                             f <font color=Cyan>(</font>Entity <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line126)"></a>                                             f <font color=Green><u>_</u></font> <font color=Red>=</font> False+<a name="(line127)"></a>    toplevel ht<font color=Red>@</font><font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> showHType ht <font color=Magenta>"-XML"</font>+<a name="(line128)"></a>    toplevel ht<font color=Red>@</font><font color=Green><u>_</u></font>               <font color=Red>=</font> showHType ht <font color=Magenta>""</font>+<a name="(line129)"></a>    c0 <font color=Red>=</font> False+<a name="(line130)"></a>    h2d <font color=Red>::</font> Bool <font color=Red>-&gt;</font> <font color=Red>[</font>HType<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Constr<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>HType<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>MarkupDecl<font color=Red>]</font>+<a name="(line131)"></a>    <font color=Blue>-- toplevel?   history    history   remainingwork     result</font>+<a name="(line132)"></a>    h2d c history chist []       <font color=Red>=</font> []+<a name="(line133)"></a>    h2d c history chist <font color=Cyan>(</font>ht<font color=Red><b>:</b></font>hts<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line134)"></a>      <font color=Green><u>if</u></font> ht <font color=Cyan>`elem`</font> history <font color=Green><u>then</u></font> h2d c0 history chist hts+<a name="(line135)"></a>      <font color=Green><u>else</u></font>+<a name="(line136)"></a>        <font color=Green><u>case</u></font> ht <font color=Green><u>of</u></font>+<a name="(line137)"></a>          Maybe ht0  <font color=Red>-&gt;</font> declelem ht<font color=Red><b>:</b></font> h2d c0 <font color=Cyan>(</font>ht<font color=Red><b>:</b></font>history<font color=Cyan>)</font> chist <font color=Cyan>(</font>ht0<font color=Red><b>:</b></font>hts<font color=Cyan>)</font>+<a name="(line138)"></a>          List ht0   <font color=Red>-&gt;</font> declelem ht<font color=Red><b>:</b></font> h2d c0 <font color=Cyan>(</font>ht<font color=Red><b>:</b></font>history<font color=Cyan>)</font> chist <font color=Cyan>(</font>ht0<font color=Red><b>:</b></font>hts<font color=Cyan>)</font>+<a name="(line139)"></a>          Tuple hts0 <font color=Red>-&gt;</font> <font color=Cyan>(</font>c <font color=Cyan>?</font> <font color=Cyan>(</font>declelem ht<font color=Red><b>:</b></font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line140)"></a>                                     <font color=Cyan>(</font>h2d c0 history chist <font color=Cyan>(</font>hts0<font color=Cyan>++</font>hts<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line141)"></a>          Prim s t   <font color=Red>-&gt;</font> declprim ht <font color=Cyan>++</font> h2d c0 <font color=Cyan>(</font>ht<font color=Red><b>:</b></font>history<font color=Cyan>)</font> chist hts+<a name="(line142)"></a>          String     <font color=Red>-&gt;</font> declstring<font color=Red><b>:</b></font>    h2d c0 <font color=Cyan>(</font>ht<font color=Red><b>:</b></font>history<font color=Cyan>)</font> chist hts+<a name="(line143)"></a>          Defined s <font color=Green><u>_</u></font> cs <font color=Red>-&gt;</font>+<a name="(line144)"></a>               <font color=Green><u>let</u></font> hts0 <font color=Red>=</font> concatMap grab cs <font color=Green><u>in</u></font>+<a name="(line145)"></a>               <font color=Cyan>(</font>c <font color=Cyan>?</font> <font color=Cyan>(</font>decltopelem ht<font color=Red><b>:</b></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>declmacro ht chist<font color=Cyan>)</font>+<a name="(line146)"></a>               <font color=Cyan>++</font> h2d c0 <font color=Cyan>(</font>ht<font color=Red><b>:</b></font>history<font color=Cyan>)</font> <font color=Cyan>(</font>cs<font color=Cyan>++</font>chist<font color=Cyan>)</font> <font color=Cyan>(</font>hts0<font color=Cyan>++</font>hts<font color=Cyan>)</font>+<a name="(line147)"></a>    declelem ht <font color=Red>=</font>+<a name="(line148)"></a>      Element <font color=Cyan>(</font>ElementDecl <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> <font color=Cyan>(</font>ContentSpec <font color=Cyan>(</font>outerHtExpr ht<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line149)"></a>    decltopelem ht <font color=Red>=</font>    <font color=Blue>-- hack to avoid peref at toplevel</font>+<a name="(line150)"></a>      Element <font color=Cyan>(</font>ElementDecl <font color=Cyan>(</font>showHType ht <font color=Magenta>"-XML"</font><font color=Cyan>)</font> <font color=Cyan>(</font>ContentSpec <font color=Cyan>(</font>innerHtExpr ht None<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line151)"></a>    declmacro ht<font color=Red>@</font><font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> chist <font color=Red>=</font>+<a name="(line152)"></a>      Entity <font color=Cyan>(</font>EntityPEDecl <font color=Cyan>(</font>PEDecl <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font>+<a name="(line153)"></a>      concatMap <font color=Cyan>(</font>declConstr chist<font color=Cyan>)</font> cs+<a name="(line154)"></a>      <font color=Green><u>where</u></font> ev <font color=Red>=</font> EntityValue <font color=Red>[</font>EVString <font color=Cyan>(</font>render <font color=Cyan>(</font>PP<font color=Cyan>.</font>cp <font color=Cyan>(</font>outerHtExpr ht<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line155)"></a>    declConstr chist c<font color=Red>@</font><font color=Cyan>(</font>Constr s fv hts<font color=Cyan>)</font>+<a name="(line156)"></a>      <font color=Red>|</font> c <font color=Cyan>`notElem`</font> chist <font color=Red>=</font>+<a name="(line157)"></a>          <font color=Red>[</font>Element <font color=Cyan>(</font>ElementDecl <font color=Cyan>(</font>flatConstr c <font color=Magenta>""</font><font color=Cyan>)</font> <font color=Cyan>(</font>ContentSpec <font color=Cyan>(</font>constrHtExpr c<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line158)"></a>      <font color=Red>|</font> otherwise <font color=Red>=</font> [] +<a name="(line159)"></a>    declConstr <font color=Green><u>_</u></font> <font color=Cyan>(</font>Synonym ht<font color=Cyan>)</font> <font color=Red>=</font> []+<a name="(line160)"></a>    declprim <font color=Cyan>(</font>Prim s t<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line161)"></a>      <font color=Red>[</font> Element <font color=Cyan>(</font>ElementDecl t EMPTY<font color=Cyan>)</font>+<a name="(line162)"></a>      <font color=Cyan>,</font> AttList <font color=Cyan>(</font>AttListDecl t <font color=Red>[</font>AttDef <font color=Magenta>"value"</font> StringType REQUIRED<font color=Red>]</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line163)"></a>    declstring <font color=Red>=</font>+<a name="(line164)"></a>      Element <font color=Cyan>(</font>ElementDecl <font color=Magenta>"string"</font> <font color=Cyan>(</font>Mixed PCDATA<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line165)"></a>    grab <font color=Cyan>(</font>Constr <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> hts<font color=Cyan>)</font> <font color=Red>=</font> hts+<a name="(line166)"></a>    grab <font color=Cyan>(</font>Synonym ht<font color=Cyan>)</font> <font color=Red>=</font> <font color=Red>[</font>ht<font color=Red>]</font>+<a name="(line167)"></a>+<a name="(line168)"></a><a name="?"></a><font color=Cyan>(</font><font color=Cyan>?</font><font color=Cyan>)</font> <font color=Red>::</font> Bool <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>a<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>a<font color=Cyan>)</font>+<a name="(line169)"></a><a name="b"></a>b <font color=Cyan>?</font> f <font color=Red>|</font> b     <font color=Red>=</font> f+<a name="(line170)"></a>      <font color=Red>|</font> not b <font color=Red>=</font> id+<a name="(line171)"></a>+<a name="(line172)"></a><a name="showHType"></a><font color=Blue>-- Flatten an HType to a String suitable for an XML tagname.</font>+<a name="(line173)"></a>showHType <font color=Red>::</font> HType <font color=Red>-&gt;</font> ShowS+<a name="(line174)"></a>showHType <font color=Cyan>(</font>Maybe ht<font color=Cyan>)</font>  <font color=Red>=</font> showString <font color=Magenta>"maybe-"</font> <font color=Cyan>.</font> showHType ht+<a name="(line175)"></a>showHType <font color=Cyan>(</font>List ht<font color=Cyan>)</font>   <font color=Red>=</font> showString <font color=Magenta>"list-"</font> <font color=Cyan>.</font> showHType ht+<a name="(line176)"></a>showHType <font color=Cyan>(</font>Tuple hts<font color=Cyan>)</font> <font color=Red>=</font> showString <font color=Magenta>"tuple"</font> <font color=Cyan>.</font> shows <font color=Cyan>(</font>length hts<font color=Cyan>)</font>+<a name="(line177)"></a>                        <font color=Cyan>.</font> showChar <font color=Magenta>'-'</font>+<a name="(line178)"></a>                        <font color=Cyan>.</font> foldr1 <font color=Cyan>(</font><font color=Cyan>.</font><font color=Cyan>)</font> <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>showChar <font color=Magenta>'-'</font><font color=Cyan>)</font>+<a name="(line179)"></a>                                                  <font color=Cyan>(</font>map showHType hts<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line180)"></a>showHType <font color=Cyan>(</font>Prim s t<font color=Cyan>)</font>  <font color=Red>=</font> showString t+<a name="(line181)"></a>showHType String      <font color=Red>=</font> showString <font color=Magenta>"string"</font>+<a name="(line182)"></a>showHType <font color=Cyan>(</font>Defined s fv <font color=Green><u>_</u></font><font color=Cyan>)</font>+<a name="(line183)"></a>                      <font color=Red>=</font> showString s <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>(</font>length fv <font color=Cyan>&gt;</font> <font color=Magenta>0</font><font color=Cyan>)</font> <font color=Cyan>?</font> <font color=Cyan>(</font>showChar <font color=Magenta>'-'</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line184)"></a>                        <font color=Cyan>.</font> foldr <font color=Cyan>(</font><font color=Cyan>.</font><font color=Cyan>)</font> id <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>showChar <font color=Magenta>'-'</font><font color=Cyan>)</font>+<a name="(line185)"></a>                                                    <font color=Cyan>(</font>map showHType fv<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line186)"></a>+<a name="(line187)"></a><a name="flatConstr"></a>flatConstr <font color=Red>::</font> Constr <font color=Red>-&gt;</font> ShowS+<a name="(line188)"></a>flatConstr <font color=Cyan>(</font>Constr s fv <font color=Green><u>_</u></font><font color=Cyan>)</font>+<a name="(line189)"></a>        <font color=Red>=</font> showString s <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>(</font>length fv <font color=Cyan>&gt;</font> <font color=Magenta>0</font><font color=Cyan>)</font> <font color=Cyan>?</font> <font color=Cyan>(</font>showChar <font color=Magenta>'-'</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line190)"></a>          <font color=Cyan>.</font> foldr <font color=Cyan>(</font><font color=Cyan>.</font><font color=Cyan>)</font> id <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>showChar <font color=Magenta>'-'</font><font color=Cyan>)</font> <font color=Cyan>(</font>map showHType fv<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line191)"></a>flatConstr <font color=Cyan>(</font>Synonym ht<font color=Cyan>)</font> <font color=Red>=</font> id+<a name="(line192)"></a>+<a name="(line193)"></a><a name="outerHtExpr"></a>outerHtExpr <font color=Red>::</font> HType <font color=Red>-&gt;</font> CP+<a name="(line194)"></a>outerHtExpr <font color=Cyan>(</font>Maybe ht<font color=Cyan>)</font>      <font color=Red>=</font> innerHtExpr ht Query+<a name="(line195)"></a>outerHtExpr <font color=Cyan>(</font>List ht<font color=Cyan>)</font>       <font color=Red>=</font> innerHtExpr ht Star+<a name="(line196)"></a>outerHtExpr <font color=Cyan>(</font>Defined s fv cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line197)"></a>    Choice <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font>TagName <font color=Cyan>(</font>flatConstr c <font color=Magenta>""</font><font color=Cyan>)</font> None<font color=Cyan>)</font> cs<font color=Cyan>)</font> None+<a name="(line198)"></a>outerHtExpr ht              <font color=Red>=</font> innerHtExpr ht None+<a name="(line199)"></a>+<a name="(line200)"></a><a name="innerHtExpr"></a>innerHtExpr <font color=Red>::</font> HType <font color=Red>-&gt;</font> Modifier <font color=Red>-&gt;</font> CP+<a name="(line201)"></a>innerHtExpr <font color=Cyan>(</font>Prim s t<font color=Cyan>)</font>  m <font color=Red>=</font> TagName t m+<a name="(line202)"></a>innerHtExpr <font color=Cyan>(</font>Tuple hts<font color=Cyan>)</font> m <font color=Red>=</font> Seq <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> innerHtExpr c None<font color=Cyan>)</font> hts<font color=Cyan>)</font> m+<a name="(line203)"></a>innerHtExpr ht<font color=Red>@</font><font color=Cyan>(</font>Defined s hts cs<font color=Cyan>)</font> m <font color=Red>=</font> <font color=Blue>-- CPPE (showHType ht "") (outerHtExpr ht)</font>+<a name="(line204)"></a>                                      TagName <font color=Cyan>(</font><font color=Magenta>'%'</font><font color=Red><b>:</b></font> showHType ht <font color=Magenta>";"</font><font color=Cyan>)</font> m+<a name="(line205)"></a>                                                        <font color=Blue>--  ***HACK!!!***</font>+<a name="(line206)"></a>innerHtExpr ht m <font color=Red>=</font> TagName <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> m+<a name="(line207)"></a>+<a name="(line208)"></a><a name="constrHtExpr"></a>constrHtExpr <font color=Red>::</font> Constr <font color=Red>-&gt;</font> CP+<a name="(line209)"></a>constrHtExpr <font color=Cyan>(</font>Constr s fv []<font color=Cyan>)</font>  <font color=Red>=</font> TagName <font color=Magenta>"EMPTY"</font> None   <font color=Blue>--  ***HACK!!!***</font>+<a name="(line210)"></a>constrHtExpr <font color=Cyan>(</font>Constr s fv hts<font color=Cyan>)</font> <font color=Red>=</font> innerHtExpr <font color=Cyan>(</font>Tuple hts<font color=Cyan>)</font> None+<a name="(line211)"></a>constrHtExpr <font color=Cyan>(</font>Synonym ht<font color=Cyan>)</font>      <font color=Red>=</font> outerHtExpr ht+<a name="(line212)"></a>+<a name="(line213)"></a><font color=Blue>------------------------------------------------------------------------</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Types.html view
@@ -0,0 +1,278 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>{- |+<a name="(line2)"></a>   This module defines an internal (generic) representation for XML+<a name="(line3)"></a>   documents including their DTDs.+<a name="(line4)"></a>+<a name="(line5)"></a>   History:+<a name="(line6)"></a>   The original module was derived by hand from the XML specification,+<a name="(line7)"></a>   following the grammar precisely.  Then we simplified the types,+<a name="(line8)"></a>   removing layers of indirection and redundancy, and generally making+<a name="(line9)"></a>   things easier to work with.  Then we allowed PEReferences to be+<a name="(line10)"></a>   ubiquitous, by removing them from the types and resolving all+<a name="(line11)"></a>   PE references at parse-time.  Finally, we added a per-document+<a name="(line12)"></a>   symbol table for GEReferences, and a whitespace-significance flag+<a name="(line13)"></a>   for plaintext.+<a name="(line14)"></a>-}</font>+<a name="(line15)"></a>+<a name="(line16)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line17)"></a>  <font color=Cyan>(</font>+<a name="(line18)"></a>  <font color=Blue>-- * A simple symbol table mapping strings (references) to values.</font>+<a name="(line19)"></a>    SymTab+<a name="(line20)"></a>  <font color=Blue>-- ** Symbol table operations</font>+<a name="(line21)"></a>  <font color=Cyan>,</font> emptyST+<a name="(line22)"></a>  <font color=Cyan>,</font> addST+<a name="(line23)"></a>  <font color=Cyan>,</font> lookupST+<a name="(line24)"></a>+<a name="(line25)"></a>  <font color=Blue>-- * XML Types</font>+<a name="(line26)"></a>  <font color=Blue>-- ** The top-level document container</font>+<a name="(line27)"></a>  <font color=Cyan>,</font> Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line28)"></a>+<a name="(line29)"></a>  <font color=Blue>-- ** The main document content</font>+<a name="(line30)"></a>  <font color=Cyan>,</font> Element<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line31)"></a>  <font color=Cyan>,</font> ElemTag<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line32)"></a>  <font color=Cyan>,</font> Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line33)"></a>  <font color=Cyan>,</font> Attribute+<a name="(line34)"></a>  <font color=Cyan>,</font> AttValue<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line35)"></a>  <font color=Cyan>,</font> info+<a name="(line36)"></a>+<a name="(line37)"></a>  <font color=Blue>-- ** Administrative parts of the document</font>+<a name="(line38)"></a>  <font color=Cyan>,</font> Prolog<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line39)"></a>  <font color=Cyan>,</font> XMLDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line40)"></a>  <font color=Cyan>,</font> Misc<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line41)"></a>  <font color=Cyan>,</font> ProcessingInstruction+<a name="(line42)"></a>  <font color=Cyan>,</font> SDDecl+<a name="(line43)"></a>  <font color=Cyan>,</font> VersionInfo+<a name="(line44)"></a>  <font color=Cyan>,</font> Comment+<a name="(line45)"></a>  <font color=Cyan>,</font> PITarget+<a name="(line46)"></a>+<a name="(line47)"></a>  <font color=Blue>-- ** The DTD</font>+<a name="(line48)"></a>  <font color=Blue>-- *** content model</font>+<a name="(line49)"></a>  <font color=Cyan>,</font> DocTypeDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line50)"></a>  <font color=Cyan>,</font> MarkupDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line51)"></a>  <font color=Cyan>,</font> ExtSubset<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line52)"></a>  <font color=Cyan>,</font> ExtSubsetDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line53)"></a>  <font color=Cyan>,</font> ElementDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line54)"></a>  <font color=Cyan>,</font> ContentSpec<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line55)"></a>  <font color=Cyan>,</font> CP<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line56)"></a>  <font color=Cyan>,</font> Modifier<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line57)"></a>  <font color=Cyan>,</font> Mixed<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line58)"></a>+<a name="(line59)"></a>  <font color=Blue>-- *** attribute model</font>+<a name="(line60)"></a>  <font color=Cyan>,</font> AttListDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line61)"></a>  <font color=Cyan>,</font> AttDef<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line62)"></a>  <font color=Cyan>,</font> AttType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line63)"></a>  <font color=Cyan>,</font> TokenizedType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line64)"></a>  <font color=Cyan>,</font> EnumeratedType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line65)"></a>  <font color=Cyan>,</font> NotationType+<a name="(line66)"></a>  <font color=Cyan>,</font> Enumeration+<a name="(line67)"></a>  <font color=Cyan>,</font> DefaultDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line68)"></a>  <font color=Cyan>,</font> FIXED<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line69)"></a>+<a name="(line70)"></a>  <font color=Blue>-- *** conditional sections</font>+<a name="(line71)"></a>  <font color=Cyan>,</font> ConditionalSect<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line72)"></a>  <font color=Cyan>,</font> IncludeSect+<a name="(line73)"></a>  <font color=Cyan>,</font> IgnoreSect+<a name="(line74)"></a>  <font color=Cyan>,</font> Ignore<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line75)"></a>  <font color=Cyan>,</font> IgnoreSectContents<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line76)"></a>+<a name="(line77)"></a>  <font color=Blue>-- ** References</font>+<a name="(line78)"></a>  <font color=Cyan>,</font> Reference<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line79)"></a>  <font color=Cyan>,</font> EntityRef+<a name="(line80)"></a>  <font color=Cyan>,</font> CharRef+<a name="(line81)"></a>  <font color=Cyan>,</font> PEReference+<a name="(line82)"></a>+<a name="(line83)"></a>  <font color=Blue>-- ** Entities</font>+<a name="(line84)"></a>  <font color=Cyan>,</font> EntityDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line85)"></a>  <font color=Cyan>,</font> GEDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line86)"></a>  <font color=Cyan>,</font> PEDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line87)"></a>  <font color=Cyan>,</font> EntityDef<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line88)"></a>  <font color=Cyan>,</font> PEDef<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line89)"></a>  <font color=Cyan>,</font> ExternalID<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line90)"></a>  <font color=Cyan>,</font> NDataDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line91)"></a>  <font color=Cyan>,</font> TextDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line92)"></a>  <font color=Cyan>,</font> ExtParsedEnt<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line93)"></a>  <font color=Cyan>,</font> ExtPE<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line94)"></a>  <font color=Cyan>,</font> NotationDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line95)"></a>  <font color=Cyan>,</font> PublicID<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line96)"></a>  <font color=Cyan>,</font> EncodingDecl<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line97)"></a>  <font color=Cyan>,</font> EntityValue<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line98)"></a>  <font color=Cyan>,</font> EV<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line99)"></a>  <font color=Cyan>,</font> PubidLiteral<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line100)"></a>  <font color=Cyan>,</font> SystemLiteral<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line101)"></a>+<a name="(line102)"></a>  <font color=Blue>-- ** Basic value types</font>+<a name="(line103)"></a>  <font color=Cyan>,</font> Name+<a name="(line104)"></a>  <font color=Cyan>,</font> Names+<a name="(line105)"></a>  <font color=Cyan>,</font> NmToken+<a name="(line106)"></a>  <font color=Cyan>,</font> NmTokens+<a name="(line107)"></a>  <font color=Cyan>,</font> CharData+<a name="(line108)"></a>  <font color=Cyan>,</font> CDSect+<a name="(line109)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line110)"></a>+<a name="(line111)"></a>+<a name="(line112)"></a>+<a name="(line113)"></a><font color=Blue>{- A simple symbol table for storing macros whilst parsing. -}</font>+<a name="(line114)"></a>+<a name="(line115)"></a><a name="SymTab"></a><font color=Green><u>type</u></font> SymTab a <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>String<font color=Cyan>,</font>a<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line116)"></a>+<a name="(line117)"></a><a name="emptyST"></a>emptyST <font color=Red>::</font> SymTab a+<a name="(line118)"></a>emptyST  <font color=Red>=</font> []+<a name="(line119)"></a>+<a name="(line120)"></a><a name="addST"></a>addST <font color=Red>::</font> String <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> SymTab a <font color=Red>-&gt;</font> SymTab a+<a name="(line121)"></a>addST n v <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font><font color=Red><b>:</b></font><font color=Cyan>)</font>+<a name="(line122)"></a>+<a name="(line123)"></a><a name="lookupST"></a>lookupST <font color=Red>::</font> String <font color=Red>-&gt;</font> SymTab a <font color=Red>-&gt;</font> Maybe a+<a name="(line124)"></a>lookupST <font color=Red>=</font> lookup+<a name="(line125)"></a>+<a name="(line126)"></a>+<a name="(line127)"></a>+<a name="(line128)"></a><font color=Blue>{- XML types start here -}</font>+<a name="(line129)"></a>+<a name="(line130)"></a><a name="Document"></a><font color=Blue>-- | The symbol table stored in a document holds all its general entity</font>+<a name="(line131)"></a><a name="Document"></a><font color=Blue>--   reference definitions.</font>+<a name="(line132)"></a><a name="Document"></a><font color=Green><u>data</u></font> Document i <font color=Red>=</font> Document Prolog <font color=Cyan>(</font>SymTab EntityDef<font color=Cyan>)</font> <font color=Cyan>(</font>Element i<font color=Cyan>)</font> <font color=Red>[</font>Misc<font color=Red>]</font>+<a name="(line133)"></a><a name="Prolog"></a><font color=Green><u>data</u></font> Prolog   <font color=Red>=</font> Prolog <font color=Cyan>(</font>Maybe XMLDecl<font color=Cyan>)</font> <font color=Red>[</font>Misc<font color=Red>]</font> <font color=Cyan>(</font>Maybe DocTypeDecl<font color=Cyan>)</font> <font color=Red>[</font>Misc<font color=Red>]</font>+<a name="(line134)"></a><a name="XMLDecl"></a><font color=Green><u>data</u></font> XMLDecl  <font color=Red>=</font> XMLDecl VersionInfo <font color=Cyan>(</font>Maybe EncodingDecl<font color=Cyan>)</font> <font color=Cyan>(</font>Maybe SDDecl<font color=Cyan>)</font> +<a name="(line135)"></a><a name="Misc"></a><font color=Green><u>data</u></font> Misc     <font color=Red>=</font> Comment Comment+<a name="(line136)"></a>              <font color=Red>|</font> PI ProcessingInstruction+<a name="(line137)"></a>              +<a name="(line138)"></a><a name="ProcessingInstruction"></a><font color=Green><u>type</u></font> ProcessingInstruction <font color=Red>=</font> <font color=Cyan>(</font>PITarget<font color=Cyan>,</font>String<font color=Cyan>)</font>+<a name="(line139)"></a>+<a name="(line140)"></a><a name="SDDecl"></a><font color=Green><u>type</u></font> SDDecl      <font color=Red>=</font> Bool +<a name="(line141)"></a><a name="VersionInfo"></a><font color=Green><u>type</u></font> VersionInfo <font color=Red>=</font> String +<a name="(line142)"></a><a name="Comment"></a><font color=Green><u>type</u></font> Comment     <font color=Red>=</font> String +<a name="(line143)"></a><a name="PITarget"></a><font color=Green><u>type</u></font> PITarget    <font color=Red>=</font> String +<a name="(line144)"></a>+<a name="(line145)"></a><a name="DocTypeDecl"></a><font color=Green><u>data</u></font> DocTypeDecl <font color=Red>=</font> DTD Name <font color=Cyan>(</font>Maybe ExternalID<font color=Cyan>)</font> <font color=Red>[</font>MarkupDecl<font color=Red>]</font> +<a name="(line146)"></a><a name="MarkupDecl"></a><font color=Green><u>data</u></font> MarkupDecl  <font color=Red>=</font> Element  ElementDecl+<a name="(line147)"></a>                 <font color=Red>|</font> AttList  AttListDecl+<a name="(line148)"></a>                 <font color=Red>|</font> Entity   EntityDecl+<a name="(line149)"></a>                 <font color=Red>|</font> Notation NotationDecl+<a name="(line150)"></a>                 <font color=Red>|</font> MarkupMisc Misc+<a name="(line151)"></a>+<a name="(line152)"></a><a name="ExtSubset"></a><font color=Green><u>data</u></font> ExtSubset     <font color=Red>=</font> ExtSubset <font color=Cyan>(</font>Maybe TextDecl<font color=Cyan>)</font> <font color=Red>[</font>ExtSubsetDecl<font color=Red>]</font> +<a name="(line153)"></a><a name="ExtSubsetDecl"></a><font color=Green><u>data</u></font> ExtSubsetDecl <font color=Red>=</font> ExtMarkupDecl MarkupDecl+<a name="(line154)"></a>                   <font color=Red>|</font> ExtConditionalSect ConditionalSect+<a name="(line155)"></a>+<a name="(line156)"></a><a name="Element"></a><font color=Green><u>data</u></font> Element i <font color=Red>=</font> Elem Name <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line157)"></a><a name="ElemTag"></a><font color=Green><u>data</u></font> ElemTag   <font color=Red>=</font> ElemTag Name <font color=Red>[</font>Attribute<font color=Red>]</font>	<font color=Blue>-- ^ intermediate for parsing</font>+<a name="(line158)"></a><a name="Attribute"></a><font color=Green><u>type</u></font> Attribute <font color=Red>=</font> <font color=Cyan>(</font>Name<font color=Cyan>,</font> AttValue<font color=Cyan>)</font>+<a name="(line159)"></a><a name="Content"></a><font color=Green><u>data</u></font> Content i <font color=Red>=</font> CElem <font color=Cyan>(</font>Element i<font color=Cyan>)</font> i+<a name="(line160)"></a>               <font color=Red>|</font> CString Bool CharData i+<a name="(line161)"></a>			<font color=Blue>-- ^ bool is whether whitespace is significant</font>+<a name="(line162)"></a>               <font color=Red>|</font> CRef Reference i+<a name="(line163)"></a>               <font color=Red>|</font> CMisc Misc i+<a name="(line164)"></a>+<a name="(line165)"></a><a name="info"></a>info <font color=Cyan>(</font>CElem <font color=Green><u>_</u></font> i<font color=Cyan>)</font> <font color=Red>=</font> i+<a name="(line166)"></a>info <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> i<font color=Cyan>)</font> <font color=Red>=</font> i+<a name="(line167)"></a>info <font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> i<font color=Cyan>)</font> <font color=Red>=</font> i+<a name="(line168)"></a>info <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> i<font color=Cyan>)</font> <font color=Red>=</font> i+<a name="(line169)"></a>+<a name="(line170)"></a><font color=Green><u>instance</u></font> Functor Document <font color=Green><u>where</u></font>+<a name="(line171)"></a>  fmap f <font color=Cyan>(</font>Document p st e ms<font color=Cyan>)</font> <font color=Red>=</font> Document p st <font color=Cyan>(</font>fmap f e<font color=Cyan>)</font> ms+<a name="(line172)"></a><font color=Green><u>instance</u></font> Functor Element <font color=Green><u>where</u></font>+<a name="(line173)"></a>  fmap f <font color=Cyan>(</font>Elem t <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> <font color=Red>=</font> Elem t <font color=Green><u>as</u></font> <font color=Cyan>(</font>map <font color=Cyan>(</font>fmap f<font color=Cyan>)</font> cs<font color=Cyan>)</font>+<a name="(line174)"></a><font color=Green><u>instance</u></font> Functor Content <font color=Green><u>where</u></font>+<a name="(line175)"></a>  fmap f <font color=Cyan>(</font>CElem e i<font color=Cyan>)</font>     <font color=Red>=</font> CElem <font color=Cyan>(</font>fmap f e<font color=Cyan>)</font> <font color=Cyan>(</font>f i<font color=Cyan>)</font>+<a name="(line176)"></a>  fmap f <font color=Cyan>(</font>CString b s i<font color=Cyan>)</font> <font color=Red>=</font> CString b s <font color=Cyan>(</font>f i<font color=Cyan>)</font>+<a name="(line177)"></a>  fmap f <font color=Cyan>(</font>CRef r i<font color=Cyan>)</font>      <font color=Red>=</font> CRef r <font color=Cyan>(</font>f i<font color=Cyan>)</font>+<a name="(line178)"></a>  fmap f <font color=Cyan>(</font>CMisc m i<font color=Cyan>)</font>     <font color=Red>=</font> CMisc m <font color=Cyan>(</font>f i<font color=Cyan>)</font>+<a name="(line179)"></a>+<a name="(line180)"></a><a name="ElementDecl"></a><font color=Green><u>data</u></font> ElementDecl <font color=Red>=</font> ElementDecl Name ContentSpec+<a name="(line181)"></a><a name="ContentSpec"></a><font color=Green><u>data</u></font> ContentSpec <font color=Red>=</font> EMPTY+<a name="(line182)"></a>                 <font color=Red>|</font> ANY+<a name="(line183)"></a>                 <font color=Red>|</font> Mixed Mixed+<a name="(line184)"></a>                 <font color=Red>|</font> ContentSpec CP+<a name="(line185)"></a><a name="CP"></a><font color=Green><u>data</u></font> CP <font color=Red>=</font> TagName Name Modifier+<a name="(line186)"></a>        <font color=Red>|</font> Choice <font color=Red>[</font>CP<font color=Red>]</font> Modifier+<a name="(line187)"></a>        <font color=Red>|</font> Seq <font color=Red>[</font>CP<font color=Red>]</font> Modifier +<a name="(line188)"></a><a name="Modifier"></a><font color=Green><u>data</u></font> Modifier <font color=Red>=</font> None  <font color=Blue>-- ^ Just One</font>+<a name="(line189)"></a>              <font color=Red>|</font> Query <font color=Blue>-- ^ Zero Or One</font>+<a name="(line190)"></a>              <font color=Red>|</font> Star  <font color=Blue>-- ^ Zero Or More</font>+<a name="(line191)"></a>              <font color=Red>|</font> Plus  <font color=Blue>-- ^ One Or More </font>+<a name="(line192)"></a><a name="Mixed"></a><font color=Green><u>data</u></font> Mixed <font color=Red>=</font> PCDATA+<a name="(line193)"></a>           <font color=Red>|</font> PCDATAplus <font color=Red>[</font>Name<font color=Red>]</font> +<a name="(line194)"></a>+<a name="(line195)"></a><a name="AttListDecl"></a><font color=Green><u>data</u></font> AttListDecl <font color=Red>=</font> AttListDecl Name <font color=Red>[</font>AttDef<font color=Red>]</font>+<a name="(line196)"></a><a name="AttDef"></a><font color=Green><u>data</u></font> AttDef      <font color=Red>=</font> AttDef Name AttType DefaultDecl +<a name="(line197)"></a><a name="AttType"></a><font color=Green><u>data</u></font> AttType     <font color=Red>=</font> StringType+<a name="(line198)"></a>                 <font color=Red>|</font> TokenizedType TokenizedType+<a name="(line199)"></a>                 <font color=Red>|</font> EnumeratedType EnumeratedType +<a name="(line200)"></a><a name="TokenizedType"></a><font color=Green><u>data</u></font> TokenizedType <font color=Red>=</font> ID+<a name="(line201)"></a>                   <font color=Red>|</font> IDREF+<a name="(line202)"></a>                   <font color=Red>|</font> IDREFS+<a name="(line203)"></a>                   <font color=Red>|</font> ENTITY+<a name="(line204)"></a>                   <font color=Red>|</font> ENTITIES+<a name="(line205)"></a>                   <font color=Red>|</font> NMTOKEN+<a name="(line206)"></a>                   <font color=Red>|</font> NMTOKENS +<a name="(line207)"></a><a name="EnumeratedType"></a><font color=Green><u>data</u></font> EnumeratedType <font color=Red>=</font> NotationType NotationType+<a name="(line208)"></a>                    <font color=Red>|</font> Enumeration Enumeration +<a name="(line209)"></a><a name="NotationType"></a><font color=Green><u>type</u></font> NotationType   <font color=Red>=</font> <font color=Red>[</font>Name<font color=Red>]</font>	<font color=Blue>-- nonempty list</font>+<a name="(line210)"></a><a name="Enumeration"></a><font color=Green><u>type</u></font> Enumeration    <font color=Red>=</font> <font color=Red>[</font>NmToken<font color=Red>]</font>	<font color=Blue>-- nonempty list</font>+<a name="(line211)"></a><a name="DefaultDecl"></a><font color=Green><u>data</u></font> DefaultDecl    <font color=Red>=</font> REQUIRED+<a name="(line212)"></a>                    <font color=Red>|</font> IMPLIED+<a name="(line213)"></a>                    <font color=Red>|</font> DefaultTo AttValue <font color=Cyan>(</font>Maybe FIXED<font color=Cyan>)</font> +<a name="(line214)"></a><a name="FIXED"></a><font color=Green><u>data</u></font> FIXED          <font color=Red>=</font> FIXED +<a name="(line215)"></a>+<a name="(line216)"></a><a name="ConditionalSect"></a><font color=Green><u>data</u></font> ConditionalSect <font color=Red>=</font> IncludeSect IncludeSect+<a name="(line217)"></a>                     <font color=Red>|</font> IgnoreSect IgnoreSect +<a name="(line218)"></a><a name="IncludeSect"></a><font color=Green><u>type</u></font> IncludeSect <font color=Red>=</font> <font color=Red>[</font>ExtSubsetDecl<font color=Red>]</font>+<a name="(line219)"></a><a name="IgnoreSect"></a><font color=Green><u>type</u></font> IgnoreSect  <font color=Red>=</font> <font color=Red>[</font>IgnoreSectContents<font color=Red>]</font>+<a name="(line220)"></a><a name="Ignore"></a><font color=Green><u>data</u></font> Ignore      <font color=Red>=</font> Ignore+<a name="(line221)"></a><a name="IgnoreSectContents"></a><font color=Green><u>data</u></font> IgnoreSectContents <font color=Red>=</font> IgnoreSectContents Ignore <font color=Red>[</font><font color=Cyan>(</font>IgnoreSectContents<font color=Cyan>,</font>Ignore<font color=Cyan>)</font><font color=Red>]</font> +<a name="(line222)"></a>+<a name="(line223)"></a><a name="Reference"></a><font color=Green><u>data</u></font> Reference    <font color=Red>=</font> RefEntity EntityRef+<a name="(line224)"></a>                  <font color=Red>|</font> RefChar CharRef +<a name="(line225)"></a>                  <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font> Show<font color=Cyan>)</font>+<a name="(line226)"></a><a name="EntityRef"></a><font color=Green><u>type</u></font> EntityRef    <font color=Red>=</font> Name +<a name="(line227)"></a><a name="CharRef"></a><font color=Green><u>type</u></font> CharRef      <font color=Red>=</font> Int+<a name="(line228)"></a><a name="PEReference"></a><font color=Green><u>type</u></font> PEReference  <font color=Red>=</font> Name +<a name="(line229)"></a>+<a name="(line230)"></a><a name="EntityDecl"></a><font color=Green><u>data</u></font> EntityDecl   <font color=Red>=</font> EntityGEDecl GEDecl+<a name="(line231)"></a>                  <font color=Red>|</font> EntityPEDecl PEDecl +<a name="(line232)"></a><a name="GEDecl"></a><font color=Green><u>data</u></font> GEDecl       <font color=Red>=</font> GEDecl Name EntityDef +<a name="(line233)"></a><a name="PEDecl"></a><font color=Green><u>data</u></font> PEDecl       <font color=Red>=</font> PEDecl Name PEDef +<a name="(line234)"></a><a name="EntityDef"></a><font color=Green><u>data</u></font> EntityDef    <font color=Red>=</font> DefEntityValue EntityValue+<a name="(line235)"></a>                  <font color=Red>|</font> DefExternalID ExternalID <font color=Cyan>(</font>Maybe NDataDecl<font color=Cyan>)</font> +<a name="(line236)"></a><a name="PEDef"></a><font color=Green><u>data</u></font> PEDef        <font color=Red>=</font> PEDefEntityValue EntityValue+<a name="(line237)"></a>                  <font color=Red>|</font> PEDefExternalID ExternalID <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="(line238)"></a><a name="ExternalID"></a><font color=Green><u>data</u></font> ExternalID   <font color=Red>=</font> SYSTEM SystemLiteral+<a name="(line239)"></a>                  <font color=Red>|</font> PUBLIC PubidLiteral SystemLiteral <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="(line240)"></a><a name="NDataDecl"></a><font color=Green><u>newtype</u></font> NDataDecl <font color=Red>=</font> NDATA Name  +<a name="(line241)"></a>+<a name="(line242)"></a><a name="TextDecl"></a><font color=Green><u>data</u></font> TextDecl     <font color=Red>=</font> TextDecl <font color=Cyan>(</font>Maybe VersionInfo<font color=Cyan>)</font> EncodingDecl +<a name="(line243)"></a><a name="ExtParsedEnt"></a><font color=Green><u>data</u></font> ExtParsedEnt i <font color=Red>=</font> ExtParsedEnt <font color=Cyan>(</font>Maybe TextDecl<font color=Cyan>)</font> <font color=Cyan>(</font>Content i<font color=Cyan>)</font>+<a name="(line244)"></a><a name="ExtPE"></a><font color=Green><u>data</u></font> ExtPE        <font color=Red>=</font> ExtPE <font color=Cyan>(</font>Maybe TextDecl<font color=Cyan>)</font> <font color=Red>[</font>ExtSubsetDecl<font color=Red>]</font>+<a name="(line245)"></a>+<a name="(line246)"></a><a name="NotationDecl"></a><font color=Green><u>data</u></font> NotationDecl    <font color=Red>=</font> NOTATION Name <font color=Cyan>(</font>Either ExternalID PublicID<font color=Cyan>)</font> +<a name="(line247)"></a><a name="PublicID"></a><font color=Green><u>newtype</u></font> PublicID     <font color=Red>=</font> PUBLICID PubidLiteral +<a name="(line248)"></a><a name="EncodingDecl"></a><font color=Green><u>newtype</u></font> EncodingDecl <font color=Red>=</font> EncodingDecl String +<a name="(line249)"></a>+<a name="(line250)"></a><a name="Name"></a><font color=Green><u>type</u></font> Name     <font color=Red>=</font> String		 <font color=Blue>-- non-empty string</font>+<a name="(line251)"></a><a name="Names"></a><font color=Green><u>type</u></font> Names    <font color=Red>=</font> <font color=Red>[</font>Name<font color=Red>]</font>		 <font color=Blue>-- non-empty list</font>+<a name="(line252)"></a><a name="NmToken"></a><font color=Green><u>type</u></font> NmToken  <font color=Red>=</font> String		 <font color=Blue>-- non-empty string</font>+<a name="(line253)"></a><a name="NmTokens"></a><font color=Green><u>type</u></font> NmTokens <font color=Red>=</font> <font color=Red>[</font>NmToken<font color=Red>]</font>	 <font color=Blue>-- non-empty list</font>+<a name="(line254)"></a>+<a name="(line255)"></a><a name="AttValue"></a><font color=Green><u>data</u></font> AttValue    <font color=Red>=</font> AttValue <font color=Red>[</font>Either String Reference<font color=Red>]</font>+<a name="(line256)"></a>                 <font color=Green><u>deriving</u></font> Eq+<a name="(line257)"></a><font color=Green><u>instance</u></font> Show AttValue <font color=Green><u>where</u></font>+<a name="(line258)"></a>  show <font color=Cyan>(</font>AttValue v<font color=Cyan>)</font> <font color=Red>=</font> concatMap decode v+<a name="(line259)"></a>    <font color=Green><u>where</u></font>+<a name="(line260)"></a>      decode <font color=Cyan>(</font>Left  v<font color=Cyan>)</font>               <font color=Red>=</font> v+<a name="(line261)"></a>      decode <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity ent<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;"</font><font color=Cyan>++</font>ent<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line262)"></a>      decode <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefChar cref<font color=Cyan>)</font><font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"&amp;"</font><font color=Cyan>++</font>show cref<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="(line263)"></a>+<a name="(line264)"></a><a name="EntityValue"></a><font color=Green><u>data</u></font> EntityValue <font color=Red>=</font> EntityValue <font color=Red>[</font>EV<font color=Red>]</font> <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="(line265)"></a><a name="EV"></a><font color=Green><u>data</u></font> EV <font color=Red>=</font> EVString String+<a name="(line266)"></a> <font color=Blue>--  -- | EVPERef PEReference</font>+<a name="(line267)"></a>        <font color=Red>|</font> EVRef Reference  <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="(line268)"></a><a name="PubidLiteral"></a><font color=Green><u>newtype</u></font> PubidLiteral  <font color=Red>=</font> PubidLiteral String <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="(line269)"></a><a name="SystemLiteral"></a><font color=Green><u>newtype</u></font> SystemLiteral <font color=Red>=</font> SystemLiteral String <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="(line270)"></a><a name="CharData"></a><font color=Green><u>type</u></font> CharData         <font color=Red>=</font> String +<a name="(line271)"></a><a name="CDSect"></a><font color=Green><u>type</u></font> CDSect           <font color=Red>=</font> CharData+<a name="(line272)"></a>+<a name="(line273)"></a><font color=Green><u>instance</u></font> Eq ElemTag <font color=Green><u>where</u></font>+<a name="(line274)"></a>    <font color=Cyan>(</font>ElemTag n <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Cyan>==</font> <font color=Cyan>(</font>ElemTag m <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> n<font color=Cyan>==</font>m+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Validate.html view
@@ -0,0 +1,270 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | Validate a document against a dtd.</font>+<a name="(line2)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Validate+<a name="(line3)"></a>  <font color=Cyan>(</font> validate+<a name="(line4)"></a>  <font color=Cyan>,</font> partialValidate+<a name="(line5)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line6)"></a>+<a name="(line7)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line8)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators <font color=Cyan>(</font>multi<font color=Cyan>,</font>tag<font color=Cyan>,</font>iffind<font color=Cyan>,</font>literal<font color=Cyan>,</font>none<font color=Cyan>,</font>o<font color=Cyan>)</font>+<a name="(line9)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent <font color=Cyan>(</font>attr2str<font color=Cyan>)</font>+<a name="(line10)"></a><font color=Green><u>import</u></font> Maybe <font color=Cyan>(</font>fromMaybe<font color=Cyan>,</font>isNothing<font color=Cyan>,</font>fromJust<font color=Cyan>)</font>+<a name="(line11)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>intersperse<font color=Cyan>,</font>nub<font color=Cyan>,</font><font color=Cyan>(</font><font color=Cyan>\\</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line12)"></a><font color=Green><u>import</u></font> Char <font color=Cyan>(</font>isSpace<font color=Cyan>)</font>+<a name="(line13)"></a>+<a name="(line14)"></a><font color=Magenta><em>#if __GLASGOW_HASKELL__ &gt;= 604 || __NHC__ &gt;= 118 || defined(__HUGS__)</em></font>+<a name="(line15)"></a><font color=Blue>-- emulate older finite map interface using Data.Map, if it is available</font>+<a name="(line16)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>Map <font color=Green><u>as</u></font> Map+<a name="(line17)"></a><a name="FiniteMap"></a><font color=Green><u>type</u></font> FiniteMap a b <font color=Red>=</font> Map<font color=Cyan>.</font>Map a b+<a name="(line18)"></a><a name="listToFM"></a>listToFM <font color=Red>::</font> Ord a <font color=Red>=&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> FiniteMap a b+<a name="(line19)"></a>listToFM <font color=Red>=</font> Map<font color=Cyan>.</font>fromList+<a name="(line20)"></a><a name="lookupFM"></a>lookupFM <font color=Red>::</font> Ord a <font color=Red>=&gt;</font> FiniteMap a b <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe b+<a name="(line21)"></a>lookupFM <font color=Red>=</font> flip Map<font color=Cyan>.</font>lookup+<a name="(line22)"></a><font color=Magenta><em>#elif __GLASGOW_HASKELL__ &gt;= 504 || __NHC__ &gt; 114</em></font>+<a name="(line23)"></a><font color=Blue>-- real finite map, if it is available</font>+<a name="(line24)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>FiniteMap+<a name="(line25)"></a><font color=Magenta><em>#else</em></font>+<a name="(line26)"></a><a name="FiniteMap"></a><font color=Blue>-- otherwise, a very simple and inefficient implementation of a finite map</font>+<a name="(line27)"></a><a name="FiniteMap"></a><font color=Green><u>type</u></font> FiniteMap a b <font color=Red>=</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line28)"></a>listToFM <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> <font color=Red>[</font><font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-&gt;</font> FiniteMap a b+<a name="(line29)"></a>listToFM <font color=Red>=</font> id+<a name="(line30)"></a>lookupFM <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> FiniteMap a b <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe b+<a name="(line31)"></a>lookupFM fm k <font color=Red>=</font> lookup k fm+<a name="(line32)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line33)"></a>+<a name="(line34)"></a><a name="SimpleDTD"></a><font color=Blue>-- gather appropriate information out of the DTD</font>+<a name="(line35)"></a><a name="SimpleDTD"></a><font color=Green><u>data</u></font> SimpleDTD <font color=Red>=</font> SimpleDTD+<a name="(line36)"></a>    <font color=Cyan>{</font> elements   <font color=Red>::</font> FiniteMap Name ContentSpec	<font color=Blue>-- content model of elem</font>+<a name="(line37)"></a>    <font color=Cyan>,</font> attributes <font color=Red>::</font> FiniteMap <font color=Cyan>(</font>Name<font color=Cyan>,</font>Name<font color=Cyan>)</font> AttType <font color=Blue>-- type of (elem,attr)</font>+<a name="(line38)"></a>    <font color=Cyan>,</font> required   <font color=Red>::</font> FiniteMap Name <font color=Red>[</font>Name<font color=Red>]</font>	<font color=Blue>-- required attributes of elem</font>+<a name="(line39)"></a>    <font color=Cyan>,</font> ids        <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font>Name<font color=Cyan>)</font><font color=Red>]</font>	<font color=Blue>-- all (element,attr) with ID type</font>+<a name="(line40)"></a>    <font color=Cyan>,</font> idrefs     <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>Name<font color=Cyan>,</font>Name<font color=Cyan>)</font><font color=Red>]</font>	<font color=Blue>-- all (element,attr) with IDREF type</font>+<a name="(line41)"></a>    <font color=Cyan>}</font>+<a name="(line42)"></a>+<a name="(line43)"></a><a name="simplifyDTD"></a>simplifyDTD <font color=Red>::</font> DocTypeDecl <font color=Red>-&gt;</font> SimpleDTD+<a name="(line44)"></a>simplifyDTD <font color=Cyan>(</font>DTD <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> decls<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line45)"></a>    SimpleDTD+<a name="(line46)"></a>      <font color=Cyan>{</font> elements   <font color=Red>=</font> listToFM <font color=Red>[</font> <font color=Cyan>(</font>name<font color=Cyan>,</font>content<font color=Cyan>)</font>+<a name="(line47)"></a>                              <font color=Red>|</font> Element <font color=Cyan>(</font>ElementDecl name content<font color=Cyan>)</font> <font color=Red>&lt;-</font> decls <font color=Red>]</font>+<a name="(line48)"></a>      <font color=Cyan>,</font> attributes <font color=Red>=</font> listToFM <font color=Red>[</font> <font color=Cyan>(</font><font color=Cyan>(</font>elem<font color=Cyan>,</font>attr<font color=Cyan>)</font><font color=Cyan>,</font>typ<font color=Cyan>)</font>+<a name="(line49)"></a>                              <font color=Red>|</font> AttList <font color=Cyan>(</font>AttListDecl elem attdefs<font color=Cyan>)</font> <font color=Red>&lt;-</font> decls+<a name="(line50)"></a>                              <font color=Cyan>,</font> AttDef attr typ <font color=Green><u>_</u></font> <font color=Red>&lt;-</font> attdefs <font color=Red>]</font>+<a name="(line51)"></a>      <font color=Cyan>,</font> required   <font color=Red>=</font> listToFM <font color=Red>[</font> <font color=Cyan>(</font>elem<font color=Cyan>,</font> <font color=Red>[</font> attr+<a name="(line52)"></a>                                       <font color=Red>|</font> AttDef attr <font color=Green><u>_</u></font> REQUIRED <font color=Red>&lt;-</font> attdefs <font color=Red>]</font><font color=Cyan>)</font>+<a name="(line53)"></a>                              <font color=Red>|</font> AttList <font color=Cyan>(</font>AttListDecl elem attdefs<font color=Cyan>)</font> <font color=Red>&lt;-</font> decls <font color=Red>]</font>+<a name="(line54)"></a>      <font color=Cyan>,</font> ids        <font color=Red>=</font> <font color=Red>[</font> <font color=Cyan>(</font>elem<font color=Cyan>,</font>attr<font color=Cyan>)</font>+<a name="(line55)"></a>                     <font color=Red>|</font> Element <font color=Cyan>(</font>ElementDecl elem <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>&lt;-</font> decls+<a name="(line56)"></a>                     <font color=Cyan>,</font> AttList <font color=Cyan>(</font>AttListDecl name attdefs<font color=Cyan>)</font> <font color=Red>&lt;-</font> decls+<a name="(line57)"></a>                     <font color=Cyan>,</font> elem <font color=Cyan>==</font> name+<a name="(line58)"></a>                     <font color=Cyan>,</font> AttDef attr <font color=Cyan>(</font>TokenizedType ID<font color=Cyan>)</font> <font color=Green><u>_</u></font> <font color=Red>&lt;-</font> attdefs <font color=Red>]</font>+<a name="(line59)"></a>      <font color=Cyan>,</font> idrefs     <font color=Red>=</font> []	<font color=Blue>-- not implemented</font>+<a name="(line60)"></a>      <font color=Cyan>}</font>+<a name="(line61)"></a>+<a name="(line62)"></a><a name="gives"></a><font color=Blue>-- simple auxiliary to avoid lots of if-then-else with empty else clauses.</font>+<a name="(line63)"></a>gives <font color=Red>::</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font>+<a name="(line64)"></a>True <font color=Cyan>`gives`</font> x <font color=Red>=</font> <font color=Red>[</font>x<font color=Red>]</font>+<a name="(line65)"></a>False <font color=Cyan>`gives`</font> <font color=Green><u>_</u></font> <font color=Red>=</font> []+<a name="(line66)"></a>+<a name="(line67)"></a><a name="validate"></a><font color=Blue>-- | 'validate' takes a DTD and a tagged element, and returns a list of</font>+<a name="(line68)"></a><font color=Blue>--   errors in the document with respect to its DTD.</font>+<a name="(line69)"></a><font color=Blue>--</font>+<a name="(line70)"></a><font color=Blue>--   If you have several documents to validate against a single DTD,</font>+<a name="(line71)"></a><font color=Blue>--   then you will gain efficiency by freezing-in the DTD through partial</font>+<a name="(line72)"></a><font color=Blue>--   application, e.g. @checkMyDTD = validate myDTD@.</font>+<a name="(line73)"></a>validate <font color=Red>::</font> DocTypeDecl <font color=Red>-&gt;</font> Element i <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="(line74)"></a>validate dtd' elem <font color=Red>=</font> root dtd' elem <font color=Cyan>++</font> partialValidate dtd' elem+<a name="(line75)"></a>  <font color=Green><u>where</u></font>+<a name="(line76)"></a>    root <font color=Cyan>(</font>DTD name <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Cyan>(</font>Elem name' <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line77)"></a>        <font color=Cyan>(</font>name<font color=Cyan>/=</font>name'<font color=Cyan>)</font> <font color=Cyan>`gives`</font> <font color=Cyan>(</font><font color=Magenta>"Document type should be &lt;"</font><font color=Cyan>++</font>name+<a name="(line78)"></a>                               <font color=Cyan>++</font><font color=Magenta>"&gt; but appears to be &lt;"</font><font color=Cyan>++</font>name'<font color=Cyan>++</font><font color=Magenta>"&gt;."</font><font color=Cyan>)</font>+<a name="(line79)"></a>+<a name="(line80)"></a><a name="partialValidate"></a><font color=Blue>-- | 'partialValidate' is like validate, except that it does not check that</font>+<a name="(line81)"></a><font color=Blue>--   the element type matches that of the DTD's root element.</font>+<a name="(line82)"></a>partialValidate <font color=Red>::</font> DocTypeDecl <font color=Red>-&gt;</font> Element i <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="(line83)"></a>partialValidate dtd' elem <font color=Red>=</font> valid elem <font color=Cyan>++</font> checkIDs elem+<a name="(line84)"></a>  <font color=Green><u>where</u></font>+<a name="(line85)"></a>    dtd <font color=Red>=</font> simplifyDTD dtd'+<a name="(line86)"></a>+<a name="(line87)"></a>    valid <font color=Cyan>(</font>Elem name attrs contents<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line88)"></a>        <font color=Blue>-- is the element defined in the DTD?</font>+<a name="(line89)"></a>        <font color=Green><u>let</u></font> spec <font color=Red>=</font> lookupFM <font color=Cyan>(</font>elements dtd<font color=Cyan>)</font> name <font color=Green><u>in</u></font> +<a name="(line90)"></a>        <font color=Cyan>(</font>isNothing spec<font color=Cyan>)</font> <font color=Cyan>`gives`</font> <font color=Cyan>(</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>name<font color=Cyan>++</font><font color=Magenta>"&gt; not known."</font><font color=Cyan>)</font>+<a name="(line91)"></a>        <font color=Blue>-- is each attribute mentioned only once?</font>+<a name="(line92)"></a>        <font color=Cyan>++</font> <font color=Cyan>(</font><font color=Green><u>let</u></font> dups <font color=Red>=</font> duplicates <font color=Cyan>(</font>map fst attrs<font color=Cyan>)</font> <font color=Green><u>in</u></font>+<a name="(line93)"></a>            not <font color=Cyan>(</font>null dups<font color=Cyan>)</font> <font color=Cyan>`gives`</font>+<a name="(line94)"></a>               <font color=Cyan>(</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>name<font color=Cyan>++</font><font color=Magenta>"&gt; has duplicate attributes: "</font>+<a name="(line95)"></a>                <font color=Cyan>++</font>concat <font color=Cyan>(</font>intersperse <font color=Magenta>","</font> dups<font color=Cyan>)</font><font color=Cyan>++</font><font color=Magenta>"."</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line96)"></a>        <font color=Blue>-- does each attribute belong to this element?  value is in range?</font>+<a name="(line97)"></a>        <font color=Cyan>++</font> concatMap <font color=Cyan>(</font>checkAttr name<font color=Cyan>)</font> attrs+<a name="(line98)"></a>        <font color=Blue>-- are all required attributes present?</font>+<a name="(line99)"></a>        <font color=Cyan>++</font> concatMap <font color=Cyan>(</font>checkRequired name attrs<font color=Cyan>)</font>+<a name="(line100)"></a>                     <font color=Cyan>(</font>fromMaybe [] <font color=Cyan>(</font>lookupFM <font color=Cyan>(</font>required dtd<font color=Cyan>)</font> name<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line101)"></a>        <font color=Blue>-- are its children in a permissible sequence?</font>+<a name="(line102)"></a>        <font color=Cyan>++</font> checkContentSpec name <font color=Cyan>(</font>fromMaybe ANY spec<font color=Cyan>)</font> contents+<a name="(line103)"></a>        <font color=Blue>-- now recursively check the element children</font>+<a name="(line104)"></a>        <font color=Cyan>++</font> concatMap valid <font color=Red>[</font> elem <font color=Red>|</font> CElem elem <font color=Green><u>_</u></font> <font color=Red>&lt;-</font> contents <font color=Red>]</font>+<a name="(line105)"></a>+<a name="(line106)"></a>    checkAttr elem <font color=Cyan>(</font>attr<font color=Cyan>,</font> val<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line107)"></a>        <font color=Green><u>let</u></font> typ <font color=Red>=</font> lookupFM <font color=Cyan>(</font>attributes dtd<font color=Cyan>)</font> <font color=Cyan>(</font>elem<font color=Cyan>,</font>attr<font color=Cyan>)</font>+<a name="(line108)"></a>            attval <font color=Red>=</font> attr2str val <font color=Green><u>in</u></font>+<a name="(line109)"></a>        <font color=Green><u>if</u></font> isNothing typ <font color=Green><u>then</u></font> <font color=Red>[</font><font color=Magenta>"Attribute \""</font><font color=Cyan>++</font>attr+<a name="(line110)"></a>                               <font color=Cyan>++</font><font color=Magenta>"\" not known for element &lt;"</font><font color=Cyan>++</font>elem<font color=Cyan>++</font><font color=Magenta>"&gt;."</font><font color=Red>]</font>+<a name="(line111)"></a>        <font color=Green><u>else</u></font>+<a name="(line112)"></a>          <font color=Green><u>case</u></font> fromJust typ <font color=Green><u>of</u></font>+<a name="(line113)"></a>            EnumeratedType e <font color=Red>-&gt;</font>+<a name="(line114)"></a>              <font color=Green><u>case</u></font> e <font color=Green><u>of</u></font>+<a name="(line115)"></a>                Enumeration es <font color=Red>-&gt;</font>+<a name="(line116)"></a>                    <font color=Cyan>(</font>not <font color=Cyan>(</font>attval <font color=Cyan>`</font>Prelude<font color=Cyan>.</font>elem<font color=Cyan>`</font> es<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`gives`</font>+<a name="(line117)"></a>                          <font color=Cyan>(</font><font color=Magenta>"Value \""</font><font color=Cyan>++</font>attval<font color=Cyan>++</font><font color=Magenta>"\" of attribute \""</font>+<a name="(line118)"></a>                           <font color=Cyan>++</font>attr<font color=Cyan>++</font><font color=Magenta>"\" in element &lt;"</font><font color=Cyan>++</font>elem+<a name="(line119)"></a>                           <font color=Cyan>++</font><font color=Magenta>"&gt; is not in the required enumeration range: "</font>+<a name="(line120)"></a>                           <font color=Cyan>++</font>unwords es<font color=Cyan>)</font>+<a name="(line121)"></a>                <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> []+<a name="(line122)"></a>            <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> []+<a name="(line123)"></a>+<a name="(line124)"></a>    checkRequired elem attrs req <font color=Red>=</font>+<a name="(line125)"></a>        <font color=Cyan>(</font>not <font color=Cyan>(</font>req <font color=Cyan>`</font>Prelude<font color=Cyan>.</font>elem<font color=Cyan>`</font> map fst attrs<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>`gives`</font>+<a name="(line126)"></a>            <font color=Cyan>(</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>elem<font color=Cyan>++</font><font color=Magenta>"&gt; requires the attribute \""</font><font color=Cyan>++</font>req+<a name="(line127)"></a>             <font color=Cyan>++</font><font color=Magenta>"\" but it is missing."</font><font color=Cyan>)</font>+<a name="(line128)"></a>+<a name="(line129)"></a>    checkContentSpec elem ANY <font color=Green><u>_</u></font> <font color=Red>=</font> []+<a name="(line130)"></a>    checkContentSpec elem EMPTY [] <font color=Red>=</font> []+<a name="(line131)"></a>    checkContentSpec elem EMPTY <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line132)"></a>        <font color=Red>[</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>elem<font color=Cyan>++</font><font color=Magenta>"&gt; is not empty but should be."</font><font color=Red>]</font>+<a name="(line133)"></a>    checkContentSpec elem <font color=Cyan>(</font>Mixed PCDATA<font color=Cyan>)</font> cs <font color=Red>=</font> concatMap <font color=Cyan>(</font>checkMixed elem []<font color=Cyan>)</font> cs+<a name="(line134)"></a>    checkContentSpec elem <font color=Cyan>(</font>Mixed <font color=Cyan>(</font>PCDATAplus names<font color=Cyan>)</font><font color=Cyan>)</font> cs <font color=Red>=</font>+<a name="(line135)"></a>        concatMap <font color=Cyan>(</font>checkMixed elem names<font color=Cyan>)</font> cs+<a name="(line136)"></a>    checkContentSpec elem <font color=Cyan>(</font>ContentSpec cp<font color=Cyan>)</font> cs <font color=Red>=</font> excludeText elem cs <font color=Cyan>++</font>+<a name="(line137)"></a>        <font color=Cyan>(</font><font color=Green><u>let</u></font> <font color=Cyan>(</font>errs<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> checkCP elem cp <font color=Cyan>(</font>flatten cs<font color=Cyan>)</font> <font color=Green><u>in</u></font>+<a name="(line138)"></a>         <font color=Green><u>case</u></font> rest <font color=Green><u>of</u></font> [] <font color=Red>-&gt;</font> errs+<a name="(line139)"></a>                      <font color=Green><u>_</u></font>  <font color=Red>-&gt;</font> errs<font color=Cyan>++</font><font color=Red>[</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>elem<font color=Cyan>++</font><font color=Magenta>"&gt; contains extra "</font>+<a name="(line140)"></a>                                  <font color=Cyan>++</font><font color=Magenta>"elements beyond its content spec."</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line141)"></a>+<a name="(line142)"></a>    checkMixed elem permitted <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem name <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>+<a name="(line143)"></a>        <font color=Red>|</font> not <font color=Cyan>(</font>name <font color=Cyan>`</font>Prelude<font color=Cyan>.</font>elem<font color=Cyan>`</font> permitted<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line144)"></a>            <font color=Red>[</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>elem<font color=Cyan>++</font><font color=Magenta>"&gt; contains an element &lt;"</font><font color=Cyan>++</font>name+<a name="(line145)"></a>             <font color=Cyan>++</font><font color=Magenta>"&gt; but should not."</font><font color=Red>]</font>+<a name="(line146)"></a>    checkMixed elem permitted <font color=Green><u>_</u></font> <font color=Red>=</font> []+<a name="(line147)"></a>+<a name="(line148)"></a>    flatten <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem name <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font> cs<font color=Cyan>)</font> <font color=Red>=</font> name<font color=Red><b>:</b></font> flatten cs+<a name="(line149)"></a>    flatten <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font> cs<font color=Cyan>)</font>                       <font color=Red>=</font> flatten cs+<a name="(line150)"></a>    flatten []                            <font color=Red>=</font> []+<a name="(line151)"></a>+<a name="(line152)"></a>    excludeText elem <font color=Cyan>(</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font> cs<font color=Cyan>)</font> <font color=Red>=</font> excludeText elem cs+<a name="(line153)"></a>    excludeText elem <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font> cs<font color=Cyan>)</font> <font color=Red>=</font> excludeText elem cs+<a name="(line154)"></a>    excludeText elem <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red><b>:</b></font> cs<font color=Cyan>)</font> <font color=Red>|</font> all isSpace s <font color=Red>=</font> excludeText elem cs+<a name="(line155)"></a>    excludeText elem <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font>  cs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line156)"></a>        <font color=Red>[</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>elem<font color=Cyan>++</font><font color=Magenta>"&gt; contains text/references but should not."</font><font color=Red>]</font>+<a name="(line157)"></a>    excludeText elem [] <font color=Red>=</font> []+<a name="(line158)"></a>+<a name="(line159)"></a>    <font color=Blue>-- This is a little parser really.  Returns any errors, plus the remainder</font>+<a name="(line160)"></a>    <font color=Blue>-- of the input string.</font>+<a name="(line161)"></a>    checkCP <font color=Red>::</font> Name <font color=Red>-&gt;</font> CP <font color=Red>-&gt;</font> <font color=Red>[</font>Name<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Red>[</font>String<font color=Red>]</font><font color=Cyan>,</font><font color=Red>[</font>Name<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line162)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n None<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> []<font color=Cyan>)</font>+<a name="(line163)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n None<font color=Cyan>)</font> <font color=Cyan>(</font>n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line164)"></a>        <font color=Red>|</font> n<font color=Cyan>==</font>n'     <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line165)"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line166)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n Query<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="(line167)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n Query<font color=Cyan>)</font> <font color=Cyan>(</font>n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line168)"></a>        <font color=Red>|</font> n<font color=Cyan>==</font>n'     <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line169)"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line170)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n Star<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="(line171)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n Star<font color=Cyan>)</font> <font color=Cyan>(</font>n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line172)"></a>        <font color=Red>|</font> n<font color=Cyan>==</font>n'     <font color=Red>=</font> checkCP elem <font color=Cyan>(</font>TagName n Star<font color=Cyan>)</font> ns+<a name="(line173)"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line174)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n Plus<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> []<font color=Cyan>)</font>+<a name="(line175)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>TagName n Plus<font color=Cyan>)</font> <font color=Cyan>(</font>n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line176)"></a>        <font color=Red>|</font> n<font color=Cyan>==</font>n'     <font color=Red>=</font> checkCP elem <font color=Cyan>(</font>TagName n Star<font color=Cyan>)</font> ns+<a name="(line177)"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> n'<font color=Red><b>:</b></font>ns<font color=Cyan>)</font>+<a name="(line178)"></a> <font color=Blue>-- omit this clause, to permit (a?|b?) as a valid but empty choice</font>+<a name="(line179)"></a> <font color=Blue>-- checkCP elem cp@(Choice cps None) [] = (cpError elem cp, [])</font>+<a name="(line180)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Choice cps None<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line181)"></a>        <font color=Green><u>let</u></font> next <font color=Red>=</font> choice elem ns cps <font color=Green><u>in</u></font>+<a name="(line182)"></a>        <font color=Green><u>if</u></font> null next <font color=Green><u>then</u></font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line183)"></a>        <font color=Green><u>else</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> head next<font color=Cyan>)</font>	<font color=Blue>-- choose the first alternative with no errors</font>+<a name="(line184)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Choice cps Query<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="(line185)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Choice cps Query<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line186)"></a>        <font color=Green><u>let</u></font> next <font color=Red>=</font> choice elem ns cps <font color=Green><u>in</u></font>+<a name="(line187)"></a>        <font color=Green><u>if</u></font> null next <font color=Green><u>then</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>ns<font color=Cyan>)</font>+<a name="(line188)"></a>        <font color=Green><u>else</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> head next<font color=Cyan>)</font>+<a name="(line189)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Choice cps Star<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="(line190)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Choice cps Star<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line191)"></a>        <font color=Green><u>let</u></font> next <font color=Red>=</font> choice elem ns cps <font color=Green><u>in</u></font>+<a name="(line192)"></a>        <font color=Green><u>if</u></font> null next <font color=Green><u>then</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>ns<font color=Cyan>)</font>+<a name="(line193)"></a>        <font color=Green><u>else</u></font> checkCP elem <font color=Cyan>(</font>Choice cps Star<font color=Cyan>)</font> <font color=Cyan>(</font>head next<font color=Cyan>)</font>+<a name="(line194)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Choice cps Plus<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> []<font color=Cyan>)</font>+<a name="(line195)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Choice cps Plus<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line196)"></a>        <font color=Green><u>let</u></font> next <font color=Red>=</font> choice elem ns cps <font color=Green><u>in</u></font>+<a name="(line197)"></a>        <font color=Green><u>if</u></font> null next <font color=Green><u>then</u></font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line198)"></a>        <font color=Green><u>else</u></font> checkCP elem <font color=Cyan>(</font>Choice cps Star<font color=Cyan>)</font> <font color=Cyan>(</font>head next<font color=Cyan>)</font>+<a name="(line199)"></a> <font color=Blue>-- omit this clause, to permit (a?,b?) as a valid but empty sequence</font>+<a name="(line200)"></a> <font color=Blue>-- checkCP elem cp@(Seq cps None) [] = (cpError elem cp, [])</font>+<a name="(line201)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Seq cps None<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line202)"></a>        <font color=Green><u>let</u></font> <font color=Cyan>(</font>errs<font color=Cyan>,</font>next<font color=Cyan>)</font> <font color=Red>=</font> sequence elem ns cps <font color=Green><u>in</u></font>+<a name="(line203)"></a>        <font color=Green><u>if</u></font> null errs <font color=Green><u>then</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>next<font color=Cyan>)</font>+<a name="(line204)"></a>        <font color=Green><u>else</u></font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>++</font>errs<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line205)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Seq cps Query<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="(line206)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Seq cps Query<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line207)"></a>        <font color=Green><u>let</u></font> <font color=Cyan>(</font>errs<font color=Cyan>,</font>next<font color=Cyan>)</font> <font color=Red>=</font> sequence elem ns cps <font color=Green><u>in</u></font>+<a name="(line208)"></a>        <font color=Green><u>if</u></font> null errs <font color=Green><u>then</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>next<font color=Cyan>)</font>+<a name="(line209)"></a>        <font color=Green><u>else</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line210)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Seq cps Star<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="(line211)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Seq cps Star<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line212)"></a>        <font color=Green><u>let</u></font> <font color=Cyan>(</font>errs<font color=Cyan>,</font>next<font color=Cyan>)</font> <font color=Red>=</font> sequence elem ns cps <font color=Green><u>in</u></font>+<a name="(line213)"></a>        <font color=Green><u>if</u></font> null errs <font color=Green><u>then</u></font> checkCP elem <font color=Cyan>(</font>Seq cps Star<font color=Cyan>)</font> next+<a name="(line214)"></a>        <font color=Green><u>else</u></font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line215)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Seq cps Plus<font color=Cyan>)</font> [] <font color=Red>=</font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>,</font> []<font color=Cyan>)</font>+<a name="(line216)"></a>    checkCP elem cp<font color=Red>@</font><font color=Cyan>(</font>Seq cps Plus<font color=Cyan>)</font> ns <font color=Red>=</font>+<a name="(line217)"></a>        <font color=Green><u>let</u></font> <font color=Cyan>(</font>errs<font color=Cyan>,</font>next<font color=Cyan>)</font> <font color=Red>=</font> sequence elem ns cps <font color=Green><u>in</u></font>+<a name="(line218)"></a>        <font color=Green><u>if</u></font> null errs <font color=Green><u>then</u></font> checkCP elem <font color=Cyan>(</font>Seq cps Star<font color=Cyan>)</font> next+<a name="(line219)"></a>        <font color=Green><u>else</u></font> <font color=Cyan>(</font>cpError elem cp<font color=Cyan>++</font>errs<font color=Cyan>,</font> ns<font color=Cyan>)</font>+<a name="(line220)"></a>+<a name="(line221)"></a>    choice elem ns cps <font color=Red>=</font>  <font color=Blue>-- return only those parses that don't give any errors</font>+<a name="(line222)"></a>        <font color=Red>[</font> rem <font color=Red>|</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>rem<font color=Cyan>)</font> <font color=Red>&lt;-</font> map <font color=Cyan>(</font><font color=Red>\</font>cp<font color=Red>-&gt;</font> checkCP elem <font color=Cyan>(</font>definite cp<font color=Cyan>)</font> ns<font color=Cyan>)</font> cps <font color=Red>]</font>+<a name="(line223)"></a>        <font color=Green><u>where</u></font> definite <font color=Cyan>(</font>TagName n Query<font color=Cyan>)</font>  <font color=Red>=</font> TagName n None+<a name="(line224)"></a>              definite <font color=Cyan>(</font>Choice cps Query<font color=Cyan>)</font> <font color=Red>=</font> Choice cps None+<a name="(line225)"></a>              definite <font color=Cyan>(</font>Seq cps Query<font color=Cyan>)</font>    <font color=Red>=</font> Seq cps None+<a name="(line226)"></a>              definite <font color=Cyan>(</font>TagName n Star<font color=Cyan>)</font>   <font color=Red>=</font> TagName n Plus+<a name="(line227)"></a>              definite <font color=Cyan>(</font>Choice cps Star<font color=Cyan>)</font>  <font color=Red>=</font> Choice cps Plus+<a name="(line228)"></a>              definite <font color=Cyan>(</font>Seq cps Star<font color=Cyan>)</font>     <font color=Red>=</font> Seq cps Plus+<a name="(line229)"></a>              definite x                  <font color=Red>=</font> x+<a name="(line230)"></a>    sequence elem ns cps <font color=Red>=</font>  <font color=Blue>-- accumulate errors down the sequence</font>+<a name="(line231)"></a>        foldl <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>es<font color=Cyan>,</font>ns<font color=Cyan>)</font> cp<font color=Red>-&gt;</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>es'<font color=Cyan>,</font>ns'<font color=Cyan>)</font> <font color=Red>=</font> checkCP elem cp ns+<a name="(line232)"></a>                             <font color=Green><u>in</u></font> <font color=Cyan>(</font>es<font color=Cyan>++</font>es'<font color=Cyan>,</font> ns'<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line233)"></a>              <font color=Cyan>(</font>[]<font color=Cyan>,</font>ns<font color=Cyan>)</font> cps+<a name="(line234)"></a>+<a name="(line235)"></a>    checkIDs elem <font color=Red>=</font>+<a name="(line236)"></a>        <font color=Green><u>let</u></font> celem <font color=Red>=</font> CElem elem undefined+<a name="(line237)"></a>            showAttr a <font color=Red>=</font> iffind a literal none+<a name="(line238)"></a>            idElems <font color=Red>=</font> concatMap <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>name<font color=Cyan>,</font>at<font color=Cyan>)</font><font color=Red>-&gt;</font> multi <font color=Cyan>(</font>showAttr at <font color=Cyan>`o`</font> tag name<font color=Cyan>)</font>+<a name="(line239)"></a>                                                    celem<font color=Cyan>)</font>+<a name="(line240)"></a>                                <font color=Cyan>(</font>ids dtd<font color=Cyan>)</font>+<a name="(line241)"></a>            badIds  <font color=Red>=</font> duplicates <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Red>-&gt;</font>s<font color=Cyan>)</font> idElems<font color=Cyan>)</font>+<a name="(line242)"></a>        <font color=Green><u>in</u></font> not <font color=Cyan>(</font>null badIds<font color=Cyan>)</font> <font color=Cyan>`gives`</font>+<a name="(line243)"></a>               <font color=Cyan>(</font><font color=Magenta>"These attribute values of type ID are not unique: "</font>+<a name="(line244)"></a>                <font color=Cyan>++</font>concat <font color=Cyan>(</font>intersperse <font color=Magenta>","</font> badIds<font color=Cyan>)</font><font color=Cyan>++</font><font color=Magenta>"."</font><font color=Cyan>)</font>+<a name="(line245)"></a>+<a name="(line246)"></a>+<a name="(line247)"></a><a name="cpError"></a>cpError <font color=Red>::</font> Name <font color=Red>-&gt;</font> CP <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="(line248)"></a>cpError elem cp <font color=Red>=</font>+<a name="(line249)"></a>    <font color=Red>[</font><font color=Magenta>"Element &lt;"</font><font color=Cyan>++</font>elem<font color=Cyan>++</font><font color=Magenta>"&gt; should contain "</font><font color=Cyan>++</font>display cp<font color=Cyan>++</font><font color=Magenta>" but does not."</font><font color=Red>]</font>+<a name="(line250)"></a>+<a name="(line251)"></a>+<a name="(line252)"></a><a name="display"></a>display <font color=Red>::</font> CP <font color=Red>-&gt;</font> String+<a name="(line253)"></a>display <font color=Cyan>(</font>TagName name mod<font color=Cyan>)</font> <font color=Red>=</font> name <font color=Cyan>++</font> modifier mod+<a name="(line254)"></a>display <font color=Cyan>(</font>Choice cps mod<font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"("</font> <font color=Cyan>++</font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>"|"</font> <font color=Cyan>(</font>map display cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line255)"></a>                             <font color=Cyan>++</font> <font color=Magenta>")"</font> <font color=Cyan>++</font> modifier mod+<a name="(line256)"></a>display <font color=Cyan>(</font>Seq cps mod<font color=Cyan>)</font>      <font color=Red>=</font> <font color=Magenta>"("</font> <font color=Cyan>++</font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>","</font> <font color=Cyan>(</font>map display cps<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line257)"></a>                             <font color=Cyan>++</font> <font color=Magenta>")"</font> <font color=Cyan>++</font> modifier mod+<a name="(line258)"></a>+<a name="(line259)"></a><a name="modifier"></a>modifier <font color=Red>::</font> Modifier <font color=Red>-&gt;</font> String+<a name="(line260)"></a>modifier None  <font color=Red>=</font> <font color=Magenta>""</font>+<a name="(line261)"></a>modifier Query <font color=Red>=</font> <font color=Magenta>"?"</font>+<a name="(line262)"></a>modifier Star  <font color=Red>=</font> <font color=Magenta>"*"</font>+<a name="(line263)"></a>modifier Plus  <font color=Red>=</font> <font color=Magenta>"+"</font>+<a name="(line264)"></a>+<a name="(line265)"></a><a name="duplicates"></a>duplicates <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font>+<a name="(line266)"></a>duplicates xs <font color=Red>=</font> xs <font color=Cyan>\\</font> <font color=Cyan>(</font>nub xs<font color=Cyan>)</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Verbatim.html view
@@ -0,0 +1,95 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>{- |+<a name="(line2)"></a>   Maintainer  :  simons@cryp.to+<a name="(line3)"></a>   Stability   :  experimental+<a name="(line4)"></a>   Portability :  portable+<a name="(line5)"></a>+<a name="(line6)"></a>   The preferred method for rendering a 'Document' or single 'Content'+<a name="(line7)"></a>   is by using the pretty printing facility defined in "Pretty".+<a name="(line8)"></a>   Pretty-printing does not work well for cases, however, where the+<a name="(line9)"></a>   formatting in the XML document is significant. Examples of this+<a name="(line10)"></a>   case are XHTML's @\&lt;pre\&gt;@ tag, Docbook's @\&lt;literallayout\&gt;@ tag,+<a name="(line11)"></a>   and many more.+<a name="(line12)"></a>+<a name="(line13)"></a>   Theoretically, the document author could avoid this problem by+<a name="(line14)"></a>   wrapping the contents of these tags in a \&lt;![CDATA[...]]\&gt; section,+<a name="(line15)"></a>   but often this is not practical, for instance when the+<a name="(line16)"></a>   literal-layout section contains other elements. Finally, program+<a name="(line17)"></a>   writers could manually format these elements by transforming them+<a name="(line18)"></a>   into a 'literal' string in their 'CFliter', etc., but this is+<a name="(line19)"></a>   annoying to do and prone to omissions and formatting errors.+<a name="(line20)"></a>+<a name="(line21)"></a>   As an alternative, this module provides the function 'verbatim',+<a name="(line22)"></a>   which will format XML 'Content' as a 'String' while retaining the+<a name="(line23)"></a>   formatting of the input document unchanged.+<a name="(line24)"></a>+<a name="(line25)"></a>   /Know problems/:+<a name="(line26)"></a>+<a name="(line27)"></a>    * HaXml's parser eats line feeds between two tags.+<a name="(line28)"></a>+<a name="(line29)"></a>    * 'Attribute's should be formatted by making them an instance of+<a name="(line30)"></a>      'Verbatim' as well, but since an 'Attribute' is just a tuple,+<a name="(line31)"></a>      not a full data type, the helper function 'verbAttr' must be+<a name="(line32)"></a>      used instead.+<a name="(line33)"></a>+<a name="(line34)"></a>    * 'CMisc' is not yet supported.+<a name="(line35)"></a>+<a name="(line36)"></a>    * 'Element's, which contain no content, are formatted as+<a name="(line37)"></a>       @\&lt;element-name\/\&gt;@, even if they were not defined as being of+<a name="(line38)"></a>       type @EMPTY@. In XML this perfectly alright, but in SGML it is+<a name="(line39)"></a>       not. Those, who wish to use 'verbatim' to format parts of say+<a name="(line40)"></a>       an HTML page will have to (a) replace problematic elements by+<a name="(line41)"></a>       'literal's /before/ running 'verbatim' or (b) use a second+<a name="(line42)"></a>       search-and-replace stage to fix this.+<a name="(line43)"></a> -}</font>+<a name="(line44)"></a>+<a name="(line45)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Green><u>where</u></font>+<a name="(line46)"></a>+<a name="(line47)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line48)"></a>+<a name="(line49)"></a><font color=Blue>-- |This class promises that the function 'verbatim' knows how to</font>+<a name="(line50)"></a><font color=Blue>-- format this data type into a string without changing the</font>+<a name="(line51)"></a><font color=Blue>-- formatting.</font>+<a name="(line52)"></a>+<a name="(line53)"></a><a name="Verbatim"></a><font color=Green><u>class</u></font> Verbatim a <font color=Green><u>where</u></font>+<a name="(line54)"></a>    verbatim <font color=Red>::</font> a <font color=Red>-&gt;</font> String+<a name="(line55)"></a>+<a name="(line56)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>Verbatim a<font color=Cyan>)</font> <font color=Red>=&gt;</font> Verbatim <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>+<a name="(line57)"></a>    verbatim  <font color=Red>=</font> concat <font color=Cyan>.</font> <font color=Cyan>(</font>map verbatim<font color=Cyan>)</font>+<a name="(line58)"></a>+<a name="(line59)"></a><font color=Green><u>instance</u></font> Verbatim Char <font color=Green><u>where</u></font>+<a name="(line60)"></a>    verbatim c <font color=Red>=</font> <font color=Red>[</font>c<font color=Red>]</font>+<a name="(line61)"></a>+<a name="(line62)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>Verbatim a<font color=Cyan>,</font> Verbatim b<font color=Cyan>)</font> <font color=Red>=&gt;</font> Verbatim <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line63)"></a>    verbatim <font color=Cyan>(</font>Left v<font color=Cyan>)</font>  <font color=Red>=</font> verbatim v+<a name="(line64)"></a>    verbatim <font color=Cyan>(</font>Right v<font color=Cyan>)</font> <font color=Red>=</font> verbatim v+<a name="(line65)"></a>+<a name="(line66)"></a><font color=Green><u>instance</u></font> Verbatim <font color=Cyan>(</font>Content i<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line67)"></a>    verbatim <font color=Cyan>(</font>CElem c <font color=Green><u>_</u></font><font color=Cyan>)</font>     <font color=Red>=</font> verbatim c+<a name="(line68)"></a>    verbatim <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> c <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> c+<a name="(line69)"></a>    verbatim <font color=Cyan>(</font>CRef c <font color=Green><u>_</u></font><font color=Cyan>)</font>      <font color=Red>=</font> verbatim c+<a name="(line70)"></a>    verbatim <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>     <font color=Red>=</font> error <font color=Magenta>"NYI: verbatim not defined for CMisc"</font>+<a name="(line71)"></a>+<a name="(line72)"></a><font color=Green><u>instance</u></font> Verbatim <font color=Cyan>(</font>Element i<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line73)"></a>    verbatim <font color=Cyan>(</font>Elem nam att []<font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;"</font> <font color=Cyan>++</font> nam <font color=Cyan>++</font> <font color=Cyan>(</font>concat <font color=Cyan>.</font> <font color=Cyan>(</font>map verbAttr<font color=Cyan>)</font><font color=Cyan>)</font> att+<a name="(line74)"></a>                                   <font color=Cyan>++</font> <font color=Magenta>"/&gt;"</font>+<a name="(line75)"></a>    verbatim <font color=Cyan>(</font>Elem nam att cont<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&lt;"</font> <font color=Cyan>++</font> nam <font color=Cyan>++</font> <font color=Cyan>(</font>concat <font color=Cyan>.</font> <font color=Cyan>(</font>map verbAttr<font color=Cyan>)</font><font color=Cyan>)</font> att+<a name="(line76)"></a>                                   <font color=Cyan>++</font> <font color=Magenta>"&gt;"</font> <font color=Cyan>++</font> verbatim cont <font color=Cyan>++</font> <font color=Magenta>"&lt;/"</font> <font color=Cyan>++</font> nam <font color=Cyan>++</font> <font color=Magenta>"&gt;"</font>+<a name="(line77)"></a>+<a name="(line78)"></a><font color=Green><u>instance</u></font> Verbatim Reference <font color=Green><u>where</u></font>+<a name="(line79)"></a>    verbatim <font color=Cyan>(</font>RefEntity r<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;"</font> <font color=Cyan>++</font> verbatim r <font color=Cyan>++</font> <font color=Magenta>";"</font>+<a name="(line80)"></a>    verbatim <font color=Cyan>(</font>RefChar c<font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&amp;#"</font> <font color=Cyan>++</font> show c <font color=Cyan>++</font> <font color=Magenta>";"</font>+<a name="(line81)"></a>+<a name="(line82)"></a>+<a name="(line83)"></a><font color=Blue>-- |This is a helper function is required because Haskell does not</font>+<a name="(line84)"></a><font color=Blue>-- allow to make an ordinary tuple (like 'Attribute') an instance of a</font>+<a name="(line85)"></a><font color=Blue>-- class. The resulting output will preface the actual attribute with</font>+<a name="(line86)"></a><font color=Blue>-- a single blank so that lists of 'Attribute's can be handled</font>+<a name="(line87)"></a><font color=Blue>-- implicitly by the definition for lists of 'Verbatim' data types.</font>+<a name="(line88)"></a>+<a name="(line89)"></a><a name="verbAttr"></a>verbAttr <font color=Red>::</font> Attribute <font color=Red>-&gt;</font> String+<a name="(line90)"></a>verbAttr <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue v<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>" "</font> <font color=Cyan>++</font> n <font color=Cyan>++</font> <font color=Magenta>"=\""</font> <font color=Cyan>++</font> verbatim v <font color=Cyan>++</font> <font color=Magenta>"\""</font>+<a name="(line91)"></a>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Wrappers.html view
@@ -0,0 +1,65 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers+<a name="(line2)"></a>  <font color=Cyan>(</font> fix2Args+<a name="(line3)"></a>  <font color=Cyan>,</font> processXmlWith+<a name="(line4)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line5)"></a>+<a name="(line6)"></a><font color=Blue>-- imports required for processXmlWith and fix2Args</font>+<a name="(line7)"></a><font color=Green><u>import</u></font> System+<a name="(line8)"></a><font color=Green><u>import</u></font> IO+<a name="(line9)"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>isSuffixOf<font color=Cyan>)</font>+<a name="(line10)"></a>+<a name="(line11)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types       <font color=Cyan>(</font>Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font>Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line12)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators <font color=Cyan>(</font>CFilter<font color=Cyan>)</font>+<a name="(line13)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn        <font color=Cyan>(</font>Posn<font color=Cyan>,</font>posInNewCxt<font color=Cyan>)</font>+<a name="(line14)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse       <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>+<a name="(line15)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse  <font color=Cyan>(</font>htmlParse<font color=Cyan>)</font>+<a name="(line16)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP<font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="(line17)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ  <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="(line18)"></a>+<a name="(line19)"></a>+<a name="(line20)"></a><a name="fix2Args"></a><font color=Blue>-- | This useful auxiliary checks the commandline arguments for two</font>+<a name="(line21)"></a><font color=Blue>--   filenames, the input and output file respectively.  If either</font>+<a name="(line22)"></a><font color=Blue>--   is missing, it is replaced by '-', which can be interpreted by the</font>+<a name="(line23)"></a><font color=Blue>--   caller as stdin and\/or stdout.</font>+<a name="(line24)"></a>fix2Args <font color=Red>::</font> IO <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>+<a name="(line25)"></a>fix2Args <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line26)"></a>  args <font color=Red>&lt;-</font> getArgs+<a name="(line27)"></a>  <font color=Green><u>case</u></font> length args <font color=Green><u>of</u></font>+<a name="(line28)"></a>    <font color=Magenta>0</font> <font color=Red>-&gt;</font> return <font color=Cyan>(</font><font color=Magenta>"-"</font><font color=Cyan>,</font>     <font color=Magenta>"-"</font><font color=Cyan>)</font>+<a name="(line29)"></a>    <font color=Magenta>1</font> <font color=Red>-&gt;</font> return <font color=Cyan>(</font>args<font color=Cyan>!!</font><font color=Magenta>0</font><font color=Cyan>,</font> <font color=Magenta>"-"</font><font color=Cyan>)</font>+<a name="(line30)"></a>    <font color=Magenta>2</font> <font color=Red>-&gt;</font> return <font color=Cyan>(</font>args<font color=Cyan>!!</font><font color=Magenta>0</font><font color=Cyan>,</font> args<font color=Cyan>!!</font><font color=Magenta>1</font><font color=Cyan>)</font>+<a name="(line31)"></a>    <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Green><u>do</u></font> prog <font color=Red>&lt;-</font> getProgName+<a name="(line32)"></a>            putStrLn <font color=Cyan>(</font><font color=Magenta>"Usage: "</font><font color=Cyan>++</font>prog<font color=Cyan>++</font><font color=Magenta>" [infile] [outfile]"</font><font color=Cyan>)</font>+<a name="(line33)"></a>            exitFailure+<a name="(line34)"></a>+<a name="(line35)"></a>+<a name="(line36)"></a><a name="processXmlWith"></a><font color=Blue>-- | The wrapper @processXmlWith@ returns an IO () computation</font>+<a name="(line37)"></a><font color=Blue>--   that collects the filenames (or stdin\/stdout) to use when</font>+<a name="(line38)"></a><font color=Blue>--   reading\/writing XML documents.  Its CFilter argument</font>+<a name="(line39)"></a><font color=Blue>--   is applied to transform the XML document from the input and</font>+<a name="(line40)"></a><font color=Blue>--   write it to the output.  No DTD is attached to the output.</font>+<a name="(line41)"></a><font color=Blue>--</font>+<a name="(line42)"></a><font color=Blue>--   If the input filename ends with .html or .htm, it is parsed using</font>+<a name="(line43)"></a><font color=Blue>--   the error-correcting HTML parser rather than the strict XML parser.</font>+<a name="(line44)"></a>processXmlWith <font color=Red>::</font> CFilter Posn <font color=Red>-&gt;</font> IO ()+<a name="(line45)"></a>processXmlWith f <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line46)"></a>  <font color=Cyan>(</font>inf<font color=Cyan>,</font>outf<font color=Cyan>)</font> <font color=Red>&lt;-</font> fix2Args+<a name="(line47)"></a>  input      <font color=Red>&lt;-</font> <font color=Green><u>if</u></font> inf<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> getContents <font color=Green><u>else</u></font> readFile inf+<a name="(line48)"></a>  o          <font color=Red>&lt;-</font> <font color=Green><u>if</u></font> outf<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout <font color=Green><u>else</u></font> openFile outf WriteMode+<a name="(line49)"></a>  parse      <font color=Red>&lt;-</font> <font color=Green><u>if</u></font> <font color=Magenta>".html"</font> <font color=Cyan>`isSuffixOf`</font> inf <font color=Cyan>||</font> <font color=Magenta>".htm"</font> <font color=Cyan>`isSuffixOf`</font> inf+<a name="(line50)"></a>                <font color=Green><u>then</u></font> return <font color=Cyan>(</font>htmlParse inf<font color=Cyan>)</font>+<a name="(line51)"></a>                <font color=Green><u>else</u></font> return <font color=Cyan>(</font>xmlParse inf<font color=Cyan>)</font>+<a name="(line52)"></a>  <font color=Cyan>(</font> hPutStrLn o <font color=Cyan>.</font> render <font color=Cyan>.</font> PP<font color=Cyan>.</font>document <font color=Cyan>.</font> onContent inf f <font color=Cyan>.</font> parse <font color=Cyan>)</font> input+<a name="(line53)"></a>  hFlush o+<a name="(line54)"></a>+<a name="(line55)"></a>  <font color=Green><u>where</u></font>+<a name="(line56)"></a>    onContent <font color=Red>::</font> FilePath <font color=Red>-&gt;</font> <font color=Cyan>(</font>CFilter Posn<font color=Cyan>)</font> <font color=Red>-&gt;</font> Document Posn <font color=Red>-&gt;</font> Document Posn+<a name="(line57)"></a>    onContent file filter <font color=Cyan>(</font>Document p s e m<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line58)"></a>        <font color=Green><u>case</u></font> filter <font color=Cyan>(</font>CElem e <font color=Cyan>(</font>posInNewCxt file Nothing<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="(line59)"></a>            <font color=Red>[</font>CElem e' <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> Document p s e' m+<a name="(line60)"></a>            []           <font color=Red>-&gt;</font> error <font color=Magenta>"produced no output"</font>+<a name="(line61)"></a>            <font color=Green><u>_</u></font>            <font color=Red>-&gt;</font> error <font color=Magenta>"produced more than one output"</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/XmlContent.html view
@@ -0,0 +1,640 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>{-# OPTIONS -fglasgow-exts #-}</font>+<a name="(line2)"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>+<a name="(line3)"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>+<a name="(line4)"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>+<a name="(line5)"></a><font color=Blue>--</font>+<a name="(line6)"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>+<a name="(line7)"></a><font color=Blue>--   derive instances of this class for you:</font>+<a name="(line8)"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>+<a name="(line9)"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>+<a name="(line10)"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances.</font>+<a name="(line11)"></a><font color=Blue>--</font>+<a name="(line12)"></a><font color=Blue>--   This unified class interface replaces two previous (somewhat similar)</font>+<a name="(line13)"></a><font color=Blue>--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have</font>+<a name="(line14)"></a><font color=Blue>--   separate classes depending on how you originally defined your datatypes.</font>+<a name="(line15)"></a>+<a name="(line16)"></a><font color=Blue>--   The methods 'toContents' and 'parseContents' convert a value to and from</font>+<a name="(line17)"></a><font color=Blue>--   a generic internal representation of an XML document /without/ a DTD.</font>+<a name="(line18)"></a><font color=Blue>--   The functions 'toXml' and 'fromXml' convert a value to and from a generic</font>+<a name="(line19)"></a><font color=Blue>--   internal representation of an XML document /including/ a DTD.</font>+<a name="(line20)"></a><font color=Blue>--   The functions 'readXml' and 'showXml' convert to and from Strings.</font>+<a name="(line21)"></a><font color=Blue>--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from</font>+<a name="(line22)"></a><font color=Blue>--   the given filenames.</font>+<a name="(line23)"></a><font color=Blue>--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from</font>+<a name="(line24)"></a><font color=Blue>--   the given file handles.</font>+<a name="(line25)"></a><font color=Blue>--   (See the type signatures.)</font>+<a name="(line26)"></a><font color=Blue>--  </font>+<a name="(line27)"></a>+<a name="(line28)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent+<a name="(line29)"></a>  <font color=Cyan>(</font> <font color=Blue>-- * Re-export the relevant set of generic XML document type definitions</font>+<a name="(line30)"></a>    Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line31)"></a>  <font color=Cyan>,</font> Element<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line32)"></a>  <font color=Cyan>,</font> ElemTag<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line33)"></a>  <font color=Cyan>,</font> Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line34)"></a>  <font color=Cyan>,</font> Attribute<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line35)"></a>  <font color=Cyan>,</font> AttValue<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line36)"></a>  <font color=Cyan>,</font> Prolog<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line37)"></a>  <font color=Cyan>,</font> Reference<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line38)"></a>  <font color=Blue>-- * The enabling classes, that define parsing\/unparsing between Haskell</font>+<a name="(line39)"></a>  <font color=Blue>--   datatypes and a generic XML representation.</font>+<a name="(line40)"></a>  <font color=Cyan>,</font> XmlContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line41)"></a>  <font color=Cyan>,</font> XmlAttributes<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line42)"></a>  <font color=Cyan>,</font> XmlAttrType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line43)"></a>  <font color=Blue>-- ** Auxiliaries for writing parsers in the XmlContent class</font>+<a name="(line44)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+<a name="(line45)"></a>  <font color=Cyan>,</font> XMLParser+<a name="(line46)"></a>  <font color=Cyan>,</font> content<font color=Cyan>,</font> posnElement<font color=Cyan>,</font> element<font color=Cyan>,</font> interior<font color=Cyan>,</font> inElement<font color=Cyan>,</font> text<font color=Cyan>,</font> attributes+<a name="(line47)"></a>  <font color=Cyan>,</font> posnElementWith<font color=Cyan>,</font> elementWith<font color=Cyan>,</font> inElementWith+<a name="(line48)"></a>  <font color=Cyan>,</font> choice<font color=Cyan>,</font> definite <font color=Blue>-- ???</font>+<a name="(line49)"></a>  <font color=Blue>-- ** Auxiliaries for generating in the XmlContent class</font>+<a name="(line50)"></a>  <font color=Cyan>,</font> mkElem<font color=Cyan>,</font> mkElemC<font color=Cyan>,</font> mkAttr+<a name="(line51)"></a>  <font color=Cyan>,</font> toText<font color=Cyan>,</font> toCData+<a name="(line52)"></a>  <font color=Blue>-- ** Auxiliaries for the attribute-related classes</font>+<a name="(line53)"></a>  <font color=Cyan>,</font> maybeToAttr<font color=Cyan>,</font> defaultToAttr+<a name="(line54)"></a>  <font color=Cyan>,</font> definiteA<font color=Cyan>,</font> defaultA<font color=Cyan>,</font> possibleA<font color=Cyan>,</font> fromAttrToStr<font color=Cyan>,</font> toAttrFrStr+<a name="(line55)"></a>  <font color=Cyan>,</font> Defaultable<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line56)"></a>  <font color=Cyan>,</font> str2attr<font color=Cyan>,</font> attr2str<font color=Cyan>,</font> attval+<a name="(line57)"></a>  <font color=Cyan>,</font> catMaybes	<font color=Blue>-- re-exported from Maybe</font>+<a name="(line58)"></a>  <font color=Blue>-- * Whole-document conversion functions</font>+<a name="(line59)"></a>  <font color=Cyan>,</font> toXml<font color=Cyan>,</font> fromXml+<a name="(line60)"></a>  <font color=Cyan>,</font> readXml<font color=Cyan>,</font> showXml<font color=Cyan>,</font> fpsShowXml+<a name="(line61)"></a>  <font color=Cyan>,</font> fReadXml<font color=Cyan>,</font> fWriteXml<font color=Cyan>,</font> fpsWriteXml+<a name="(line62)"></a>  <font color=Cyan>,</font> hGetXml<font color=Cyan>,</font>  hPutXml<font color=Cyan>,</font> fpsHPutXml+<a name="(line63)"></a>  <font color=Blue>-- * Explicit representation of Haskell datatype information</font>+<a name="(line64)"></a>  <font color=Blue>--   (for conversion to a DTD)</font>+<a name="(line65)"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="(line66)"></a>  <font color=Blue>-- * Types useful for some content models</font>+<a name="(line67)"></a>  <font color=Cyan>,</font> List1<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line68)"></a>  <font color=Cyan>,</font> ANYContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line69)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line70)"></a>+<a name="(line71)"></a><font color=Green><u>import</u></font> IO+<a name="(line72)"></a><font color=Green><u>import</u></font> Maybe <font color=Cyan>(</font>catMaybes<font color=Cyan>)</font>+<a name="(line73)"></a><font color=Green><u>import</u></font> Char  <font color=Cyan>(</font>chr<font color=Cyan>,</font> ord<font color=Cyan>,</font> isSpace<font color=Cyan>)</font>+<a name="(line74)"></a><font color=Green><u>import</u></font> List  <font color=Cyan>(</font>intersperse<font color=Cyan>,</font> isPrefixOf<font color=Cyan>,</font> isSuffixOf<font color=Cyan>,</font> partition<font color=Cyan>)</font>+<a name="(line75)"></a>+<a name="(line76)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="(line77)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP+<a name="(line78)"></a>+<a name="(line79)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line80)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="(line81)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>+<a name="(line82)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="(line83)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>,</font> fst3<font color=Cyan>)</font>+<a name="(line84)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Cyan>(</font>Verbatim<font color=Cyan>(</font>verbatim<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line85)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="(line86)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS+<a name="(line87)"></a>+<a name="(line88)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+<a name="(line89)"></a>+<a name="(line90)"></a><font color=Blue>--  #define DEBUG</font>+<a name="(line91)"></a>+<a name="(line92)"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>+<a name="(line93)"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="(line94)"></a><a name="debug"></a>debug <font color=Red>::</font> a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> a+<a name="(line95)"></a><a name="debug"></a>v <font color=Cyan>`debug`</font> s <font color=Red>=</font> trace s v+<a name="(line96)"></a><font color=Magenta><em>#else</em></font>+<a name="(line97)"></a><a name="debug"></a>v <font color=Cyan>`debug`</font> s <font color=Red>=</font> v+<a name="(line98)"></a><font color=Magenta><em>#endif</em></font>+<a name="(line99)"></a>+<a name="(line100)"></a>+<a name="(line101)"></a><a name="attval"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line102)"></a><font color=Blue>-- | Read a single attribute called "value".</font>+<a name="(line103)"></a>attval <font color=Red>::</font> <font color=Cyan>(</font>Read a<font color=Cyan>)</font> <font color=Red>=&gt;</font> Element i <font color=Red>-&gt;</font> a+<a name="(line104)"></a>attval <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font>v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> <font color=Red>=</font> read <font color=Cyan>(</font>show v<font color=Cyan>)</font>+<a name="(line105)"></a>+<a name="(line106)"></a><a name="mkAttr"></a><font color=Blue>-- | Generate a single attribute.</font>+<a name="(line107)"></a>mkAttr <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Attribute+<a name="(line108)"></a>mkAttr n v <font color=Red>=</font> <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue <font color=Red>[</font>Left v<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line109)"></a>+<a name="(line110)"></a><a name="mkElem"></a><font color=Blue>-- | Generate an element with no attributes, named for its HType.</font>+<a name="(line111)"></a>mkElem <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()+<a name="(line112)"></a>mkElem x cs  <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem <font color=Cyan>(</font>showHType <font color=Cyan>(</font>toHType x<font color=Cyan>)</font> <font color=Magenta>""</font><font color=Cyan>)</font> [] cs<font color=Cyan>)</font> ()+<a name="(line113)"></a>+<a name="(line114)"></a><a name="mkElemC"></a><font color=Blue>-- | Generate an element with no attributes, named directly.</font>+<a name="(line115)"></a>mkElemC <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()+<a name="(line116)"></a>mkElemC x cs <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem x [] cs<font color=Cyan>)</font> ()+<a name="(line117)"></a>+<a name="(line118)"></a><a name="toText"></a><font color=Blue>-- | Turn a simple string into XML text. </font>+<a name="(line119)"></a>toText <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>+<a name="(line120)"></a>toText s <font color=Red>=</font> <font color=Red>[</font>CString False s ()<font color=Red>]</font>+<a name="(line121)"></a>+<a name="(line122)"></a><a name="toCData"></a><font color=Blue>-- | Turn a string into an XML CDATA section.</font>+<a name="(line123)"></a><font color=Blue>--   (i.e. special characters like '&amp;' are preserved without interpretation.)</font>+<a name="(line124)"></a>toCData <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>+<a name="(line125)"></a>toCData s <font color=Red>=</font> <font color=Red>[</font>CString True s ()<font color=Red>]</font>+<a name="(line126)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line127)"></a>+<a name="(line128)"></a>	<font color=Blue>-- probably want to write DTD separately from value, and have</font>+<a name="(line129)"></a>	<font color=Blue>-- easy ways to combine DTD + value into a document, or write</font>+<a name="(line130)"></a>	<font color=Blue>-- them to separate files.</font>+<a name="(line131)"></a>+<a name="(line132)"></a><a name="fReadXml"></a><font color=Blue>-- | Read an XML document from a file and convert it to a fully-typed</font>+<a name="(line133)"></a><font color=Blue>--   Haskell value.</font>+<a name="(line134)"></a>fReadXml  <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> IO a+<a name="(line135)"></a>fReadXml fp <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line136)"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdin+<a name="(line137)"></a>           <font color=Green><u>else</u></font> openFile fp ReadMode <font color=Cyan>)</font>+<a name="(line138)"></a>    x <font color=Red>&lt;-</font> hGetContents f +<a name="(line139)"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse fp x+<a name="(line140)"></a>        y' <font color=Red>=</font> CElem y <font color=Cyan>(</font>posInNewCxt fp Nothing<font color=Cyan>)</font>+<a name="(line141)"></a>    either fail return <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>y'<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line142)"></a>+<a name="(line143)"></a><a name="fWriteXml"></a><font color=Blue>-- | Write a fully-typed Haskell value to the given file as an XML</font>+<a name="(line144)"></a><font color=Blue>--   document.</font>+<a name="(line145)"></a>fWriteXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="(line146)"></a>fWriteXml fp x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line147)"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout+<a name="(line148)"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>+<a name="(line149)"></a>    hPutXml f False x+<a name="(line150)"></a>    hClose f+<a name="(line151)"></a>+<a name="(line152)"></a><a name="fpsWriteXml"></a><font color=Blue>-- | Write any Haskell value to the given file as an XML document,</font>+<a name="(line153)"></a><font color=Blue>--   using the FastPackedString interface (output will not be prettified).</font>+<a name="(line154)"></a>fpsWriteXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="(line155)"></a>fpsWriteXml fp x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line156)"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout+<a name="(line157)"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>+<a name="(line158)"></a>    fpsHPutXml f False x+<a name="(line159)"></a>    hClose f+<a name="(line160)"></a>+<a name="(line161)"></a><a name="readXml"></a><font color=Blue>-- | Read a fully-typed XML document from a string.</font>+<a name="(line162)"></a>readXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Either String a+<a name="(line163)"></a>readXml s <font color=Red>=</font>+<a name="(line164)"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"string input"</font> s <font color=Green><u>in</u></font>+<a name="(line165)"></a>    fst <font color=Cyan>(</font>runParser parseContents+<a name="(line166)"></a>                   <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"string input"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line167)"></a>+<a name="(line168)"></a><a name="showXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).</font>+<a name="(line169)"></a>showXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String+<a name="(line170)"></a>showXml dtd x <font color=Red>=</font>+<a name="(line171)"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>+<a name="(line172)"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="(line173)"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>+<a name="(line174)"></a>+<a name="(line175)"></a><a name="fpsShowXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a ByteString (without DTD).</font>+<a name="(line176)"></a>fpsShowXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>ByteString+<a name="(line177)"></a>fpsShowXml dtd x <font color=Red>=</font>+<a name="(line178)"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>+<a name="(line179)"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="(line180)"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>empty+<a name="(line181)"></a>+<a name="(line182)"></a>+<a name="(line183)"></a><a name="toXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).</font>+<a name="(line184)"></a>toXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()+<a name="(line185)"></a>toXml dtd value <font color=Red>=</font>+<a name="(line186)"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>+<a name="(line187)"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line188)"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>+<a name="(line189)"></a>             emptyST+<a name="(line190)"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> <font color=Cyan>(</font>ht<font color=Cyan>,</font> toContents value<font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="(line191)"></a>                 <font color=Cyan>(</font>Tuple <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font>       <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> [] cs+<a name="(line192)"></a>                 <font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>"-XML"</font><font color=Cyan>)</font> [] cs+<a name="(line193)"></a>                 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Red>[</font>CElem e ()<font color=Red>]</font><font color=Cyan>)</font>   <font color=Red>-&gt;</font> e <font color=Cyan>)</font>+<a name="(line194)"></a>             []+<a name="(line195)"></a>+<a name="(line196)"></a><a name="fromXml"></a><font color=Blue>-- | Read a Haskell value from an XML document, ignoring the DTD and</font>+<a name="(line197)"></a><font color=Blue>--   using the Haskell result type to determine how to parse it.</font>+<a name="(line198)"></a>fromXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Document Posn <font color=Red>-&gt;</font> Either String a+<a name="(line199)"></a>fromXml <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>+<a name="(line200)"></a>  <font color=Red>|</font> <font color=Magenta>"tuple"</font> <font color=Cyan>`isPrefixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>+<a name="(line201)"></a>  <font color=Red>|</font> <font color=Magenta>"-XML"</font>  <font color=Cyan>`isSuffixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>+<a name="(line202)"></a>  <font color=Red>|</font> otherwise <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents+<a name="(line203)"></a>                               <font color=Red>[</font>CElem e <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"document"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="(line204)"></a>+<a name="(line205)"></a>+<a name="(line206)"></a><a name="hGetXml"></a><font color=Blue>-- | Read a fully-typed XML document from a file handle.</font>+<a name="(line207)"></a>hGetXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> IO a+<a name="(line208)"></a>hGetXml h <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line209)"></a>    x <font color=Red>&lt;-</font> hGetContents h +<a name="(line210)"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"file handle"</font> x+<a name="(line211)"></a>    either fail return+<a name="(line212)"></a>           <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents+<a name="(line213)"></a>                           <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"file handle"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line214)"></a>+<a name="(line215)"></a><a name="hPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle.</font>+<a name="(line216)"></a>hPutXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="(line217)"></a>hPutXml h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line218)"></a>    <font color=Cyan>(</font>hPutStrLn h <font color=Cyan>.</font> render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="(line219)"></a>+<a name="(line220)"></a><a name="fpsHPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle, using the</font>+<a name="(line221)"></a><font color=Blue>--   FastPackedString interface (output will not be prettified).</font>+<a name="(line222)"></a>fpsHPutXml <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="(line223)"></a>fpsHPutXml h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line224)"></a>    <font color=Cyan>(</font>FPS<font color=Cyan>.</font>hPut h <font color=Cyan>.</font> FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="(line225)"></a>+<a name="(line226)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line227)"></a>+<a name="(line228)"></a><a name="XMLParser"></a><font color=Blue>-- | We need a parsing monad for reading generic XML Content into specific</font>+<a name="(line229)"></a><a name="XMLParser"></a><font color=Blue>--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly</font>+<a name="(line230)"></a><a name="XMLParser"></a><font color=Blue>--   ones, where the input token type is fixed as XML Content.</font>+<a name="(line231)"></a><a name="XMLParser"></a><font color=Green><u>type</u></font> XMLParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font> a+<a name="(line232)"></a>+<a name="(line233)"></a>+<a name="(line234)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line235)"></a><font color=Blue>-- Some useful parsing combinators</font>+<a name="(line236)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line237)"></a>+<a name="(line238)"></a><a name="content"></a><font color=Blue>-- | The most primitive combinator for XMLParser - get one content item.</font>+<a name="(line239)"></a>content <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font>+<a name="(line240)"></a>content word <font color=Red>=</font> next <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>" when expecting "</font><font color=Cyan>++</font>word<font color=Cyan>)</font>+<a name="(line241)"></a>+<a name="(line242)"></a><a name="posnElementWith"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>+<a name="(line243)"></a><font color=Blue>--   tags, using the given matching function. </font>+<a name="(line244)"></a><font color=Blue>--   (Skips over comments and whitespace, rejects text and refs.</font>+<a name="(line245)"></a><font color=Blue>--    Also returns position of element.)</font>+<a name="(line246)"></a>posnElementWith <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="(line247)"></a>                   <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>+<a name="(line248)"></a>posnElementWith match tags <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line249)"></a>    <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Cyan>(</font>formatted tags<font color=Cyan>)</font>+<a name="(line250)"></a>    <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>+<a name="(line251)"></a>          CElem e<font color=Red>@</font><font color=Cyan>(</font>Elem t <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos+<a name="(line252)"></a>              <font color=Red>|</font> any <font color=Cyan>(</font>match t<font color=Cyan>)</font> tags <font color=Red>-&gt;</font> return <font color=Cyan>(</font>pos<font color=Cyan>,</font> e<font color=Cyan>)</font>+<a name="(line253)"></a>              <font color=Red>|</font> otherwise          <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;, but expected "</font>+<a name="(line254)"></a>                                           <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>+<a name="(line255)"></a>          CString b s pos+<a name="(line256)"></a>              <font color=Red>|</font> not b <font color=Cyan>&amp;&amp;</font> all isSpace s <font color=Red>-&gt;</font> posnElementWith match tags+<a name="(line257)"></a>							<font color=Blue>-- ignore blank space</font>+<a name="(line258)"></a>              <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found text content, but expected "</font>+<a name="(line259)"></a>                                  <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\ntext is: "</font><font color=Cyan>++</font>s+<a name="(line260)"></a>                                  <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>+<a name="(line261)"></a>          CRef r pos <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found reference, but expected "</font>+<a name="(line262)"></a>                             <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nreference is: "</font><font color=Cyan>++</font>verbatim r+<a name="(line263)"></a>                             <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>+<a name="(line264)"></a>          CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> posnElementWith match tags  <font color=Blue>-- skip comments, PIs, etc.</font>+<a name="(line265)"></a>    <font color=Cyan>}</font>+<a name="(line266)"></a>  <font color=Green><u>where</u></font>+<a name="(line267)"></a>    formatted <font color=Red>[</font>t<font color=Red>]</font>  <font color=Red>=</font> <font color=Magenta>"a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font>+<a name="(line268)"></a>    formatted tags <font color=Red>=</font> <font color=Magenta>"one of"</font><font color=Cyan>++</font> concatMap <font color=Cyan>(</font><font color=Red>\</font>t<font color=Red>-&gt;</font><font color=Magenta>" &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font> tags+<a name="(line269)"></a>+<a name="(line270)"></a><a name="posnElement"></a><font color=Blue>-- | A specialisation of @posnElementWith (==)@.</font>+<a name="(line271)"></a>posnElement <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>+<a name="(line272)"></a>posnElement <font color=Red>=</font> posnElementWith <font color=Cyan>(</font><font color=Cyan>==</font><font color=Cyan>)</font>+<a name="(line273)"></a>+<a name="(line274)"></a><a name="element"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>+<a name="(line275)"></a><font color=Blue>--   tags.  (Skips over comments and whitespace, rejects text and refs.)</font>+<a name="(line276)"></a>element <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>+<a name="(line277)"></a>element tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElement tags<font color=Cyan>)</font>+<a name="(line278)"></a>				<font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>+<a name="(line279)"></a>+<a name="(line280)"></a><a name="elementWith"></a><font color=Blue>-- | Like element, only permits a more flexible match against the tagname.</font>+<a name="(line281)"></a>elementWith <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>+<a name="(line282)"></a>elementWith match tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElementWith match tags<font color=Cyan>)</font>+<a name="(line283)"></a>				<font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>+<a name="(line284)"></a>+<a name="(line285)"></a><a name="interior"></a><font color=Blue>-- | Run an XMLParser on the contents of the given element (i.e. not on the</font>+<a name="(line286)"></a><font color=Blue>--   current monadic content sequence), checking that the contents are</font>+<a name="(line287)"></a><font color=Blue>--   exhausted, before returning the calculated value within the current</font>+<a name="(line288)"></a><font color=Blue>--   parser context.</font>+<a name="(line289)"></a>interior <font color=Red>::</font> Element Posn <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a+<a name="(line290)"></a>interior <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> p <font color=Red>=</font>+<a name="(line291)"></a>    <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>+<a name="(line292)"></a>        <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fail msg+<a name="(line293)"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return x+<a name="(line294)"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs<font color=Red>@</font><font color=Cyan>(</font>c<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line295)"></a>            <font color=Red>|</font> all onlyMisc cs <font color=Red>-&gt;</font> return x+<a name="(line296)"></a>            <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Too many elements inside &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>+<a name="(line297)"></a>                                      <font color=Cyan>++</font>show <font color=Cyan>(</font>info c<font color=Cyan>)</font><font color=Cyan>++</font><font color=Magenta>"\n"</font>+<a name="(line298)"></a>                                      <font color=Cyan>++</font><font color=Magenta>"Found excess: "</font><font color=Cyan>++</font>verbatim c<font color=Cyan>)</font>+<a name="(line299)"></a>  <font color=Green><u>where</u></font> onlyMisc <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line300)"></a>        onlyMisc <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> all isSpace s <font color=Red>=</font> True+<a name="(line301)"></a>        onlyMisc <font color=Green><u>_</u></font> <font color=Red>=</font> False+<a name="(line302)"></a>+<a name="(line303)"></a><a name="inElement"></a><font color=Blue>-- | A combination of element + interior.</font>+<a name="(line304)"></a>inElement <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a+<a name="(line305)"></a>inElement tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font>tag<font color=Red>]</font><font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line306)"></a>+<a name="(line307)"></a><a name="inElementWith"></a><font color=Blue>-- | A combination of elementWith + interior.</font>+<a name="(line308)"></a>inElementWith <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a+<a name="(line309)"></a>inElementWith match tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith match <font color=Red>[</font>tag<font color=Red>]</font>+<a name="(line310)"></a>                               <font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line311)"></a>+<a name="(line312)"></a><a name="attributes"></a><font color=Blue>-- | Do some parsing of the attributes of the given element</font>+<a name="(line313)"></a>attributes <font color=Red>::</font> XmlAttributes a <font color=Red>=&gt;</font> Element Posn <font color=Red>-&gt;</font> XMLParser a+<a name="(line314)"></a>attributes <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> return <font color=Cyan>(</font>fromAttrs <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line315)"></a>+<a name="(line316)"></a><a name="text"></a><font color=Blue>-- | 'text' is a counterpart to 'element', parsing text content if it</font>+<a name="(line317)"></a><font color=Blue>--   exists.  Adjacent text and references are coalesced.</font>+<a name="(line318)"></a>text <font color=Red>::</font> XMLParser String+<a name="(line319)"></a>text <font color=Red>=</font> text' []+<a name="(line320)"></a>  <font color=Green><u>where</u></font> text' acc <font color=Red>=</font>+<a name="(line321)"></a>          <font color=Green><u>do</u></font> <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Magenta>"plain text"</font>+<a name="(line322)"></a>             <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>+<a name="(line323)"></a>                 CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font>        <font color=Red>-&gt;</font> text' <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font>+<a name="(line324)"></a>                 CRef <font color=Cyan>(</font>RefChar s<font color=Cyan>)</font> <font color=Green><u>_</u></font>   <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"&amp;#"</font><font color=Cyan>++</font>show s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font> <font color=Red><b>:</b></font>acc<font color=Cyan>)</font>+<a name="(line325)"></a>                 CRef <font color=Cyan>(</font>RefEntity s<font color=Cyan>)</font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'&amp;'</font><font color=Red><b>:</b></font>s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font><font color=Red><b>:</b></font>acc<font color=Cyan>)</font>+<a name="(line326)"></a>                 CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>            <font color=Red>-&gt;</font> text' acc+<a name="(line327)"></a>                 CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> reparse <font color=Red>[</font>c<font color=Red>]</font> <font color=Blue>-- put it back!</font>+<a name="(line328)"></a>                                         <font color=Cyan>;</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>+<a name="(line329)"></a>                                           <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line330)"></a>                                         <font color=Cyan>}</font>+<a name="(line331)"></a>             <font color=Cyan>}</font>+<a name="(line332)"></a>          <font color=Cyan>`onFail`</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>+<a name="(line333)"></a>                     <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line334)"></a>+<a name="(line335)"></a>+<a name="(line336)"></a><a name="choice"></a><font color=Blue>-- | 'choice f p' means if parseContents succeeds, apply f to the result,</font>+<a name="(line337)"></a><font color=Blue>--   otherwise use the continuation parser.</font>+<a name="(line338)"></a>choice <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> b<font color=Cyan>)</font> <font color=Red>-&gt;</font> XMLParser b <font color=Red>-&gt;</font> XMLParser b+<a name="(line339)"></a>choice cons <font color=Cyan>(</font>P other<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line340)"></a>    P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser parseContents cs <font color=Green><u>of</u></font>+<a name="(line341)"></a>                 <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> other cs+<a name="(line342)"></a>                 <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>cons x<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line343)"></a>+<a name="(line344)"></a><font color=Blue>--choice cons other = fmap cons parseContents `onFail` other</font>+<a name="(line345)"></a>+<a name="(line346)"></a><a name="definite"></a><font color=Blue>-- | not sure this is needed now.   'definite p' previously ensured that</font>+<a name="(line347)"></a><font color=Blue>--   an element was definitely present.  Now I think the monad might take</font>+<a name="(line348)"></a><font color=Blue>--   care of that for us.</font>+<a name="(line349)"></a>definite <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> XMLParser a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a+<a name="(line350)"></a>definite p inner tag <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>+<a name="(line351)"></a>                                   <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg'<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font>+<a name="(line352)"></a>                                   <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font>   cs'<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line353)"></a>  <font color=Green><u>where</u></font> msg' <font color=Red>=</font> <font color=Magenta>"content error: expected "</font><font color=Cyan>++</font>inner<font color=Cyan>++</font><font color=Magenta>" inside &lt;"</font><font color=Cyan>++</font>tag+<a name="(line354)"></a>               <font color=Cyan>++</font><font color=Magenta>"&gt; element\n"</font>+<a name="(line355)"></a>+<a name="(line356)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line357)"></a>+<a name="(line358)"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlContent@ class promises that an XML Content element can be</font>+<a name="(line359)"></a><a name="XmlContent"></a><font color=Blue>--   converted to and from a Haskell value.</font>+<a name="(line360)"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> HTypeable a <font color=Red>=&gt;</font> XmlContent a <font color=Green><u>where</u></font>+<a name="(line361)"></a>    <font color=Blue>-- | Convert from XML to Haskell</font>+<a name="(line362)"></a>    parseContents <font color=Red>::</font> XMLParser a+<a name="(line363)"></a>    <font color=Blue>-- | Convert from Haskell to XML</font>+<a name="(line364)"></a>    toContents    <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>+<a name="(line365)"></a>+<a name="(line366)"></a>    <font color=Blue>-- | Dummy functions (for most types): used /only/ in the Char instance</font>+<a name="(line367)"></a>    <font color=Blue>--   for coercing lists of Char into String.</font>+<a name="(line368)"></a>    xToChar       <font color=Red>::</font> a <font color=Red>-&gt;</font> Char+<a name="(line369)"></a>    xFromChar     <font color=Red>::</font> Char <font color=Red>-&gt;</font> a+<a name="(line370)"></a>    xToChar        <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xToChar used in error"</font>+<a name="(line371)"></a>    xFromChar      <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xFromChar used in error"</font>+<a name="(line372)"></a>+<a name="(line373)"></a><a name="XmlAttributes"></a><font color=Blue>-- | The @XmlAttributes@ class promises that a list of XML tag attributes</font>+<a name="(line374)"></a><a name="XmlAttributes"></a><font color=Blue>--   can be converted to and from a Haskell value.</font>+<a name="(line375)"></a><a name="XmlAttributes"></a><font color=Green><u>class</u></font> XmlAttributes a <font color=Green><u>where</u></font>+<a name="(line376)"></a>    fromAttrs <font color=Red>::</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a+<a name="(line377)"></a>    toAttrs   <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font>+<a name="(line378)"></a><a name="XmlAttrType"></a><font color=Blue>-- | The @XmlAttrType@ class promises that an attribute taking an XML</font>+<a name="(line379)"></a><a name="XmlAttrType"></a><font color=Blue>--   enumerated type can be converted to and from a Haskell value.</font>+<a name="(line380)"></a><a name="XmlAttrType"></a><font color=Green><u>class</u></font> XmlAttrType a <font color=Green><u>where</u></font>+<a name="(line381)"></a>    fromAttrToTyp <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe a+<a name="(line382)"></a>    toAttrFrTyp   <font color=Red>::</font> String <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe Attribute+<a name="(line383)"></a>+<a name="(line384)"></a>+<a name="(line385)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line386)"></a><font color=Blue>-- Instances for all the standard basic datatypes.</font>+<a name="(line387)"></a><font color=Blue>-- These are for Haskell datatypes being derived to go to XML.</font>+<a name="(line388)"></a><font color=Blue>-- DtdToHaskell does not use these instances.</font>+<a name="(line389)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line390)"></a>+<a name="(line391)"></a><font color=Green><u>instance</u></font> XmlContent Bool <font color=Green><u>where</u></font>+<a name="(line392)"></a>    toContents b   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"bool"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show b<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="(line393)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"bool"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line394)"></a>    +<a name="(line395)"></a><font color=Green><u>instance</u></font> XmlContent Int <font color=Green><u>where</u></font>+<a name="(line396)"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"int"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="(line397)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"int"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line398)"></a>+<a name="(line399)"></a><font color=Green><u>instance</u></font> XmlContent Integer <font color=Green><u>where</u></font>+<a name="(line400)"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"integer"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="(line401)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"integer"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line402)"></a>    +<a name="(line403)"></a><font color=Green><u>instance</u></font> XmlContent Float <font color=Green><u>where</u></font>+<a name="(line404)"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"float"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="(line405)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"float"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line406)"></a>+<a name="(line407)"></a><font color=Green><u>instance</u></font> XmlContent Double <font color=Green><u>where</u></font>+<a name="(line408)"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"double"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="(line409)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"double"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="(line410)"></a>+<a name="(line411)"></a><font color=Green><u>instance</u></font> XmlContent Char <font color=Green><u>where</u></font>+<a name="(line412)"></a>    <font color=Blue>-- NOT in a string</font>+<a name="(line413)"></a>    toContents c   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"char"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="(line414)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font><font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font>+<a name="(line415)"></a>                             <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"char"</font><font color=Red>]</font>+<a name="(line416)"></a>                       <font color=Cyan>;</font> return c+<a name="(line417)"></a>                       <font color=Cyan>}</font>+<a name="(line418)"></a>    <font color=Blue>-- Only defined for Char and no other types:</font>+<a name="(line419)"></a>    xToChar   <font color=Red>=</font> id+<a name="(line420)"></a>    xFromChar <font color=Red>=</font> id+<a name="(line421)"></a>+<a name="(line422)"></a><font color=Green><u>instance</u></font> XmlContent a <font color=Red>=&gt;</font> XmlContent <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>+<a name="(line423)"></a>    toContents xs  <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>+<a name="(line424)"></a>                       <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line425)"></a>                            <font color=Red>[</font>mkElem <font color=Magenta>"string"</font> <font color=Red>[</font>CString True <font color=Cyan>(</font>map xToChar xs<font color=Cyan>)</font> ()<font color=Red>]</font><font color=Red>]</font>+<a name="(line426)"></a>                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font>mkElem xs <font color=Cyan>(</font>concatMap toContents xs<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line427)"></a>                   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs+<a name="(line428)"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>x <font color=Red>-&gt;</font>+<a name="(line429)"></a>        <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>+<a name="(line430)"></a>            <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>+<a name="(line431)"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line432)"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"string"</font> [] <font color=Red>[</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red>]</font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>+<a name="(line433)"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line434)"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e [] xs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"list"</font> <font color=Cyan>`isPrefixOf`</font> e+<a name="(line435)"></a>                   <font color=Red>-&gt;</font> scanElements xs+<a name="(line436)"></a>                   <font color=Green><u>where</u></font>+<a name="(line437)"></a>                  <font color=Blue>-- scanElements :: [Content] -&gt; (Either String [a],[Content])</font>+<a name="(line438)"></a>                     scanElements [] <font color=Red>=</font> <font color=Cyan>(</font>Right []<font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line439)"></a>                     scanElements es <font color=Red>=</font>+<a name="(line440)"></a>                        <font color=Green><u>case</u></font> runParser parseContents es <font color=Green><u>of</u></font>+<a name="(line441)"></a>                            <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> es'<font color=Cyan>)</font>+<a name="(line442)"></a>                            <font color=Cyan>(</font>Right x<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="(line443)"></a>                                <font color=Green><u>case</u></font> scanElements es' <font color=Green><u>of</u></font>+<a name="(line444)"></a>                                    <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line445)"></a>                                    <font color=Cyan>(</font>Right xs<font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line446)"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>+<a name="(line447)"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False+<a name="(line448)"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>+<a name="(line449)"></a>                            <font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line450)"></a>            <font color=Cyan>(</font>CRef r pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>+<a name="(line451)"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False+<a name="(line452)"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a ref "</font>+<a name="(line453)"></a>                            <font color=Cyan>++</font>verbatim r<font color=Cyan>++</font><font color=Magenta>" at\n"</font><font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="(line454)"></a>            <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>P p<font color=Cyan>)</font><font color=Red>-&gt;</font> p<font color=Cyan>)</font> parseContents<font color=Cyan>)</font> cs  <font color=Blue>-- skip comments etc.</font>+<a name="(line455)"></a>            []     <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False+<a name="(line456)"></a>                            <font color=Cyan>,</font><font color=Magenta>"Ran out of input XML whilst secondary parsing"</font><font color=Cyan>)</font>+<a name="(line457)"></a>                      <font color=Cyan>,</font> []<font color=Cyan>)</font>+<a name="(line458)"></a>        <font color=Cyan>)</font>+<a name="(line459)"></a>+<a name="(line460)"></a><font color=Green><u>instance</u></font> XmlContent () <font color=Green><u>where</u></font>+<a name="(line461)"></a>    toContents ()  <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"unit"</font> [] []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="(line462)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> element <font color=Red>[</font><font color=Magenta>"unit"</font><font color=Red>]</font><font color=Cyan>;</font> return () <font color=Cyan>}</font>+<a name="(line463)"></a>+<a name="(line464)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line465)"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b+<a name="(line466)"></a>    parseContents    <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line467)"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="(line468)"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="(line469)"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font>+<a name="(line470)"></a>        <font color=Cyan>}</font>+<a name="(line471)"></a>+<a name="(line472)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line473)"></a>    toContents <font color=Cyan>(</font>x<font color=Cyan>,</font>y<font color=Cyan>,</font>z<font color=Cyan>)</font> <font color=Red>=</font> toContents x <font color=Cyan>++</font> toContents y <font color=Cyan>++</font> toContents z+<a name="(line474)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line475)"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="(line476)"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="(line477)"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="(line478)"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line479)"></a>        <font color=Cyan>}</font>+<a name="(line480)"></a>+<a name="(line481)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line482)"></a>    toContents m   <font color=Red>=</font> <font color=Red>[</font>mkElem m <font color=Cyan>(</font>maybe [] toContents m<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line483)"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line484)"></a>        <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Red>[</font><font color=Magenta>"maybe"</font><font color=Red>]</font>+<a name="(line485)"></a>        <font color=Cyan>;</font> <font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return Nothing+<a name="(line486)"></a>                    <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> fmap Just <font color=Cyan>(</font>interior e parseContents<font color=Cyan>)</font>+<a name="(line487)"></a>        <font color=Cyan>}</font>+<a name="(line488)"></a>+<a name="(line489)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line490)"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Left aa<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line491)"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>0</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents aa<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line492)"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Right ab<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line493)"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>1</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents ab<font color=Cyan>)</font><font color=Red>]</font>+<a name="(line494)"></a>    parseContents <font color=Red>=</font>+<a name="(line495)"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Left"</font>  <font color=Cyan>$</font> fmap Left  parseContents<font color=Cyan>)</font>+<a name="(line496)"></a>          <font color=Cyan>`onFail`</font>+<a name="(line497)"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Right"</font> <font color=Cyan>$</font> fmap Right parseContents<font color=Cyan>)</font>+<a name="(line498)"></a>+<a name="(line499)"></a><font color=Blue>--    do{ e@(Elem t [] _) &lt;- element ["Left","Right"]</font>+<a name="(line500)"></a><font color=Blue>--      ; case t of</font>+<a name="(line501)"></a><font color=Blue>--          _ | "Left"  `isPrefixOf` t -&gt; fmap Left  (interior e parseContents)</font>+<a name="(line502)"></a><font color=Blue>--            | "Right" `isPrefixOf` t -&gt; fmap Right (interior e parseContents)</font>+<a name="(line503)"></a><font color=Blue>--      }</font>+<a name="(line504)"></a>+<a name="(line505)"></a>+<a name="(line506)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line507)"></a><font color=Blue>-- Useful auxiliaries for "fromAttributes" </font>+<a name="(line508)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line509)"></a>+<a name="(line510)"></a><a name="Defaultable"></a><font color=Blue>-- | If an attribute is defaultable, then it either takes the default</font>+<a name="(line511)"></a><a name="Defaultable"></a><font color=Blue>--   value (which is omitted from the output), or a non-default value</font>+<a name="(line512)"></a><a name="Defaultable"></a><font color=Blue>--   (which obviously must be printed).</font>+<a name="(line513)"></a><a name="Defaultable"></a><font color=Green><u>data</u></font> Defaultable a  <font color=Red>=</font> Default a    <font color=Red>|</font> NonDefault a    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="(line514)"></a>+<a name="(line515)"></a><a name="searchMaybe"></a>searchMaybe <font color=Red>::</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> Maybe b<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe b+<a name="(line516)"></a>searchMaybe f [] <font color=Red>=</font> Nothing+<a name="(line517)"></a>searchMaybe f <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line518)"></a>    <font color=Green><u>let</u></font> fx <font color=Red>=</font> f x <font color=Green><u>in</u></font>+<a name="(line519)"></a>    <font color=Green><u>case</u></font> fx <font color=Green><u>of</u></font>+<a name="(line520)"></a>      Nothing  <font color=Red>-&gt;</font> searchMaybe f xs+<a name="(line521)"></a>      <font color=Cyan>(</font>Just <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fx+<a name="(line522)"></a>+<a name="(line523)"></a><a name="maybeToAttr"></a>maybeToAttr <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe a+<a name="(line524)"></a>               <font color=Red>-&gt;</font> Maybe Attribute+<a name="(line525)"></a>maybeToAttr to n Nothing  <font color=Red>=</font> Nothing+<a name="(line526)"></a>maybeToAttr to n <font color=Cyan>(</font>Just v<font color=Cyan>)</font> <font color=Red>=</font> to n v+<a name="(line527)"></a>+<a name="(line528)"></a><a name="defaultToAttr"></a>defaultToAttr <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Defaultable a+<a name="(line529)"></a>                 <font color=Red>-&gt;</font> Maybe Attribute+<a name="(line530)"></a>defaultToAttr to n <font color=Cyan>(</font>Default v<font color=Cyan>)</font>  <font color=Red>=</font> Nothing+<a name="(line531)"></a>defaultToAttr to n <font color=Cyan>(</font>NonDefault v<font color=Cyan>)</font> <font color=Red>=</font> to n v+<a name="(line532)"></a>+<a name="(line533)"></a><a name="definiteA"></a>definiteA <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="(line534)"></a>             <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a+<a name="(line535)"></a>definiteA from tag at <font color=Green><u>as</u></font> <font color=Red>=</font>+<a name="(line536)"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>+<a name="(line537)"></a>      Nothing  <font color=Red>-&gt;</font> error <font color=Cyan>(</font><font color=Magenta>"missing attribute "</font><font color=Cyan>++</font>at<font color=Cyan>++</font><font color=Magenta>" in tag &lt;"</font><font color=Cyan>++</font>tag<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="(line538)"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a+<a name="(line539)"></a>+<a name="(line540)"></a><a name="defaultA"></a>defaultA <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String+<a name="(line541)"></a>            <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Defaultable a+<a name="(line542)"></a>defaultA from def at <font color=Green><u>as</u></font> <font color=Red>=</font>+<a name="(line543)"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>+<a name="(line544)"></a>      Nothing  <font color=Red>-&gt;</font> Default def+<a name="(line545)"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> NonDefault a+<a name="(line546)"></a>+<a name="(line547)"></a><a name="possibleA"></a>possibleA <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe a+<a name="(line548)"></a>possibleA from at <font color=Green><u>as</u></font> <font color=Red>=</font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font>+<a name="(line549)"></a>+<a name="(line550)"></a><a name="fromAttrToStr"></a>fromAttrToStr <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe String+<a name="(line551)"></a>fromAttrToStr n <font color=Cyan>(</font>n0<font color=Cyan>,</font>v<font color=Cyan>)</font>+<a name="(line552)"></a>        <font color=Red>|</font> n <font color=Cyan>==</font> n0   <font color=Red>=</font> Just <font color=Cyan>(</font>attr2str v<font color=Cyan>)</font>+<a name="(line553)"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> Nothing+<a name="(line554)"></a>+<a name="(line555)"></a><a name="toAttrFrStr"></a>toAttrFrStr   <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe Attribute+<a name="(line556)"></a>toAttrFrStr n v <font color=Red>=</font> Just <font color=Cyan>(</font>n<font color=Cyan>,</font> str2attr v<font color=Cyan>)</font>+<a name="(line557)"></a>+<a name="(line558)"></a><a name="str2attr"></a>str2attr <font color=Red>::</font> String <font color=Red>-&gt;</font> AttValue+<a name="(line559)"></a>str2attr s <font color=Red>=</font>+<a name="(line560)"></a>    <font color=Green><u>let</u></font> f s <font color=Red>=</font>+<a name="(line561)"></a>          <font color=Green><u>let</u></font> <font color=Cyan>(</font>l<font color=Cyan>,</font>r<font color=Cyan>)</font> <font color=Red>=</font> span <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> not <font color=Cyan>(</font>elem c <font color=Magenta>"\"&amp;&lt;&gt;'"</font><font color=Cyan>)</font><font color=Cyan>)</font> s+<a name="(line562)"></a>          <font color=Green><u>in</u></font> <font color=Green><u>if</u></font> null r <font color=Green><u>then</u></font> <font color=Red>[</font>Left l<font color=Red>]</font>+<a name="(line563)"></a>             <font color=Green><u>else</u></font> Left l<font color=Red><b>:</b></font> Right <font color=Cyan>(</font>g <font color=Cyan>(</font>head r<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font> f <font color=Cyan>(</font>tail r<font color=Cyan>)</font>+<a name="(line564)"></a>        g <font color=Magenta>'"'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"quot"</font>+<a name="(line565)"></a>        g <font color=Magenta>'&amp;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"amp"</font>+<a name="(line566)"></a>        g <font color=Magenta>'&lt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"lt"</font>+<a name="(line567)"></a>        g <font color=Magenta>'&gt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"gt"</font>+<a name="(line568)"></a>        g <font color=Magenta>'\''</font> <font color=Red>=</font> RefEntity <font color=Magenta>"apos"</font>+<a name="(line569)"></a>    <font color=Green><u>in</u></font> AttValue <font color=Cyan>(</font>f s<font color=Cyan>)</font>+<a name="(line570)"></a>+<a name="(line571)"></a><a name="attr2str"></a>attr2str <font color=Red>::</font> AttValue <font color=Red>-&gt;</font> String          <font color=Blue>-- really needs symbol table</font>+<a name="(line572)"></a>attr2str <font color=Cyan>(</font>AttValue xs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line573)"></a>    <font color=Green><u>let</u></font> f <font color=Cyan>(</font>Left s<font color=Cyan>)</font> <font color=Red>=</font> s+<a name="(line574)"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefChar i<font color=Cyan>)</font><font color=Cyan>)</font>        <font color=Red>=</font> <font color=Red>[</font>chr i<font color=Red>]</font>+<a name="(line575)"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"quot"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\""</font>+<a name="(line576)"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"amp"</font><font color=Cyan>)</font><font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"&amp;"</font>+<a name="(line577)"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"lt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;"</font>+<a name="(line578)"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"gt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&gt;"</font>+<a name="(line579)"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"apos"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"'"</font>+<a name="(line580)"></a>        f <font color=Cyan>(</font>Right <font color=Green><u>_</u></font><font color=Cyan>)</font>                  <font color=Red>=</font> <font color=Magenta>"*"</font>  <font color=Blue>-- Ooops, ST needed here.</font>+<a name="(line581)"></a>    <font color=Green><u>in</u></font> concatMap f xs+<a name="(line582)"></a>+<a name="(line583)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line584)"></a><font color=Blue>--  New content-model types</font>+<a name="(line585)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line586)"></a>+<a name="(line587)"></a><font color=Blue>{-+<a name="(line588)"></a>data OneOf2 a b+<a name="(line589)"></a>data OneOf3 a b c+<a name="(line590)"></a>data OneOf4 a b c d+<a name="(line591)"></a>    ... etc are now defined (with instances) in module OneOfN.+<a name="(line592)"></a>-}</font>+<a name="(line593)"></a>+<a name="(line594)"></a><a name="ANYContent"></a><font color=Blue>-- | A type corresponding to XML's ANY contentspec. </font>+<a name="(line595)"></a><a name="ANYContent"></a><font color=Blue>--   It is either a list of unconverted xml 'Content' </font>+<a name="(line596)"></a><a name="ANYContent"></a><font color=Blue>--   or some 'XmlContent'-able value.</font>+<a name="(line597)"></a><a name="ANYContent"></a><font color=Blue>--</font>+<a name="(line598)"></a><a name="ANYContent"></a><font color=Blue>-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.</font>+<a name="(line599)"></a><a name="ANYContent"></a><font color=Blue>-- Note: The Show instance for 'UnConverted' uses 'verbatim'.</font>+<a name="(line600)"></a><a name="ANYContent"></a><font color=Green><u>data</u></font> ANYContent <font color=Red>=</font> <font color=Green><u>forall</u></font> a <font color=Cyan>.</font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> Show a<font color=Cyan>)</font> <font color=Red>=&gt;</font> ANYContent a+<a name="(line601)"></a>                <font color=Red>|</font> UnConverted <font color=Red>[</font>Content Posn<font color=Red>]</font>+<a name="(line602)"></a>+<a name="(line603)"></a><font color=Green><u>instance</u></font> Show ANYContent <font color=Green><u>where</u></font>+<a name="(line604)"></a>    show <font color=Cyan>(</font>UnConverted c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"UnConverted "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show <font color=Cyan>$</font> map verbatim c<font color=Cyan>)</font>+<a name="(line605)"></a>    show <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"ANYContent "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show a<font color=Cyan>)</font>+<a name="(line606)"></a>+<a name="(line607)"></a><font color=Green><u>instance</u></font> Eq ANYContent <font color=Green><u>where</u></font>+<a name="(line608)"></a>    a <font color=Cyan>==</font> b <font color=Red>=</font> show a <font color=Cyan>==</font> show b+<a name="(line609)"></a>+<a name="(line610)"></a><a name="List1"></a><font color=Blue>-- | The List1 type represents lists with at least one element.</font>+<a name="(line611)"></a><a name="List1"></a><font color=Blue>--   It is required for DTD content models that use + as a modifier.</font>+<a name="(line612)"></a><a name="List1"></a><font color=Green><u>data</u></font> List1 a <font color=Red>=</font> NonEmpty <font color=Red>[</font>a<font color=Red>]</font>  <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font> Show<font color=Cyan>)</font>+<a name="(line613)"></a>+<a name="(line614)"></a>+<a name="(line615)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line616)"></a><font color=Blue>--  Instances for new content-model types</font>+<a name="(line617)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line618)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line619)"></a>    toHType m  <font color=Red>=</font> Defined <font color=Magenta>"List1"</font> <font color=Red>[</font>hx<font color=Red>]</font>+<a name="(line620)"></a>                         <font color=Red>[</font>Constr <font color=Magenta>"NonEmpty"</font> <font color=Red>[</font>hx<font color=Red>]</font> <font color=Red>[</font>List hx<font color=Red>]</font> <font color=Blue>{-Nothing-}</font><font color=Red>]</font>+<a name="(line621)"></a>               <font color=Green><u>where</u></font> <font color=Cyan>(</font>NonEmpty x<font color=Cyan>)</font> <font color=Red>=</font> m+<a name="(line622)"></a>                     hx <font color=Red>=</font> toHType x+<a name="(line623)"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line624)"></a>    toContents <font color=Cyan>(</font>NonEmpty xs<font color=Cyan>)</font> <font color=Red>=</font> concatMap toContents xs+<a name="(line625)"></a>    parseContents <font color=Red>=</font> fmap NonEmpty <font color=Cyan>$</font> many1 parseContents+<a name="(line626)"></a>+<a name="(line627)"></a><font color=Green><u>instance</u></font> HTypeable ANYContent <font color=Green><u>where</u></font>+<a name="(line628)"></a>    toHType <font color=Green><u>_</u></font>      <font color=Red>=</font> Prim <font color=Magenta>"ANYContent"</font> <font color=Magenta>"ANY"</font>+<a name="(line629)"></a><font color=Green><u>instance</u></font> XmlContent ANYContent <font color=Green><u>where</u></font>+<a name="(line630)"></a>    toContents <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> toContents a+<a name="(line631)"></a>    toContents <font color=Cyan>(</font>UnConverted s<font color=Cyan>)</font> <font color=Red>=</font> map <font color=Cyan>(</font>fmap <font color=Cyan>(</font>const ()<font color=Cyan>)</font><font color=Cyan>)</font> s+<a name="(line632)"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>UnConverted cs<font color=Cyan>)</font><font color=Cyan>,</font> []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line633)"></a>+<a name="(line634)"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="(line635)"></a><font color=Blue>--  </font>+<a name="(line636)"></a><font color=Blue>------------------------------------------------------------------------</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Xtract/Combinators.html view
@@ -0,0 +1,108 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This is a new set of XML combinators for Xtract, not standard,</font>+<a name="(line2)"></a><font color=Blue>--   but based on the standard set in "Text.Xml.Haxml.Combinators".</font>+<a name="(line3)"></a><font color=Blue>--   The main difference is that the Content Filter type becomes a</font>+<a name="(line4)"></a><font color=Blue>--   Double Filter.  A Double Filter always takes the whole document</font>+<a name="(line5)"></a><font color=Blue>--   as an extra argument, so you can start to traverse it again from</font>+<a name="(line6)"></a><font color=Blue>--   the root, when at any inner location within the document tree.</font>+<a name="(line7)"></a><font color=Blue>--</font>+<a name="(line8)"></a><font color=Blue>--   The new combinator definitions are derived from the old ones.</font>+<a name="(line9)"></a><font color=Blue>--   The same names have the equivalent meaning - use module qualification</font>+<a name="(line10)"></a><font color=Blue>--   on imports to distinguish between CFilter and DFilter variations.</font>+<a name="(line11)"></a>+<a name="(line12)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Xtract<font color=Cyan>.</font>Combinators <font color=Green><u>where</u></font>+<a name="(line13)"></a>+<a name="(line14)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line15)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators <font color=Cyan>(</font>CFilter<font color=Cyan>)</font>+<a name="(line16)"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators <font color=Green><u>as</u></font> C+<a name="(line17)"></a>+<a name="(line18)"></a>+<a name="(line19)"></a><a name="DFilter"></a><font color=Blue>-- | double content filter - takes document root + local subtree.</font>+<a name="(line20)"></a><a name="DFilter"></a><font color=Green><u>type</u></font> DFilter i <font color=Red>=</font> Content i <font color=Red>-&gt;</font> Content i <font color=Red>-&gt;</font> <font color=Red>[</font>Content i<font color=Red>]</font>+<a name="(line21)"></a>+<a name="(line22)"></a><a name="local"></a><font color=Blue>-- | lift an ordinary content filter to a double filter.</font>+<a name="(line23)"></a>local<font color=Cyan>,</font>global <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line24)"></a>local  f <font color=Red>=</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> f sub+<a name="(line25)"></a><a name="global"></a>global f <font color=Red>=</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> f xml+<a name="(line26)"></a>+<a name="(line27)"></a><a name="dfilter"></a><font color=Blue>-- | drop a double filter to an ordinary content filter.</font>+<a name="(line28)"></a><font color=Blue>--   (permitting interior access to document root)</font>+<a name="(line29)"></a>dfilter <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line30)"></a>dfilter f <font color=Red>=</font> <font color=Red>\</font>xml<font color=Red>-&gt;</font> f xml xml+<a name="(line31)"></a>+<a name="(line32)"></a><a name="cfilter"></a><font color=Blue>-- | drop a double filter to an ordinary content filter.</font>+<a name="(line33)"></a><font color=Blue>--   (Where interior access to the document root is not needed, the</font>+<a name="(line34)"></a><font color=Blue>--    retaining pointer to the outer element can be pruned away.</font>+<a name="(line35)"></a><font color=Blue>--   'cfilter' is more space-efficient than 'dfilter' in this situation.)</font>+<a name="(line36)"></a>cfilter <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line37)"></a>cfilter f <font color=Red>=</font> <font color=Red>\</font>xml <font color=Red>-&gt;</font> f undefined xml+<a name="(line38)"></a><font color=Blue>--cfilter f = \xml-&gt; flip f xml</font>+<a name="(line39)"></a><font color=Blue>--                          (case xml of</font>+<a name="(line40)"></a><font color=Blue>--                             CElem (Elem n as cs) i -&gt; CElem (Elem n [] []) i</font>+<a name="(line41)"></a><font color=Blue>--                             _ -&gt; xml)</font>+<a name="(line42)"></a>+<a name="(line43)"></a><a name="liftLocal"></a><font color=Blue>-- | lift a CFilter combinator to a DFilter combinator</font>+<a name="(line44)"></a>liftLocal<font color=Cyan>,</font> liftGlobal <font color=Red>::</font> <font color=Cyan>(</font>CFilter i<font color=Red>-&gt;</font>CFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>DFilter i<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font>+<a name="(line45)"></a>liftLocal  ff <font color=Red>=</font> <font color=Red>\</font>df<font color=Red>-&gt;</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> <font color=Cyan>(</font>ff <font color=Cyan>(</font>df xml<font color=Cyan>)</font><font color=Cyan>)</font> sub+<a name="(line46)"></a><a name="liftGlobal"></a>liftGlobal ff <font color=Red>=</font> <font color=Red>\</font>df<font color=Red>-&gt;</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> <font color=Cyan>(</font>ff <font color=Cyan>(</font>df xml<font color=Cyan>)</font><font color=Cyan>)</font> xml+<a name="(line47)"></a>+<a name="(line48)"></a><a name="o"></a><font color=Blue>-- | lifted composition over double filters.</font>+<a name="(line49)"></a>o <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line50)"></a><a name="o"></a>g <font color=Cyan>`o`</font> f <font color=Red>=</font> <font color=Red>\</font>xml<font color=Red>-&gt;</font> concatMap <font color=Cyan>(</font>g xml<font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font>f xml<font color=Cyan>)</font>+<a name="(line51)"></a>+<a name="(line52)"></a><a name="|>|"></a><font color=Blue>-- | lifted choice.</font>+<a name="(line53)"></a><font color=Cyan>(</font><font color=Cyan>|&gt;|</font><font color=Cyan>)</font> <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line54)"></a><a name="f"></a>f <font color=Cyan>|&gt;|</font> g <font color=Red>=</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> <font color=Green><u>let</u></font> first <font color=Red>=</font> f xml sub <font color=Green><u>in</u></font>+<a name="(line55)"></a>                     <font color=Green><u>if</u></font> null first <font color=Green><u>then</u></font> g xml sub <font color=Green><u>else</u></font> first+<a name="(line56)"></a>+<a name="(line57)"></a><a name="union"></a><font color=Blue>-- | lifted union.</font>+<a name="(line58)"></a>union <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line59)"></a>union <font color=Red>=</font> lift <font color=Cyan>(</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line60)"></a>  <font color=Green><u>where</u></font>+<a name="(line61)"></a>    lift f g h <font color=Red>=</font> <font color=Red>\</font>x y<font color=Red>-&gt;</font> f <font color=Cyan>(</font>g x y<font color=Cyan>)</font> <font color=Cyan>(</font>h x y<font color=Cyan>)</font>+<a name="(line62)"></a>+<a name="(line63)"></a><a name="with"></a><font color=Blue>-- | lifted predicates.</font>+<a name="(line64)"></a>with<font color=Cyan>,</font> without <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line65)"></a><a name="with"></a>f <font color=Cyan>`with`</font> g    <font color=Red>=</font> <font color=Red>\</font>xml<font color=Red>-&gt;</font> filter <font color=Cyan>(</font>not<font color=Cyan>.</font>null<font color=Cyan>.</font>g xml<font color=Cyan>)</font> <font color=Cyan>.</font> f xml+<a name="(line66)"></a><a name="without"></a>f <font color=Cyan>`without`</font> g <font color=Red>=</font> <font color=Red>\</font>xml<font color=Red>-&gt;</font> filter     <font color=Cyan>(</font>null<font color=Cyan>.</font>g xml<font color=Cyan>)</font> <font color=Cyan>.</font> f xml+<a name="(line67)"></a>+<a name="(line68)"></a><a name="keep"></a><font color=Blue>-- | lifted unit and zero.</font>+<a name="(line69)"></a>keep<font color=Cyan>,</font> none <font color=Red>::</font> DFilter i+<a name="(line70)"></a>keep <font color=Red>=</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> <font color=Red>[</font>sub<font color=Red>]</font>	<font color=Blue>-- local C.keep</font>+<a name="(line71)"></a><a name="none"></a>none <font color=Red>=</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> []	<font color=Blue>-- local C.none</font>+<a name="(line72)"></a>+<a name="(line73)"></a><a name="children"></a>children<font color=Cyan>,</font> elm<font color=Cyan>,</font> txt <font color=Red>::</font> DFilter i+<a name="(line74)"></a>children <font color=Red>=</font> local C<font color=Cyan>.</font>children+<a name="(line75)"></a><a name="elm"></a>elm      <font color=Red>=</font> local C<font color=Cyan>.</font>elm+<a name="(line76)"></a><a name="txt"></a>txt      <font color=Red>=</font> local C<font color=Cyan>.</font>txt+<a name="(line77)"></a>+<a name="(line78)"></a><a name="applypred"></a>applypred <font color=Red>::</font> CFilter i <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> CFilter i+<a name="(line79)"></a>applypred f p <font color=Red>=</font> <font color=Red>\</font>xml<font color=Red>-&gt;</font> <font color=Cyan>(</font>const f <font color=Cyan>`with`</font> p<font color=Cyan>)</font> xml xml+<a name="(line80)"></a>+<a name="(line81)"></a><a name="iffind"></a>iffind <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String <font color=Red>-&gt;</font> DFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line82)"></a>iffind key yes no xml c<font color=Red>@</font><font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="(line83)"></a>  <font color=Green><u>case</u></font> <font color=Cyan>(</font>lookup key <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="(line84)"></a>    Nothing <font color=Red>-&gt;</font> no xml c+<a name="(line85)"></a>    <font color=Cyan>(</font>Just v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> yes <font color=Cyan>(</font>show v<font color=Cyan>)</font> xml c+<a name="(line86)"></a>iffind key yes no xml other <font color=Red>=</font> no xml other+<a name="(line87)"></a>+<a name="(line88)"></a><a name="ifTxt"></a>ifTxt <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line89)"></a>ifTxt yes no xml c<font color=Red>@</font><font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> yes s xml c+<a name="(line90)"></a>ifTxt yes no xml c                 <font color=Red>=</font> no xml c+<a name="(line91)"></a>+<a name="(line92)"></a><a name="cat"></a>cat <font color=Red>::</font> <font color=Red>[</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>a<font color=Red>-&gt;</font>b<font color=Red>-&gt;</font><font color=Red>[</font>c<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line93)"></a>cat fs <font color=Red>=</font> <font color=Red>\</font>xml sub<font color=Red>-&gt;</font> concat <font color=Red>[</font> f xml sub <font color=Red>|</font> f <font color=Red>&lt;-</font> fs <font color=Red>]</font>+<a name="(line94)"></a>+<a name="(line95)"></a><a name="/>"></a><font color=Cyan>(</font><font color=Cyan>/&gt;</font><font color=Cyan>)</font> <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line96)"></a>f <font color=Cyan>/&gt;</font> g <font color=Red>=</font> g <font color=Cyan>`o`</font> children <font color=Cyan>`o`</font> f+<a name="(line97)"></a>+<a name="(line98)"></a><a name="</"></a><font color=Cyan>(</font><font color=Cyan>&lt;/</font><font color=Cyan>)</font> <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line99)"></a>f <font color=Cyan>&lt;/</font> g <font color=Red>=</font> f <font color=Cyan>`with`</font> <font color=Cyan>(</font>g <font color=Cyan>`o`</font> children<font color=Cyan>)</font>+<a name="(line100)"></a>+<a name="(line101)"></a><a name="deep"></a>deep<font color=Cyan>,</font> deepest<font color=Cyan>,</font> multi <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> DFilter i+<a name="(line102)"></a>deep f    <font color=Red>=</font> f <font color=Cyan>|&gt;|</font> <font color=Cyan>(</font>deep f <font color=Cyan>`o`</font> children<font color=Cyan>)</font>+<a name="(line103)"></a><a name="deepest"></a>deepest f <font color=Red>=</font> <font color=Cyan>(</font>deepest f <font color=Cyan>`o`</font> children<font color=Cyan>)</font> <font color=Cyan>|&gt;|</font> f+<a name="(line104)"></a><a name="multi"></a>multi f   <font color=Red>=</font> f <font color=Cyan>`union`</font> <font color=Cyan>(</font>multi f <font color=Cyan>`o`</font> children<font color=Cyan>)</font>+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Xtract/Lex.html view
@@ -0,0 +1,132 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | This is another hand-written lexer, this time for the Xtract</font>+<a name="(line2)"></a><font color=Blue>--   command-language.  The entry point is lexXtract.  You don't</font>+<a name="(line3)"></a><font color=Blue>--   normally need to use this module directly - the lexer is called</font>+<a name="(line4)"></a><font color=Blue>--   automatically by the parser.  (We only expose this interface</font>+<a name="(line5)"></a><font color=Blue>--   for debugging purposes.)</font>+<a name="(line6)"></a><font color=Blue>--</font>+<a name="(line7)"></a><font color=Blue>--   The Xtract command language is very like the XPath specification.</font>+<a name="(line8)"></a>+<a name="(line9)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Xtract<font color=Cyan>.</font>Lex+<a name="(line10)"></a>  <font color=Cyan>(</font> lexXtract+<a name="(line11)"></a>  <font color=Cyan>,</font> Posn<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line12)"></a>  <font color=Cyan>,</font> TokenT<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="(line13)"></a>  <font color=Cyan>,</font> Token+<a name="(line14)"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line15)"></a>+<a name="(line16)"></a><font color=Green><u>import</u></font> Char+<a name="(line17)"></a><font color=Green><u>import</u></font> List<font color=Cyan>(</font>isPrefixOf<font color=Cyan>)</font>+<a name="(line18)"></a>+<a name="(line19)"></a>+<a name="(line20)"></a><a name="Token"></a><font color=Green><u>type</u></font> Token <font color=Red>=</font> Either String <font color=Cyan>(</font>Posn<font color=Cyan>,</font> TokenT<font color=Cyan>)</font>+<a name="(line21)"></a>+<a name="(line22)"></a><a name="Posn"></a><font color=Green><u>data</u></font> Posn <font color=Red>=</font> Pn Int		<font color=Blue>-- char index only</font>+<a name="(line23)"></a>        <font color=Green><u>deriving</u></font> Eq+<a name="(line24)"></a>+<a name="(line25)"></a><font color=Green><u>instance</u></font> Show Posn <font color=Green><u>where</u></font>+<a name="(line26)"></a>      showsPrec p <font color=Cyan>(</font>Pn c<font color=Cyan>)</font> <font color=Red>=</font> showString <font color=Magenta>"char pos "</font> <font color=Cyan>.</font> shows c+<a name="(line27)"></a>+<a name="(line28)"></a><a name="TokenT"></a><font color=Green><u>data</u></font> TokenT <font color=Red>=</font>+<a name="(line29)"></a>      Symbol String+<a name="(line30)"></a>    <font color=Red>|</font> TokString String		<font color=Blue>--     begins with letter</font>+<a name="(line31)"></a>    <font color=Red>|</font> TokNum Integer		<font color=Blue>--     begins with digit</font>+<a name="(line32)"></a>    <font color=Green><u>deriving</u></font> Eq+<a name="(line33)"></a>+<a name="(line34)"></a><font color=Green><u>instance</u></font> Show TokenT <font color=Green><u>where</u></font>+<a name="(line35)"></a>    showsPrec p <font color=Cyan>(</font>Symbol s<font color=Cyan>)</font> <font color=Red>=</font> showString s+<a name="(line36)"></a>    showsPrec p <font color=Cyan>(</font>TokString s<font color=Cyan>)</font> <font color=Red>=</font> showString s+<a name="(line37)"></a>    showsPrec p <font color=Cyan>(</font>TokNum n<font color=Cyan>)</font> <font color=Red>=</font> shows n+<a name="(line38)"></a>+<a name="(line39)"></a><a name="emit"></a>emit <font color=Red>::</font> TokenT <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> Token+<a name="(line40)"></a>emit tok p <font color=Red>=</font> forcep p <font color=Cyan>`seq`</font> Right <font color=Cyan>(</font>p<font color=Cyan>,</font>tok<font color=Cyan>)</font>+<a name="(line41)"></a>  <font color=Green><u>where</u></font> forcep <font color=Cyan>(</font>Pn n<font color=Cyan>)</font> <font color=Red>=</font> n+<a name="(line42)"></a>+<a name="(line43)"></a><a name="lexerror"></a>lexerror <font color=Red>::</font> String <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line44)"></a>lexerror s p <font color=Red>=</font> <font color=Red>[</font>Left <font color=Cyan>(</font><font color=Magenta>"Lexical error in selection pattern at "</font><font color=Cyan>++</font>show p<font color=Cyan>++</font><font color=Magenta>": "</font>+<a name="(line45)"></a>                       <font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line46)"></a>+<a name="(line47)"></a><a name="addcol"></a>addcol <font color=Red>::</font> Int <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> Posn+<a name="(line48)"></a>addcol n <font color=Cyan>(</font>Pn c<font color=Cyan>)</font> <font color=Red>=</font> Pn <font color=Cyan>(</font>c<font color=Cyan>+</font>n<font color=Cyan>)</font>+<a name="(line49)"></a>+<a name="(line50)"></a><a name="newline"></a>newline<font color=Cyan>,</font> tab <font color=Red>::</font> Posn <font color=Red>-&gt;</font> Posn+<a name="(line51)"></a>newline <font color=Cyan>(</font>Pn c<font color=Cyan>)</font> <font color=Red>=</font> Pn <font color=Cyan>(</font>c<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font>+<a name="(line52)"></a><a name="tab"></a>tab     <font color=Cyan>(</font>Pn c<font color=Cyan>)</font> <font color=Red>=</font> Pn <font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>(</font>c<font color=Cyan>`div`</font><font color=Magenta>8</font><font color=Cyan>)</font><font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font><font color=Cyan>*</font><font color=Magenta>8</font><font color=Cyan>)</font>+<a name="(line53)"></a>+<a name="(line54)"></a><a name="white"></a>white <font color=Red>::</font> Char <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> Posn+<a name="(line55)"></a>white <font color=Magenta>'\t'</font> <font color=Red>=</font> tab+<a name="(line56)"></a>white <font color=Magenta>' '</font>  <font color=Red>=</font> addcol <font color=Magenta>1</font>+<a name="(line57)"></a>white <font color=Magenta>'\n'</font> <font color=Red>=</font> addcol <font color=Magenta>1</font>+<a name="(line58)"></a>white <font color=Magenta>'\r'</font> <font color=Red>=</font> addcol <font color=Magenta>1</font>+<a name="(line59)"></a>white <font color=Magenta>'\xa0'</font> <font color=Red>=</font> addcol <font color=Magenta>1</font>+<a name="(line60)"></a>+<a name="(line61)"></a><a name="blank"></a>blank <font color=Red>::</font> <font color=Cyan>(</font>Posn<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font><font color=Red>[</font>Token<font color=Red>]</font><font color=Cyan>)</font> <font color=Red>-&gt;</font> Posn<font color=Red>-&gt;</font> String<font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line62)"></a>blank k p []       <font color=Red>=</font> []+<a name="(line63)"></a>blank k p <font color=Cyan>(</font><font color=Magenta>' '</font><font color=Red><b>:</b></font> s<font color=Cyan>)</font> <font color=Red>=</font> blank k <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> s+<a name="(line64)"></a>blank k p <font color=Cyan>(</font><font color=Magenta>'\t'</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font> <font color=Red>=</font> blank k <font color=Cyan>(</font>tab p<font color=Cyan>)</font> s+<a name="(line65)"></a>blank k p <font color=Cyan>(</font><font color=Magenta>'\n'</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font> <font color=Red>=</font> blank k <font color=Cyan>(</font>newline p<font color=Cyan>)</font> s+<a name="(line66)"></a>blank k p <font color=Cyan>(</font><font color=Magenta>'\r'</font><font color=Red><b>:</b></font>s<font color=Cyan>)</font> <font color=Red>=</font> blank k p s+<a name="(line67)"></a>blank k p <font color=Cyan>(</font><font color=Magenta>'\xa0'</font><font color=Red><b>:</b></font> s<font color=Cyan>)</font> <font color=Red>=</font> blank k <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> s+<a name="(line68)"></a>blank k p    s     <font color=Red>=</font> k p s+<a name="(line69)"></a>+<a name="(line70)"></a><a name="lexXtract"></a><font color=Blue>----</font>+<a name="(line71)"></a><font color=Blue>-- | First argument is a transformer for pattern strings, e.g. map toLower,</font>+<a name="(line72)"></a><font color=Blue>--   but only applying to parts of the pattern not in quotation marks.</font>+<a name="(line73)"></a><font color=Blue>--   (Needed to canonicalise HTML where tags are case-insensitive, but</font>+<a name="(line74)"></a><font color=Blue>--   attribute values are case sensitive.)</font>+<a name="(line75)"></a>lexXtract <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line76)"></a>lexXtract f <font color=Red>=</font> selAny f <font color=Cyan>(</font>Pn <font color=Magenta>1</font><font color=Cyan>)</font>+<a name="(line77)"></a>+<a name="(line78)"></a><a name="syms"></a>syms <font color=Red>=</font> <font color=Magenta>"/[]()@,=*&amp;|~$+-&lt;&gt;"</font>+<a name="(line79)"></a>+<a name="(line80)"></a><a name="selAny"></a>selAny <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> Posn <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Token<font color=Red>]</font>+<a name="(line81)"></a>selAny f p [] <font color=Red>=</font> []+<a name="(line82)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'/'</font><font color=Red><b>:</b></font><font color=Magenta>'/'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>"//"</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>2</font> p<font color=Cyan>)</font> ss+<a name="(line83)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'!'</font><font color=Red><b>:</b></font><font color=Magenta>'='</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>"!="</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>2</font> p<font color=Cyan>)</font> ss+<a name="(line84)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><font color=Red><b>:</b></font><font color=Magenta>'='</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>"&lt;="</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>2</font> p<font color=Cyan>)</font> ss+<a name="(line85)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><font color=Red><b>:</b></font><font color=Magenta>'='</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>"&gt;="</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>2</font> p<font color=Cyan>)</font> ss+<a name="(line86)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'\''</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>    <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>"'"</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>+<a name="(line87)"></a>                          accumulateUntil <font color=Magenta>'\''</font> <font color=Cyan>(</font>Symbol <font color=Magenta>"'"</font><font color=Cyan>)</font> [] p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line88)"></a>                                          <font color=Cyan>(</font>selAny f<font color=Cyan>)</font>+<a name="(line89)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'"'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>     <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>"\""</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>+<a name="(line90)"></a>                          accumulateUntil <font color=Magenta>'"'</font> <font color=Cyan>(</font>Symbol <font color=Magenta>"\""</font><font color=Cyan>)</font> [] p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line91)"></a>                                          <font color=Cyan>(</font>selAny f<font color=Cyan>)</font>+<a name="(line92)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'_'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>     <font color=Red>=</font> gatherName f <font color=Magenta>"_"</font> p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss <font color=Cyan>(</font>blank <font color=Cyan>(</font>selAny f<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line93)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>':'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>     <font color=Red>=</font> gatherName f <font color=Magenta>":"</font> p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss <font color=Cyan>(</font>blank <font color=Cyan>(</font>selAny f<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line94)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'.'</font><font color=Red><b>:</b></font><font color=Magenta>'='</font><font color=Red><b>:</b></font><font color=Magenta>'.'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>".=."</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>3</font> p<font color=Cyan>)</font> ss+<a name="(line95)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'.'</font><font color=Red><b>:</b></font><font color=Magenta>'!'</font><font color=Red><b>:</b></font><font color=Magenta>'='</font><font color=Red><b>:</b></font><font color=Magenta>'.'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line96)"></a>                            <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>".!=."</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font> selAny f <font color=Cyan>(</font>addcol <font color=Magenta>4</font> p<font color=Cyan>)</font> ss+<a name="(line97)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'.'</font><font color=Red><b>:</b></font><font color=Magenta>'&lt;'</font><font color=Red><b>:</b></font><font color=Magenta>'.'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>".&lt;."</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>3</font> p<font color=Cyan>)</font> ss+<a name="(line98)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'.'</font><font color=Red><b>:</b></font><font color=Magenta>'&lt;'</font><font color=Red><b>:</b></font><font color=Magenta>'='</font><font color=Red><b>:</b></font><font color=Magenta>'.'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line99)"></a>                            <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>".&lt;=."</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font> selAny f <font color=Cyan>(</font>addcol <font color=Magenta>4</font> p<font color=Cyan>)</font> ss+<a name="(line100)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'.'</font><font color=Red><b>:</b></font><font color=Magenta>'&gt;'</font><font color=Red><b>:</b></font><font color=Magenta>'.'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font> <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>".&gt;."</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>3</font> p<font color=Cyan>)</font> ss+<a name="(line101)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'.'</font><font color=Red><b>:</b></font><font color=Magenta>'&gt;'</font><font color=Red><b>:</b></font><font color=Magenta>'='</font><font color=Red><b>:</b></font><font color=Magenta>'.'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line102)"></a>                            <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>".&gt;=."</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font> selAny f <font color=Cyan>(</font>addcol <font color=Magenta>4</font> p<font color=Cyan>)</font> ss+<a name="(line103)"></a>selAny f p <font color=Cyan>(</font><font color=Magenta>'.'</font><font color=Red><b>:</b></font><font color=Magenta>'/'</font><font color=Red><b>:</b></font>ss<font color=Cyan>)</font>     <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Magenta>"./"</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>  selAny f <font color=Cyan>(</font>addcol <font color=Magenta>2</font> p<font color=Cyan>)</font> ss+<a name="(line104)"></a>selAny f p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line105)"></a>    <font color=Red>|</font> s <font color=Cyan>`elem`</font> syms   <font color=Red>=</font> emit <font color=Cyan>(</font>Symbol <font color=Red>[</font>s<font color=Red>]</font><font color=Cyan>)</font> p<font color=Red><b>:</b></font>     selAny f <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line106)"></a>    <font color=Red>|</font> isSpace s       <font color=Red>=</font> blank <font color=Cyan>(</font>selAny f<font color=Cyan>)</font> p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font>+<a name="(line107)"></a>    <font color=Red>|</font> isAlpha s       <font color=Red>=</font> gatherName f <font color=Red>[</font>s<font color=Red>]</font> p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss <font color=Cyan>(</font>blank <font color=Cyan>(</font>selAny f<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line108)"></a>    <font color=Red>|</font> isDigit s       <font color=Red>=</font> gatherNum    <font color=Red>[</font>s<font color=Red>]</font> p <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss <font color=Cyan>(</font>blank <font color=Cyan>(</font>selAny f<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line109)"></a>    <font color=Red>|</font> otherwise       <font color=Red>=</font> lexerror <font color=Magenta>"unrecognised pattern"</font> p+<a name="(line110)"></a>+<a name="(line111)"></a><a name="gatherName"></a>gatherName f acc pos p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font> k+<a name="(line112)"></a>  <font color=Red>|</font> isAlphaNum s <font color=Cyan>||</font> s <font color=Cyan>`elem`</font> <font color=Magenta>"-_:"</font> <font color=Red>=</font> gatherName f <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line113)"></a>gatherName f acc pos p ss k <font color=Red>=</font>+<a name="(line114)"></a>  emit <font color=Cyan>(</font>TokString <font color=Cyan>(</font>f <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> k p ss+<a name="(line115)"></a>+<a name="(line116)"></a><a name="gatherNum"></a>gatherNum acc pos p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font> k+<a name="(line117)"></a>  <font color=Red>|</font> isHexDigit s <font color=Red>=</font> gatherNum <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+<a name="(line118)"></a>gatherNum acc pos p ss k <font color=Red>=</font>+<a name="(line119)"></a>  emit <font color=Cyan>(</font>TokNum <font color=Cyan>(</font>read <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> k p ss+<a name="(line120)"></a>+<a name="(line121)"></a><a name="accumulateUntil"></a>accumulateUntil c tok acc pos  p  [] k <font color=Red>=</font>+<a name="(line122)"></a>    lexerror <font color=Cyan>(</font><font color=Magenta>"found end of pattern while looking for "</font><font color=Cyan>++</font>c+<a name="(line123)"></a>              <font color=Red><b>:</b></font><font color=Magenta>" to match opening quote at "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font> p+<a name="(line124)"></a>accumulateUntil c tok acc pos  p <font color=Cyan>(</font>s<font color=Red><b>:</b></font>ss<font color=Cyan>)</font> k+<a name="(line125)"></a>    <font color=Red>|</font> c<font color=Cyan>==</font>s       <font color=Red>=</font> emit <font color=Cyan>(</font>TokString <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font>+<a name="(line126)"></a>                                  emit tok p<font color=Red><b>:</b></font> k <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss+<a name="(line127)"></a>    <font color=Red>|</font> isSpace s  <font color=Red>=</font> accumulateUntil c tok <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>white s p<font color=Cyan>)</font> ss k+<a name="(line128)"></a>    <font color=Red>|</font> otherwise  <font color=Red>=</font> accumulateUntil c tok <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font> pos <font color=Cyan>(</font>addcol <font color=Magenta>1</font> p<font color=Cyan>)</font> ss k+</pre>+</html>
+ docs/HaXml/src/Text/XML/HaXml/Xtract/Parse.html view
@@ -0,0 +1,420 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<pre><a name="(line1)"></a><font color=Blue>-- | A parser for the Xtract command-language.  (The string input is</font>+<a name="(line2)"></a><font color=Blue>--   tokenised internally by the lexer 'lexXtract'.)</font>+<a name="(line3)"></a><font color=Blue>--   See &lt;<a href="http://www.haskell.org/HaXml/Xtract.html">http://www.haskell.org/HaXml/Xtract.html</a>&gt; for the grammar that</font>+<a name="(line4)"></a><font color=Blue>--   is accepted.</font>+<a name="(line5)"></a>+<a name="(line6)"></a><font color=Blue>--   Because the original Xtract grammar was left-recursive, we have</font>+<a name="(line7)"></a><font color=Blue>--   transformed it into a non-left-recursive form.</font>+<a name="(line8)"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Xtract<font color=Cyan>.</font>Parse <font color=Cyan>(</font>parseXtract<font color=Cyan>,</font>xtract<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="(line9)"></a>+<a name="(line10)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly hiding <font color=Cyan>(</font>bracket<font color=Cyan>)</font>+<a name="(line11)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Xtract<font color=Cyan>.</font>Lex+<a name="(line12)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Xtract<font color=Cyan>.</font>Combinators <font color=Green><u>as</u></font> D+<a name="(line13)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators <font color=Green><u>as</u></font> C+<a name="(line14)"></a><font color=Green><u>import</u></font> List<font color=Cyan>(</font>isPrefixOf<font color=Cyan>)</font>+<a name="(line15)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape <font color=Cyan>(</font>xmlUnEscapeContent<font color=Cyan>,</font>stdXmlEscaper<font color=Cyan>)</font>+<a name="(line16)"></a>+<a name="(line17)"></a><a name="unescape"></a><font color=Blue>-- output transformer - to ensure that text/references are glued together</font>+<a name="(line18)"></a>unescape <font color=Red>=</font> xmlUnEscapeContent stdXmlEscaper+<a name="(line19)"></a>+<a name="(line20)"></a>+<a name="(line21)"></a><a name="xtract"></a><font color=Blue>-- | To convert an Xtract query into an ordinary HaXml combinator expression.</font>+<a name="(line22)"></a><font color=Blue>--   First arg is a tag-transformation function (e.g. map toLower) applied</font>+<a name="(line23)"></a><font color=Blue>---  before matching.  Second arg is the query string.</font>+<a name="(line24)"></a>xtract <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> CFilter i+<a name="(line25)"></a>xtract f query+<a name="(line26)"></a>    <font color=Red>|</font> interiorRef lexedQ <font color=Red>=</font> dfilter <font color=Cyan>(</font>parseXtract lexedQ<font color=Cyan>)</font>+<a name="(line27)"></a>    <font color=Red>|</font> otherwise          <font color=Red>=</font> cfilter <font color=Cyan>(</font>parseXtract lexedQ<font color=Cyan>)</font>+<a name="(line28)"></a>  <font color=Green><u>where</u></font>+<a name="(line29)"></a>    lexedQ <font color=Red>=</font> lexXtract f query+<a name="(line30)"></a>    <font color=Blue>-- test whether query has interior reference to doc root</font>+<a name="(line31)"></a>    interiorRef <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>Symbol s<font color=Cyan>)</font><font color=Red><b>:</b></font> Right <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>Symbol <font color=Magenta>"//"</font><font color=Cyan>)</font><font color=Red><b>:</b></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>+<a name="(line32)"></a>                                          <font color=Red>|</font> s <font color=Cyan>`elem`</font> predicateIntro <font color=Red>=</font> True+<a name="(line33)"></a>    interiorRef <font color=Cyan>(</font>Right <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>Symbol s<font color=Cyan>)</font><font color=Red><b>:</b></font> Right <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font>Symbol <font color=Magenta>"/"</font><font color=Cyan>)</font><font color=Red><b>:</b></font> <font color=Green><u>_</u></font><font color=Cyan>)</font>+<a name="(line34)"></a>                                          <font color=Red>|</font> s <font color=Cyan>`elem`</font> predicateIntro <font color=Red>=</font> True+<a name="(line35)"></a>    interiorRef <font color=Cyan>(</font><font color=Green><u>_</u></font> <font color=Red><b>:</b></font> rest<font color=Cyan>)</font> <font color=Red>=</font> interiorRef rest+<a name="(line36)"></a>    interiorRef [] <font color=Red>=</font> False+<a name="(line37)"></a>    predicateIntro <font color=Red>=</font> <font color=Red>[</font> <font color=Magenta>"["</font><font color=Cyan>,</font> <font color=Magenta>"("</font>+<a name="(line38)"></a>                     <font color=Cyan>,</font>  <font color=Magenta>"&amp;"</font><font color=Cyan>,</font>   <font color=Magenta>"|"</font><font color=Cyan>,</font>  <font color=Magenta>"~"</font>+<a name="(line39)"></a>                     <font color=Cyan>,</font>  <font color=Magenta>"="</font><font color=Cyan>,</font>  <font color=Magenta>"!="</font><font color=Cyan>,</font>  <font color=Magenta>"&lt;"</font><font color=Cyan>,</font>  <font color=Magenta>"&lt;="</font><font color=Cyan>,</font>  <font color=Magenta>"&gt;"</font><font color=Cyan>,</font>  <font color=Magenta>"&gt;="</font>+<a name="(line40)"></a>                     <font color=Cyan>,</font> <font color=Magenta>".=."</font><font color=Cyan>,</font><font color=Magenta>".!=."</font><font color=Cyan>,</font><font color=Magenta>".&lt;."</font><font color=Cyan>,</font><font color=Magenta>".&lt;=."</font><font color=Cyan>,</font><font color=Magenta>".&gt;."</font><font color=Cyan>,</font><font color=Magenta>".&gt;=."</font> <font color=Red>]</font>+<a name="(line41)"></a>+<a name="(line42)"></a><a name="parseXtract"></a><font color=Blue>-- | The cool thing is that the Xtract command parser directly builds</font>+<a name="(line43)"></a><font color=Blue>--   a higher-order 'DFilter' (see "Text.XML.HaXml.Xtract.Combinators")</font>+<a name="(line44)"></a><font color=Blue>--   which can be applied to an XML document without further ado.</font>+<a name="(line45)"></a><font color=Blue>--   (@parseXtract@ halts the program if a parse error is found.)</font>+<a name="(line46)"></a>parseXtract <font color=Red>::</font> <font color=Red>[</font>Token<font color=Red>]</font> <font color=Red>-&gt;</font> DFilter i+<a name="(line47)"></a>parseXtract <font color=Red>=</font> either error id <font color=Cyan>.</font> parseXtract'+<a name="(line48)"></a>+<a name="(line49)"></a><a name="parseXtract'"></a><font color=Blue>-- | @parseXtract'@ returns error messages through the Either type.</font>+<a name="(line50)"></a>parseXtract' <font color=Red>::</font> <font color=Red>[</font>Token<font color=Red>]</font> <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line51)"></a>parseXtract' <font color=Red>=</font> fst <font color=Cyan>.</font> runParser <font color=Cyan>(</font>aquery liftLocal<font color=Cyan>)</font>+<a name="(line52)"></a>+<a name="(line53)"></a><a name="XParser"></a><font color=Blue>---- Auxiliary Parsing Functions ----</font>+<a name="(line54)"></a><a name="XParser"></a><font color=Green><u>type</u></font> XParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Either String <font color=Cyan>(</font>Posn<font color=Cyan>,</font>TokenT<font color=Cyan>)</font><font color=Cyan>)</font> a+<a name="(line55)"></a>+<a name="(line56)"></a><a name="string"></a>string <font color=Red>::</font> XParser String+<a name="(line57)"></a>string <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> inp <font color=Green><u>of</u></font>+<a name="(line58)"></a>                <font color=Cyan>(</font>Left err<font color=Red><b>:</b></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Cyan>,</font> inp<font color=Cyan>)</font>+<a name="(line59)"></a>                <font color=Cyan>(</font>Right <font color=Cyan>(</font>p<font color=Cyan>,</font>TokString n<font color=Cyan>)</font><font color=Red><b>:</b></font>ts<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right n<font color=Cyan>,</font> ts<font color=Cyan>)</font>+<a name="(line60)"></a>                ts <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"expected a string"</font><font color=Cyan>)</font><font color=Cyan>,</font> ts<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line61)"></a><a name="number"></a>number <font color=Red>::</font> XParser Integer+<a name="(line62)"></a>number <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> inp <font color=Green><u>of</u></font>+<a name="(line63)"></a>                <font color=Cyan>(</font>Left err<font color=Red><b>:</b></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Cyan>,</font> inp<font color=Cyan>)</font>+<a name="(line64)"></a>                <font color=Cyan>(</font>Right <font color=Cyan>(</font>p<font color=Cyan>,</font>TokNum n<font color=Cyan>)</font><font color=Red><b>:</b></font>ts<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right n<font color=Cyan>,</font> ts<font color=Cyan>)</font>+<a name="(line65)"></a>                ts <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"expected a number"</font><font color=Cyan>)</font><font color=Cyan>,</font> ts<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line66)"></a><a name="symbol"></a>symbol <font color=Red>::</font> String <font color=Red>-&gt;</font> XParser ()+<a name="(line67)"></a>symbol s <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>inp <font color=Red>-&gt;</font> <font color=Green><u>case</u></font> inp <font color=Green><u>of</u></font>+<a name="(line68)"></a>                <font color=Cyan>(</font>Left err<font color=Red><b>:</b></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>err<font color=Cyan>)</font><font color=Cyan>,</font> inp<font color=Cyan>)</font>+<a name="(line69)"></a>                <font color=Cyan>(</font>Right <font color=Cyan>(</font>p<font color=Cyan>,</font> Symbol n<font color=Cyan>)</font><font color=Red><b>:</b></font>ts<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>==</font>s <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right ()<font color=Cyan>,</font> ts<font color=Cyan>)</font>+<a name="(line70)"></a>                ts <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font><font color=Magenta>"expected symbol "</font><font color=Cyan>++</font>s<font color=Cyan>)</font><font color=Cyan>,</font> ts<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line71)"></a>+<a name="(line72)"></a><a name="quote"></a>quote <font color=Red>=</font> oneOf <font color=Red>[</font> symbol <font color=Magenta>"'"</font><font color=Cyan>,</font>  symbol <font color=Magenta>"\""</font> <font color=Red>]</font>+<a name="(line73)"></a>+<a name="(line74)"></a><a name="pam"></a>pam fs x <font color=Red>=</font> <font color=Red>[</font> f x <font color=Red>|</font> f <font color=Red>&lt;-</font> fs <font color=Red>]</font>+<a name="(line75)"></a>+<a name="(line76)"></a>+<a name="(line77)"></a><font color=Blue>{--- original Xtract grammar ----+<a name="(line78)"></a>      query     = string			tagname+<a name="(line79)"></a>                | string *			tagname prefix+<a name="(line80)"></a>                | * string			tagname suffix+<a name="(line81)"></a>                | *				any element+<a name="(line82)"></a>                | -				chardata+<a name="(line83)"></a>                | ( query )+<a name="(line84)"></a>                | query / query			parent/child relationship+<a name="(line85)"></a>                | query // query		deep inside+<a name="(line86)"></a>                | query + query			union of queries+<a name="(line87)"></a>                | query [predicate]+<a name="(line88)"></a>                | query [positions]+<a name="(line89)"></a>+<a name="(line90)"></a>      predicate = quattr			has attribute+<a name="(line91)"></a>                | quattr op ' string '		attribute has value+<a name="(line92)"></a>                | quattr op " string "		attribute has value+<a name="(line93)"></a>                | quattr op  quattr		attribute value comparison (lexical)+<a name="(line94)"></a>                | quattr nop integer  		attribute has value (numerical)+<a name="(line95)"></a>                | quattr nop quattr		attribute value comparison (numerical)+<a name="(line96)"></a>                | ( predicate )			bracketting+<a name="(line97)"></a>                | predicate &amp; predicate		logical and+<a name="(line98)"></a>                | predicate | predicate		logical or+<a name="(line99)"></a>                | ~ predicate			logical not+<a name="(line100)"></a>+<a name="(line101)"></a>      attribute = @ string			has attribute+<a name="(line102)"></a>                | query / @ string		child has attribute+<a name="(line103)"></a>                | -				has textual content+<a name="(line104)"></a>                | query / -			child has textual content+<a name="(line105)"></a>+<a name="(line106)"></a>      quattr    = query+<a name="(line107)"></a>                | attribute+<a name="(line108)"></a>+<a name="(line109)"></a>      op        =  =				equal to+<a name="(line110)"></a>                |  !=				not equal to+<a name="(line111)"></a>                |  &lt;				less than+<a name="(line112)"></a>                |  &lt;=				less than or equal to+<a name="(line113)"></a>                |  &gt;				greater than+<a name="(line114)"></a>                |  &gt;=				greater than or equal to+<a name="(line115)"></a>+<a name="(line116)"></a>      nop       =  .=.				equal to+<a name="(line117)"></a>                |  .!=.				not equal to+<a name="(line118)"></a>                |  .&lt;.				less than+<a name="(line119)"></a>                |  .&lt;=.				less than or equal to+<a name="(line120)"></a>                |  .&gt;.				greater than+<a name="(line121)"></a>                |  .&gt;=.				greater than or equal to+<a name="(line122)"></a>+<a name="(line123)"></a>      positions = position {, positions}	multiple positions+<a name="(line124)"></a>                | position - position		ranges+<a name="(line125)"></a>+<a name="(line126)"></a>      position  = integer			numbering is from 0 upwards+<a name="(line127)"></a>                | $				last+<a name="(line128)"></a>+<a name="(line129)"></a>+<a name="(line130)"></a>---- transformed grammar (removing left recursion)+<a name="(line131)"></a>      aquery = ./ tquery	-- current context+<a name="(line132)"></a>             | tquery		-- also current context+<a name="(line133)"></a>             | / tquery		-- root context+<a name="(line134)"></a>             | // tquery	-- deep context from root+<a name="(line135)"></a>+<a name="(line136)"></a>      tquery = ( tquery ) xquery+<a name="(line137)"></a>             | tag xquery+<a name="(line138)"></a>             | -		-- fixes original grammar ("-/*" is incorrect)+<a name="(line139)"></a>      +<a name="(line140)"></a>      tag    = string *+<a name="(line141)"></a>             | string+<a name="(line142)"></a>             | * string+<a name="(line143)"></a>             | *+<a name="(line144)"></a>      +<a name="(line145)"></a>      xquery = / tquery+<a name="(line146)"></a>             | // tquery+<a name="(line147)"></a>             | / @ string	-- new: print attribute value+<a name="(line148)"></a>             | + tquery+<a name="(line149)"></a>             | [ tpredicate ] xquery+<a name="(line150)"></a>             | [ positions ] xquery+<a name="(line151)"></a>             | lambda+<a name="(line152)"></a>+<a name="(line153)"></a>      tpredicate = vpredicate upredicate+<a name="(line154)"></a>      upredicate = &amp; tpredicate+<a name="(line155)"></a>                 | | tpredicate+<a name="(line156)"></a>                 | lambda+<a name="(line157)"></a>      vpredicate = ( tpredicate )+<a name="(line158)"></a>                 | ~ tpredicate+<a name="(line159)"></a>                 | tattribute+<a name="(line160)"></a>+<a name="(line161)"></a>      tattribute = aquery uattribute+<a name="(line162)"></a>                 | @ string vattribute+<a name="(line163)"></a>      uattribute = / @ string vattribute+<a name="(line164)"></a>                 | vattribute+<a name="(line165)"></a>      vattribute = op wattribute+<a name="(line166)"></a>                 | op ' string '+<a name="(line167)"></a>                 | nop wattribute+<a name="(line168)"></a>                 | nop integer+<a name="(line169)"></a>                 | lambda+<a name="(line170)"></a>      wattribute = @ string+<a name="(line171)"></a>                 | aquery / @ string+<a name="(line172)"></a>                 | aquery+<a name="(line173)"></a>+<a name="(line174)"></a>      positions  = simplepos commapos+<a name="(line175)"></a>      simplepos  = integer range+<a name="(line176)"></a>                 | $+<a name="(line177)"></a>      range      = - integer+<a name="(line178)"></a>                 | - $+<a name="(line179)"></a>                 | lambda+<a name="(line180)"></a>      commapos   = , simplepos commapos+<a name="(line181)"></a>                 | lambda+<a name="(line182)"></a>+<a name="(line183)"></a>      op         =  =+<a name="(line184)"></a>                 |  !=+<a name="(line185)"></a>                 |  &lt;+<a name="(line186)"></a>                 |  &lt;=+<a name="(line187)"></a>                 |  &gt;+<a name="(line188)"></a>                 |  &gt;=+<a name="(line189)"></a>+<a name="(line190)"></a>      nop        =  .=.+<a name="(line191)"></a>                 |  .!=.+<a name="(line192)"></a>                 |  .&lt;.+<a name="(line193)"></a>                 |  .&lt;=.+<a name="(line194)"></a>                 |  .&gt;.+<a name="(line195)"></a>                 |  .&gt;=.+<a name="(line196)"></a>-}</font>+<a name="(line197)"></a>+<a name="(line198)"></a><a name="bracket"></a>bracket <font color=Red>::</font> XParser a <font color=Red>-&gt;</font> XParser a+<a name="(line199)"></a>bracket p <font color=Red>=</font>+<a name="(line200)"></a>  <font color=Green><u>do</u></font> symbol <font color=Magenta>"("</font>+<a name="(line201)"></a>     x <font color=Red>&lt;-</font> p+<a name="(line202)"></a>     symbol <font color=Magenta>")"</font>+<a name="(line203)"></a>     return x+<a name="(line204)"></a>+<a name="(line205)"></a>+<a name="(line206)"></a><font color=Blue>---- Xtract parsers ----</font>+<a name="(line207)"></a>+<a name="(line208)"></a><a name="aquery"></a><font color=Blue>-- aquery chooses to search from the root, or only in local context</font>+<a name="(line209)"></a>aquery <font color=Red>::</font>  <font color=Cyan>(</font><font color=Cyan>(</font>CFilter i<font color=Red>-&gt;</font>CFilter i<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>DFilter i<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line210)"></a>           <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line211)"></a>aquery lift <font color=Red>=</font> oneOf+<a name="(line212)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"//"</font>+<a name="(line213)"></a>         tquery <font color=Red>[</font>lift C<font color=Cyan>.</font>multi<font color=Red>]</font>+<a name="(line214)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"/"</font>+<a name="(line215)"></a>         tquery <font color=Red>[</font>lift id<font color=Red>]</font>+<a name="(line216)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"./"</font>+<a name="(line217)"></a>         tquery <font color=Red>[</font><font color=Cyan>(</font>local C<font color=Cyan>.</font>keep D<font color=Cyan>./&gt;</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line218)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> tquery <font color=Red>[</font><font color=Cyan>(</font>local C<font color=Cyan>.</font>keep D<font color=Cyan>./&gt;</font><font color=Cyan>)</font><font color=Red>]</font>+<a name="(line219)"></a>    <font color=Red>]</font>+<a name="(line220)"></a>+<a name="(line221)"></a><a name="tquery"></a>tquery <font color=Red>::</font> <font color=Red>[</font>DFilter i<font color=Red>-&gt;</font>DFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line222)"></a>tquery [] <font color=Red>=</font> tquery <font color=Red>[</font>id<font color=Red>]</font>+<a name="(line223)"></a>tquery <font color=Cyan>(</font>qf<font color=Red><b>:</b></font>cxt<font color=Cyan>)</font> <font color=Red>=</font> oneOf+<a name="(line224)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> q <font color=Red>&lt;-</font> bracket <font color=Cyan>(</font>tquery <font color=Cyan>(</font>qf<font color=Red><b>:</b></font>qf<font color=Red><b>:</b></font>cxt<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line225)"></a>         xquery cxt q+<a name="(line226)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> q <font color=Red>&lt;-</font> xtag+<a name="(line227)"></a>         xquery cxt <font color=Cyan>(</font>qf <font color=Cyan>(</font><font color=Cyan>(</font>unescape <font color=Cyan>.</font><font color=Cyan>)</font><font color=Cyan>.</font>q<font color=Cyan>)</font><font color=Cyan>)</font>	<font color=Blue>-- glue inners texts together</font>+<a name="(line228)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"-"</font>+<a name="(line229)"></a>         return <font color=Cyan>(</font>qf <font color=Cyan>(</font>local C<font color=Cyan>.</font>txt<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line230)"></a>    <font color=Red>]</font>+<a name="(line231)"></a>+<a name="(line232)"></a><a name="xtag"></a>xtag <font color=Red>::</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line233)"></a>xtag <font color=Red>=</font> oneOf+<a name="(line234)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> s <font color=Red>&lt;-</font> string+<a name="(line235)"></a>         symbol <font color=Magenta>"*"</font>+<a name="(line236)"></a>         return <font color=Cyan>(</font>local <font color=Cyan>(</font>C<font color=Cyan>.</font>tagWith <font color=Cyan>(</font>s <font color=Cyan>`isPrefixOf`</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line237)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> s <font color=Red>&lt;-</font> string+<a name="(line238)"></a>         return <font color=Cyan>(</font>local <font color=Cyan>(</font>C<font color=Cyan>.</font>tag s<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line239)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"*"</font>+<a name="(line240)"></a>         s <font color=Red>&lt;-</font> string+<a name="(line241)"></a>         return <font color=Cyan>(</font>local <font color=Cyan>(</font>C<font color=Cyan>.</font>tagWith <font color=Cyan>(</font><font color=Cyan>(</font><font color=Cyan>(</font>reverse s<font color=Cyan>)</font> <font color=Cyan>`isPrefixOf`</font><font color=Cyan>)</font> <font color=Cyan>.</font> reverse<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line242)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"*"</font>+<a name="(line243)"></a>         return <font color=Cyan>(</font>local C<font color=Cyan>.</font>elm<font color=Cyan>)</font>+<a name="(line244)"></a>    <font color=Red>]</font>+<a name="(line245)"></a>+<a name="(line246)"></a>+<a name="(line247)"></a><a name="xquery"></a>xquery <font color=Red>::</font> <font color=Red>[</font>DFilter i<font color=Red>-&gt;</font>DFilter i<font color=Red>]</font> <font color=Red>-&gt;</font> DFilter i <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line248)"></a>xquery cxt q1 <font color=Red>=</font> oneOf+<a name="(line249)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"/"</font>+<a name="(line250)"></a>         <font color=Cyan>(</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"@"</font>+<a name="(line251)"></a>              attr <font color=Red>&lt;-</font> string+<a name="(line252)"></a>              return <font color=Cyan>(</font>D<font color=Cyan>.</font>iffind attr <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font>local <font color=Cyan>(</font>C<font color=Cyan>.</font>literal s<font color=Cyan>)</font><font color=Cyan>)</font> D<font color=Cyan>.</font>none <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> q1<font color=Cyan>)</font>+<a name="(line253)"></a>           <font color=Cyan>`onFail`</font>+<a name="(line254)"></a>           tquery <font color=Cyan>(</font><font color=Cyan>(</font>q1 D<font color=Cyan>./&gt;</font><font color=Cyan>)</font><font color=Red><b>:</b></font>cxt<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line255)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"//"</font>+<a name="(line256)"></a>         tquery <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red>\</font>q2<font color=Red>-&gt;</font> <font color=Cyan>(</font>liftLocal C<font color=Cyan>.</font>multi<font color=Cyan>)</font> q2+<a name="(line257)"></a>                            <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> local C<font color=Cyan>.</font>children <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> q1<font color=Cyan>)</font><font color=Red><b>:</b></font>cxt<font color=Cyan>)</font>+<a name="(line258)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"+"</font>+<a name="(line259)"></a>         q2 <font color=Red>&lt;-</font> tquery cxt+<a name="(line260)"></a>         return <font color=Cyan>(</font>D<font color=Cyan>.</font>cat <font color=Red>[</font>q1<font color=Cyan>,</font>q2<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line261)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"["</font>+<a name="(line262)"></a>         is <font color=Red>&lt;-</font> iindex	<font color=Blue>-- now extended to multiple indexes</font>+<a name="(line263)"></a>         symbol <font color=Magenta>"]"</font>+<a name="(line264)"></a>         xquery cxt <font color=Cyan>(</font><font color=Red>\</font>xml<font color=Red>-&gt;</font> concat <font color=Cyan>.</font> pam is <font color=Cyan>.</font> q1 xml<font color=Cyan>)</font>+<a name="(line265)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"["</font>+<a name="(line266)"></a>         p <font color=Red>&lt;-</font> tpredicate+<a name="(line267)"></a>         symbol <font color=Magenta>"]"</font>+<a name="(line268)"></a>         xquery cxt <font color=Cyan>(</font>q1 <font color=Cyan>`</font>D<font color=Cyan>.</font>with<font color=Cyan>`</font> p<font color=Cyan>)</font>+<a name="(line269)"></a>    <font color=Cyan>,</font> return q1+<a name="(line270)"></a>    <font color=Red>]</font>+<a name="(line271)"></a>+<a name="(line272)"></a><a name="tpredicate"></a>tpredicate <font color=Red>::</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line273)"></a>tpredicate <font color=Red>=</font>+<a name="(line274)"></a>  <font color=Green><u>do</u></font> p <font color=Red>&lt;-</font> vpredicate+<a name="(line275)"></a>     f <font color=Red>&lt;-</font> upredicate+<a name="(line276)"></a>     return <font color=Cyan>(</font>f p<font color=Cyan>)</font>+<a name="(line277)"></a>+<a name="(line278)"></a><a name="upredicate"></a>upredicate <font color=Red>::</font> XParser <font color=Cyan>(</font>DFilter i<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font>+<a name="(line279)"></a>upredicate <font color=Red>=</font> oneOf+<a name="(line280)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"&amp;"</font>+<a name="(line281)"></a>         p2 <font color=Red>&lt;-</font> tpredicate+<a name="(line282)"></a>         return <font color=Cyan>(</font><font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> p2<font color=Cyan>)</font>+<a name="(line283)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"|"</font>+<a name="(line284)"></a>         p2 <font color=Red>&lt;-</font> tpredicate+<a name="(line285)"></a>         return <font color=Cyan>(</font>D<font color=Cyan>.|&gt;|</font> p2<font color=Cyan>)</font>+<a name="(line286)"></a>    <font color=Cyan>,</font> return id+<a name="(line287)"></a>    <font color=Red>]</font>+<a name="(line288)"></a>+<a name="(line289)"></a><a name="vpredicate"></a>vpredicate <font color=Red>::</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line290)"></a>vpredicate <font color=Red>=</font> oneOf+<a name="(line291)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> bracket tpredicate+<a name="(line292)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"~"</font>+<a name="(line293)"></a>         p <font color=Red>&lt;-</font> tpredicate+<a name="(line294)"></a>         return <font color=Cyan>(</font>local C<font color=Cyan>.</font>keep <font color=Cyan>`</font>D<font color=Cyan>.</font>without<font color=Cyan>`</font> p<font color=Cyan>)</font>+<a name="(line295)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> tattribute+<a name="(line296)"></a>    <font color=Red>]</font>+<a name="(line297)"></a>+<a name="(line298)"></a><a name="tattribute"></a>tattribute <font color=Red>::</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line299)"></a>tattribute <font color=Red>=</font> oneOf+<a name="(line300)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> q <font color=Red>&lt;-</font> aquery liftGlobal+<a name="(line301)"></a>         uattribute q+<a name="(line302)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"@"</font>+<a name="(line303)"></a>         s <font color=Red>&lt;-</font> string+<a name="(line304)"></a>         vattribute <font color=Cyan>(</font>local C<font color=Cyan>.</font>keep<font color=Cyan>,</font> local <font color=Cyan>(</font>C<font color=Cyan>.</font>attr s<font color=Cyan>)</font><font color=Cyan>,</font> D<font color=Cyan>.</font>iffind s<font color=Cyan>)</font>+<a name="(line305)"></a>    <font color=Red>]</font>+<a name="(line306)"></a>+<a name="(line307)"></a><a name="uattribute"></a>uattribute <font color=Red>::</font> DFilter i <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line308)"></a>uattribute q <font color=Red>=</font> oneOf+<a name="(line309)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"/"</font>+<a name="(line310)"></a>         symbol <font color=Magenta>"@"</font>+<a name="(line311)"></a>         s <font color=Red>&lt;-</font> string+<a name="(line312)"></a>         vattribute <font color=Cyan>(</font>q<font color=Cyan>,</font> local <font color=Cyan>(</font>C<font color=Cyan>.</font>attr s<font color=Cyan>)</font><font color=Cyan>,</font> D<font color=Cyan>.</font>iffind s<font color=Cyan>)</font>+<a name="(line313)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> vattribute <font color=Cyan>(</font>q<font color=Cyan>,</font> local C<font color=Cyan>.</font>keep<font color=Cyan>,</font>     D<font color=Cyan>.</font>ifTxt<font color=Cyan>)</font>+<a name="(line314)"></a>    <font color=Red>]</font>+<a name="(line315)"></a>+<a name="(line316)"></a><a name="vattribute"></a>vattribute <font color=Red>::</font> <font color=Cyan>(</font>DFilter i<font color=Cyan>,</font> DFilter i<font color=Cyan>,</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font><font color=Red>-&gt;</font>DFilter i<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font>+<a name="(line317)"></a>              <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>)</font>+<a name="(line318)"></a>vattribute <font color=Cyan>(</font>q<font color=Cyan>,</font>a<font color=Cyan>,</font>iffn<font color=Cyan>)</font> <font color=Red>=</font> oneOf+<a name="(line319)"></a>  <font color=Red>[</font> <font color=Green><u>do</u></font> cmp <font color=Red>&lt;-</font> op+<a name="(line320)"></a>       quote+<a name="(line321)"></a>       s2 <font color=Red>&lt;-</font> string+<a name="(line322)"></a>       quote+<a name="(line323)"></a>       return <font color=Cyan>(</font><font color=Cyan>(</font>iffn <font color=Cyan>(</font><font color=Red>\</font>s1<font color=Red>-&gt;</font><font color=Green><u>if</u></font> cmp s1 s2 <font color=Green><u>then</u></font> D<font color=Cyan>.</font>keep <font color=Green><u>else</u></font> D<font color=Cyan>.</font>none<font color=Cyan>)</font> D<font color=Cyan>.</font>none<font color=Cyan>)</font>+<a name="(line324)"></a>               <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> q<font color=Cyan>)</font>+<a name="(line325)"></a>  <font color=Cyan>,</font> <font color=Green><u>do</u></font> cmp <font color=Red>&lt;-</font> op+<a name="(line326)"></a>       <font color=Cyan>(</font>q2<font color=Cyan>,</font>iffn2<font color=Cyan>)</font> <font color=Red>&lt;-</font> wattribute+<a name="(line327)"></a>       return <font color=Cyan>(</font><font color=Cyan>(</font>iffn <font color=Cyan>(</font><font color=Red>\</font>s1<font color=Red>-&gt;</font> iffn2 <font color=Cyan>(</font><font color=Red>\</font>s2<font color=Red>-&gt;</font> <font color=Green><u>if</u></font> cmp s1 s2 <font color=Green><u>then</u></font> D<font color=Cyan>.</font>keep <font color=Green><u>else</u></font> D<font color=Cyan>.</font>none<font color=Cyan>)</font>+<a name="(line328)"></a>                                  D<font color=Cyan>.</font>none<font color=Cyan>)</font>+<a name="(line329)"></a>                     D<font color=Cyan>.</font>none<font color=Cyan>)</font> <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> q<font color=Cyan>)</font>+<a name="(line330)"></a>  <font color=Cyan>,</font> <font color=Green><u>do</u></font> cmp <font color=Red>&lt;-</font> nop+<a name="(line331)"></a>       n <font color=Red>&lt;-</font> number+<a name="(line332)"></a>       return <font color=Cyan>(</font><font color=Cyan>(</font>iffn <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font><font color=Green><u>if</u></font> cmp <font color=Cyan>(</font>read s<font color=Cyan>)</font> n <font color=Green><u>then</u></font> D<font color=Cyan>.</font>keep <font color=Green><u>else</u></font> D<font color=Cyan>.</font>none<font color=Cyan>)</font> D<font color=Cyan>.</font>none<font color=Cyan>)</font>+<a name="(line333)"></a>               <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> q<font color=Cyan>)</font>+<a name="(line334)"></a>  <font color=Cyan>,</font> <font color=Green><u>do</u></font> cmp <font color=Red>&lt;-</font> nop+<a name="(line335)"></a>       <font color=Cyan>(</font>q2<font color=Cyan>,</font>iffn2<font color=Cyan>)</font> <font color=Red>&lt;-</font> wattribute+<a name="(line336)"></a>       return <font color=Cyan>(</font><font color=Cyan>(</font>iffn <font color=Cyan>(</font><font color=Red>\</font>s1<font color=Red>-&gt;</font> iffn2 <font color=Cyan>(</font><font color=Red>\</font>s2<font color=Red>-&gt;</font> <font color=Green><u>if</u></font> cmp <font color=Cyan>(</font>read s1<font color=Cyan>)</font> <font color=Cyan>(</font>read s2<font color=Cyan>)</font> <font color=Green><u>then</u></font> D<font color=Cyan>.</font>keep+<a name="(line337)"></a>                                                                    <font color=Green><u>else</u></font> D<font color=Cyan>.</font>none<font color=Cyan>)</font>+<a name="(line338)"></a>                                  D<font color=Cyan>.</font>none<font color=Cyan>)</font>+<a name="(line339)"></a>                     D<font color=Cyan>.</font>none<font color=Cyan>)</font> <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> q<font color=Cyan>)</font>+<a name="(line340)"></a>  <font color=Cyan>,</font> <font color=Green><u>do</u></font> return <font color=Cyan>(</font><font color=Cyan>(</font>a <font color=Cyan>`</font>D<font color=Cyan>.</font>o<font color=Cyan>`</font> q<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line341)"></a>  <font color=Red>]</font>+<a name="(line342)"></a>+<a name="(line343)"></a><a name="wattribute"></a>wattribute <font color=Red>::</font> XParser <font color=Cyan>(</font>DFilter i<font color=Cyan>,</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font><font color=Red>-&gt;</font>DFilter i<font color=Red>-&gt;</font>DFilter i<font color=Cyan>)</font>+<a name="(line344)"></a>wattribute <font color=Red>=</font> oneOf+<a name="(line345)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"@"</font>+<a name="(line346)"></a>         s <font color=Red>&lt;-</font> string+<a name="(line347)"></a>         return <font color=Cyan>(</font>D<font color=Cyan>.</font>keep<font color=Cyan>,</font> D<font color=Cyan>.</font>iffind s<font color=Cyan>)</font>+<a name="(line348)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> q <font color=Red>&lt;-</font> aquery liftGlobal+<a name="(line349)"></a>         symbol <font color=Magenta>"/"</font>+<a name="(line350)"></a>         symbol <font color=Magenta>"@"</font>+<a name="(line351)"></a>         s <font color=Red>&lt;-</font> string+<a name="(line352)"></a>         return <font color=Cyan>(</font>q<font color=Cyan>,</font> D<font color=Cyan>.</font>iffind s<font color=Cyan>)</font>+<a name="(line353)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> q <font color=Red>&lt;-</font> aquery liftGlobal+<a name="(line354)"></a>         return <font color=Cyan>(</font>q<font color=Cyan>,</font> D<font color=Cyan>.</font>ifTxt<font color=Cyan>)</font>+<a name="(line355)"></a>    <font color=Red>]</font>+<a name="(line356)"></a>+<a name="(line357)"></a>+<a name="(line358)"></a><a name="iindex"></a>iindex <font color=Red>::</font> XParser <font color=Red>[</font><font color=Red>[</font>a<font color=Red>]</font><font color=Red>-&gt;</font><font color=Red>[</font>a<font color=Red>]</font><font color=Red>]</font>+<a name="(line359)"></a>iindex <font color=Red>=</font>+<a name="(line360)"></a>    <font color=Green><u>do</u></font> i <font color=Red>&lt;-</font> simpleindex+<a name="(line361)"></a>       is <font color=Red>&lt;-</font> idxcomma+<a name="(line362)"></a>       return <font color=Cyan>(</font>i<font color=Red><b>:</b></font>is<font color=Cyan>)</font>+<a name="(line363)"></a>+<a name="(line364)"></a><a name="simpleindex"></a>simpleindex <font color=Red>::</font> XParser <font color=Cyan>(</font><font color=Red>[</font>a<font color=Red>]</font><font color=Red>-&gt;</font><font color=Red>[</font>a<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line365)"></a>simpleindex <font color=Red>=</font> oneOf+<a name="(line366)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> n <font color=Red>&lt;-</font> number+<a name="(line367)"></a>         r <font color=Red>&lt;-</font> rrange n+<a name="(line368)"></a>         return r+<a name="(line369)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"$"</font>+<a name="(line370)"></a>         return <font color=Cyan>(</font>C<font color=Cyan>.</font>keep <font color=Cyan>.</font> last<font color=Cyan>)</font>+<a name="(line371)"></a>    <font color=Red>]</font>+<a name="(line372)"></a>+<a name="(line373)"></a><a name="rrange"></a>rrange<font color=Cyan>,</font> numberdollar <font color=Red>::</font> Integer <font color=Red>-&gt;</font> XParser <font color=Cyan>(</font><font color=Red>[</font>a<font color=Red>]</font><font color=Red>-&gt;</font><font color=Red>[</font>a<font color=Red>]</font><font color=Cyan>)</font>+<a name="(line374)"></a>rrange n1 <font color=Red>=</font> oneOf+<a name="(line375)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"-"</font>+<a name="(line376)"></a>         numberdollar n1+<a name="(line377)"></a>    <font color=Cyan>,</font> return <font color=Cyan>(</font>C<font color=Cyan>.</font>keep<font color=Cyan>.</font><font color=Cyan>(</font><font color=Cyan>!!</font><font color=Cyan>(</font>fromInteger n1<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line378)"></a>    <font color=Red>]</font>+<a name="(line379)"></a>+<a name="(line380)"></a><a name="numberdollar"></a>numberdollar n1 <font color=Red>=</font> oneOf+<a name="(line381)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> n2 <font color=Red>&lt;-</font> number+<a name="(line382)"></a>         return <font color=Cyan>(</font>take <font color=Cyan>(</font>fromInteger <font color=Cyan>(</font><font color=Magenta>1</font><font color=Cyan>+</font>n2<font color=Blue>-</font>n1<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> drop <font color=Cyan>(</font>fromInteger n1<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line383)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"$"</font>+<a name="(line384)"></a>         return <font color=Cyan>(</font>drop <font color=Cyan>(</font>fromInteger n1<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line385)"></a>    <font color=Red>]</font>+<a name="(line386)"></a>+<a name="(line387)"></a><a name="idxcomma"></a>idxcomma <font color=Red>::</font> XParser <font color=Red>[</font><font color=Red>[</font>a<font color=Red>]</font><font color=Red>-&gt;</font><font color=Red>[</font>a<font color=Red>]</font><font color=Red>]</font>+<a name="(line388)"></a>idxcomma <font color=Red>=</font> oneOf+<a name="(line389)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>","</font>+<a name="(line390)"></a>         r <font color=Red>&lt;-</font> simpleindex+<a name="(line391)"></a>         rs <font color=Red>&lt;-</font> idxcomma+<a name="(line392)"></a>         return <font color=Cyan>(</font>r<font color=Red><b>:</b></font>rs<font color=Cyan>)</font>+<a name="(line393)"></a>    <font color=Cyan>,</font> return []+<a name="(line394)"></a>    <font color=Red>]</font>+<a name="(line395)"></a>+<a name="(line396)"></a>+<a name="(line397)"></a><a name="op"></a>op <font color=Red>::</font> XParser <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font>+<a name="(line398)"></a>op <font color=Red>=</font> oneOf+<a name="(line399)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"="</font><font color=Cyan>;</font>  return <font color=Cyan>(</font><font color=Cyan>==</font><font color=Cyan>)</font>+<a name="(line400)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"!="</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>/=</font><font color=Cyan>)</font>+<a name="(line401)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"&lt;"</font><font color=Cyan>;</font>  return <font color=Cyan>(</font><font color=Cyan>&lt;</font><font color=Cyan>)</font>+<a name="(line402)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"&lt;="</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>&lt;=</font><font color=Cyan>)</font>+<a name="(line403)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"&gt;"</font><font color=Cyan>;</font>  return <font color=Cyan>(</font><font color=Cyan>&gt;</font><font color=Cyan>)</font>+<a name="(line404)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>"&gt;="</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>&gt;=</font><font color=Cyan>)</font>+<a name="(line405)"></a>    <font color=Red>]</font>+<a name="(line406)"></a>+<a name="(line407)"></a><a name="nop"></a>nop <font color=Red>::</font> XParser <font color=Cyan>(</font>Integer<font color=Red>-&gt;</font>Integer<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font>+<a name="(line408)"></a>nop <font color=Red>=</font> oneOf+<a name="(line409)"></a>    <font color=Red>[</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>".=."</font><font color=Cyan>;</font>  return <font color=Cyan>(</font><font color=Cyan>==</font><font color=Cyan>)</font>+<a name="(line410)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>".!=."</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>/=</font><font color=Cyan>)</font>+<a name="(line411)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>".&lt;."</font><font color=Cyan>;</font>  return <font color=Cyan>(</font><font color=Cyan>&lt;</font><font color=Cyan>)</font>+<a name="(line412)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>".&lt;=."</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>&lt;=</font><font color=Cyan>)</font>+<a name="(line413)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>".&gt;."</font><font color=Cyan>;</font>  return <font color=Cyan>(</font><font color=Cyan>&gt;</font><font color=Cyan>)</font>+<a name="(line414)"></a>    <font color=Cyan>,</font> <font color=Green><u>do</u></font> symbol <font color=Magenta>".&gt;=."</font><font color=Cyan>;</font> return <font color=Cyan>(</font><font color=Cyan>&gt;=</font><font color=Cyan>)</font>+<a name="(line415)"></a>    <font color=Red>]</font>+<a name="(line416)"></a>+</pre>+</html>
docs/Haskell2Xml.html view
@@ -35,7 +35,11 @@ sources - it occasionally fails to recognise the <em>derive</em> command.  We have found a workaround: isolate just the <tt>data</tt> type declarations that are of interest, and run DrIFT on them-separately.)+separately.)  The syntax required is like this example:+<pre>+  data MyType a = A a | B String deriving (Eq, Show)+      {-! derive : Haskell2Xml !-}	-- this line is for DrIFT+</pre>  <p> To read and write Haskell data values as XML files, you
+ docs/XmlContent.html view
@@ -0,0 +1,88 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html> <head> <title> HaXml: Haskell and XML </title> </head>++<body bgcolor='#ffffff'>++<center>+<h2>XmlContent</h2>+</center>+<hr>++<p>+<b>Text.XML.HaXml.XmlContent</b> is a library/class for translating+Haskell data from any program into a valid XML document (and back+again).  In principle, it gives an alternative to the standard Read and+Show classes, allowing you to use fully typed data in Haskell rather+than the generic XML tree representation.++<p>+<b>Usage 1.</b>+It works rather like the existing <em>Read</em> and <em>Show</em>+classes: you must create an instance of the <em>XmlContent</em>+class for every datatype you wish to use for I/O.  However, because+this class is not a standard one, no Haskell compilers support+the <tt>deriving</tt> clause for it yet.  Fear not!  There is a+pre-processor tool called+<a href="http://repetae.net/~john/computer/haskell/DrIFT/"><b>DrIFT</b></a>+which derives class instances automatically.  We have extended+DrIFT's ruleset to include the <em>XmlContent</em> class.++<p>+(Please note that DrIFT is sometimes a bit fragile when parsing Haskell+sources - it occasionally fails to recognise the <em>derive</em>+command.  We have found a workaround: isolate just the <tt>data</tt>+type declarations that are of interest, and run DrIFT on them+separately.)  The syntax required is like this example:+<pre>+  data MyType a = A a | B String deriving (Eq, Show)+      {-! derive : XmlContent !-}	-- this line is for DrIFT+</pre>++<p>+<b>Usage 2.</b>+Alternatively, you may start by having XML documents with a standard DTD+defined elsewhere, e.g. SVG, SMIL, MathML etc.  You can convert the DTD+into an isomorphic collection of Haskell datatypes, including all the+requisite instances of <em>XmlContent</em>, with the tool+<em>DtdToHaskell</em> included in HaXml.+++<p>+<b>API</b>+To read and write Haskell data values as XML files, you+have a choice of function pairs:  <tt>toXML/fromXML</tt>+convert between typed Haskell values and the generic internal+XML representation; <tt>showXml/readXml</tt> convert to/from+Strings; <tt>fWriteXml/fReadXml</tt> convert to/from named files;+<tt>hPutXml/hGetXml</tt> convert to/from file Handles.++<pre>+    toXml     :: XmlContent a =&gt; Bool -&gt; a  -&gt; Document ()+    fromXml   :: XmlContent a =&gt; Document Posn -&gt; Either String a++    readXml   :: XmlContent a =&gt; String        -&gt; Either String a+    showXml   :: XmlContent a =&gt; Bool -&gt; a  -&gt; String++    fReadXml  :: XmlContent a =&gt; FilePath -&gt; IO a+    fWriteXml :: XmlContent a =&gt; FilePath -&gt; a -&gt; IO ()++    hGetXml   :: XmlContent a =&gt; Handle   -&gt; IO a+    hPutXml   :: XmlContent a =&gt; Handle   -&gt; Bool -&gt; a -&gt; IO ()+</pre>++Because parsing the document might fail, some of these functions return+an Either String, where the string contains an error message.  Boolean+arguments to output-writing functions indicate whether or not to include+a DTD in the output.++<p>+Particularly when you read from XML, you may need to resolve the+overloading of the result value in one of the usual ways (e.g. by+implicit context at point of use, by explicit type signatures on values,+use value as an argument to a function with an explicit signature, use+<tt>`asTypeOf`</tt>, etc.)++<hr>++</body>+</html>
docs/changelog.html view
@@ -13,32 +13,111 @@ </center> <hr> -<h3>Changes for 1.13.3</h3>+<h3>Changes in 1.18</h3> <p> <ul>-<li> Updated to work with ghc-6.6.1 (changes to .cabal file).+<li> Removed all the Text.ParserCombinator.* libraries into a separate+     package <a href="http://www.cs.york.ac.uk/fp/polyparse">polyparse</a>,+     which must now be installed prior to HaXml.+<li> New Feature: functions for pretty-printing to Data.ByteString.+<li> Bugfix: Xtract on HTML documents used to downcase both the+     document tags and the query string.  But in fact only the+     tag-matching parts of the query should be downcased.  In+     particular, attribute values now remain case-sensitive.+<li> Bugfix: Xtract did not match attribute values that contained any+     kind of entity reference (general or character).  Now matches+     correctly.+<li> More fixes to the non-Cabal route for building/installing with ghc-6.6.+<li> Changed the name of the Xtract combinators to match the ordinary+     combinators.+<li> </ul> -<h3>Changes for 1.13.2</h3>+<h3>Changes in 1.17</h3> <p> <ul>-<li> Updated to work with ghc-6.6 (removed uses of Data.FiniteMap).+<li> New: lazier pretty-printer+     <ul>+     <li> <tt>Text.XML.HaXml.ShowXmlLazy</tt>+     </ul>+<li> Works with ghc-6.6 (changed uses of Data.FiniteMap to Data.Map).+<li> A bunch of minor bugfixes.+<li> </ul> -<h3>Changes for 1.13.1</h3>+<h3>Changes in 1.16</h3> <p> <ul>-<li> Bugfix to permit percent character in attribute values.-<li> Bugfix to parse unquoted attribute values starting '+' or '#' in HTML.-<li> Bugfix to keep the original DTD in output of 'processXmlWith'.+<li> New: lazier parsers+     <ul>+     <li> <tt>Text.XML.HaXml.ParseLazy</tt>+     <li> <tt>Text.XML.HaXml.Html.ParseLazy</tt>+     <li> <tt>Text.ParserCombinators.PolyLazy</tt>+     <li> <tt>Text.ParserCombinators.PolyStateLazy</tt>+     </ul>+<li> New: lazier tools+     <ul>+     <li> <tt>CanonicaliseLazy</tt>+     <li> <tt>XtractLazy</tt>+     </ul>+<li> New: API call "xmlParseWith"+<li> Bugfix: to permit percent character in attribute values.+<li> Bugfix: to parse unquoted attribute values starting '+' or '#' in HTML.+<li> Bugfix: to keep the original DTD in output of 'processXmlWith'.+<li> Bugfixes: to configuration/build systems.+<li> Bugfix: DtdToHaskell nows avoids generating types whose names clash+             with existing (Prelude,HaXml) types+<li> </ul> -<h3>Changes for 1.13</h3>+<h3>Changes in 1.15</h3> <p> <ul>+<li> New: DrIFT and DtdToHaskell have now both been fully updated to+     produce instances of XmlContent.+<li> New: the parser combinator library Poly has been split into two+     variations, Poly and PolyState.  They have almost the same API,+     only the latter includes a running state where the former does not.+<li> The TextParser library (a replacement for the Haskell'98 Read class)+     has also been improved with more new combinators.  Really, these+     parser combinator experiments do not belong in HaXml, and will+     eventually be split out into a separate package.+</ul>++<h3>Changes in 1.14</h3>+<p>+<ul>+<li> New: Completely replace the Xml2Haskell and Haskell2Xml modules.+     They are now combined into a single class called XmlContent.+     This makes the secondary parsing of generic XML trees+     to typed values more robust, with better error messages, etc.+     DrIFT and DtdToHaskell are being updated to both produce instances+     of XmlContent, depending on whether you start from Haskell or from+     the DTD.  (not yet complete)+<li> New: a SAX-like stream parser for XML events.+<li> Improve the content handling that corresponds to an ANY contentspec.+     (Now represented as an existential type.)+<li> Bugfix: accept attribute values containing the % character, without+     starting a PERef.+<li> Bugfix: for expanding PERefs correctly in entity values.+<li> The DTD for SVG (Scalable Vector Graphics) now goes through DtdToHaskell+     successfully.+</ul>++<h3>Changes for 1.13.1 </h3>+<p>+<ul>+<li> Bugfix: to permit percent character in attribute values.+<li> Bugfix: to parse unquoted attribute values starting '+' or '#' in HTML.+<li> Bugfix: to keep the original DTD in output of 'processXmlWith'.+</ul>++<h3>Changes for 1.13 </h3>+<p>+<ul> <li> Bugfixes to the document validator: no more infinite loops. <li> Bugfixes to lexing mixed text and references between quote chars.-<li> Updated to work with ghc-6.4's new package mechanism.+<li> Support for building with Cabal, and for ghc-6.4's new package format. </ul>  <h3>Changes for 1.12</h3>
+ docs/developerworks.patch view
@@ -0,0 +1,11 @@+--- process.hs.orig     2006-12-11 16:50:45.000000000 +0900++++ process.hs  2006-12-11 16:41:50.000000000 +0900+@@ -1,5 +1,7 @@+ module Main where+-import XmlLib++import Data.Char++import Text.XML.HaXml+++ -- Concise XSLT-like specification of output+ main = processXmlWith (hexagrams `o` tag "IChing")+ hexagrams =
docs/index.html view
@@ -22,6 +22,19 @@ </center> <hr> +<p>+<font color="red">+<b>Warning!</b> The development versions (1.14 upwards) significantly+change the API of some modules!  They may be incomplete, inconsistent,+and liable to change before the next release!  Do not expect code+written against an earlier API to be compatible!  DtdToHaskell has only+recently been fixed to work with the new APIs! <b>Warning!</b>+</font>++<a href="migrate.html">Notes for migrating code from the 1.13 version of+HaXml to the development version.</a>++<hr> <center><h3><a name="what">What is HaXml?</a></h3></center> <p> <b>HaXml</b> is a collection of utilities for parsing, filtering,@@ -32,27 +45,24 @@ <ul> <li> a parser for XML, <li> a separate error-correcting parser for HTML,+<li> a SAX-like stream parser for XML events, <li> an XML validator, <li> pretty-printers for XML and HTML. </ul>  <p>-For processing XML documents, the following components are provided:+For processing XML documents, the following components are also provided: <ul> <li><em>Combinators</em> is a combinator library for generic XML document     processing, including transformation, editing, and generation.-<li><em>Haskell2Xml</em> is a replacement class for Haskell's Show/Read+<li><em>XmlContent</em> is a replacement class for Haskell's Show/Read     classes: it allows you to read and write ordinary Haskell data as XML-    documents.  The <em>DrIFT</em> tool (available from+    documents (and vice versa).  The <em>DrIFT</em> tool (available from     <a href="http://repetae.net/~john/computer/haskell/DrIFT/">     <tt>http://repetae.net/~john/computer/haskell/DrIFT/</tt></a>)     can automatically derive this class for you. <li><em>DtdToHaskell</em> is a tool for translating any valid XML DTD-    into equivalent Haskell types.-<li>In conjunction with the <em>Xml2Haskell</em> class framework,-    this allows you to generate, edit, and transform documents as normal-    typed values in programs, and to read and write them as human-readable-    XML documents.+    into equivalent Haskell types, together with <em>XmlContent</em> instances. <li>Finally, <em>Xtract</em> is a <em>grep</em>-like tool for XML documents,     loosely based on the XPath and XQL query languages.  It can be used     either from the command-line, or within your own code as part of the@@ -64,16 +74,28 @@ <p> <a href="HaXml/index.html">Detailed documentation of the HaXml APIs</a> is generated automatically by Haddock directly from the source code.+<a href="http://haskell.org/HaXml/index.html">Documentation for the+previous (stable) version, HaXml-1.13.2</a>.  <p> An introduction to HaXml for people who know more about XML than about Haskell can be found at <a href="http://www-106.ibm.com/developerworks/xml/library/x-matters14.html"> IBM DeveloperWorks</a>.+Please note that the DeveloperWorks article was based on an older+version of HaXml.  If you try to use the examples given there, you+will need a couple of minor but important edits, given as a+<a href="developerworks.patch">diff patch here</a>.  <p>+Koen Roelandt has written a more recent tutorial about using HaXml+to clean up some ugly HTML pages.+<a href="http://www.krowland.net/tutorials/haxml_tutorial.html">+http://www.krowland.net/tutorials/haxml_tutorial.html</a>++<p> A paper describing and comparing the generic Combinators with-the typed representation (DtdToHaskell/Xml2Haskell) is available here:+the typed representation (DtdToHaskell/XmlContent) is available here: (12 pages of double-column A4) <ul> <li> <a href="icfp99.dvi">icfp99.dvi</a>     (LaTeX dvi format)@@ -85,8 +107,8 @@ Some additional info about using the various facilities is here: <ul> <li> <a href="Combinators.html">Combinators</a>       (HTML format)-<li> <a href="Haskell2Xml.html">Haskell2Xml class</a> (HTML format)-<li> <a href="Xml2Haskell.html">DtdToHaskell tool</a> (HTML format)+<li> <a href="XmlContent.html">XmlContent class</a>   (HTML format)+<li> <a href="DtdToHaskell.html">DtdToHaskell tool</a> (HTML format) <li> <a href="Xtract.html">Xtract tool</a>            (HTML format) </ul> @@ -95,59 +117,67 @@ <ul> <li> To use <em>-package HaXml</em> interactively with GHCi, you need      at least ghci-5.02.3.-<li> Haskell2Xml generates Parameter Entity Declarations in the internal+<li> The function toDTD generates Parameter Entity Declarations in the internal      subset of the DTD, which don't conform to the strict well-formedness      conditions of XML.  We think the constraint in question is spurious,      and any reasonable XML tool ought to deal adequately with full PEs.      Nevertheless, many standard XML processors reject these auto-generated-     DTDs.  The solution is easy - just move the DTD into a separate file!+     DTDs.  The solution is easy - just write the DTD into a separate file! <li> DtdToHaskell generates the Haskell String type for DTD attributes      that are of Tokenized or Notation Types in XML.  This may not be      entirely accurate. </ul>  <hr>-<center><h3><a name="downloads">Downloads</a></h3></center>+<center><h3><a name="download">Downloads</a></h3></center> <p>-<b>Current version:</b>-HaXml-1.13.3, release date 2007.11.23<br>+<b>Development versions:</b><br>+HaXml-1.19, release date 2007.10.23<br> By HTTP:-<a href="http://www.haskell.org/HaXml/HaXml-1.13.3.tar.gz">.tar.gz</a>,-<a href="http://www.haskell.org/HaXml/HaXml-1.13.3.zip">.zip</a>.+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.tar.gz">.tar.gz</a>,+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.zip">.zip</a>. <br> By FTP:  <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/"> ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/</a>-<br>-FreeBSD port:-<a href="http://freshports.org/textproc/hs-haxml/">-http://freshports.org/textproc/haxml/</a>  <p>-<b>Development version:</b>-The development version of HaXml is available separately.  See-<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/">-http://www.cs.york.ac.uk/fp/HaXml-devel/</a>+<b>Ongoing development:</b>+The development version of HaXml is also available through+<br><tt><a href="http://darcs.net/">darcs</a> get+    http://www.cs.york.ac.uk/fp/darcs/HaXml</tt>  <p> <b>Older versions:</b><br>+Stable version: for 1.13.2 see+<a href="http://haskell.org/HaXml/">+http://haskell.org/HaXml/</a>+<br> By FTP:  <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/"> ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/</a>+<br>+FreeBSD port:+<a href="http://freshports.org/textproc/hs-haxml/">+http://freshports.org/textproc/haxml/</a>  <center><h3><a name="install">Installation</a></h3></center> <p>-For recent <em>ghc</em>, use the standard Cabal installation mechanism:+To install HaXml, you must have a Haskell compiler: <em>ghc-6.2</em>+or later, and/or <em>nhc98-1.16/hmake-3.06</em> or later, and/or+<em>Hugs98 (Sept 2003)</em> or later.  You must also first download and+install the <a href="http://www.cs.york.ac.uk/fp/polyparse">polyparse</a>+package as a pre-requisite.+<p>+Then, for more recent compilers,+use the standard Cabal method of installation: <pre>-    runhaskell Setup.hs configure+    runhaskell Setup.hs configure [--prefix=...] [--buildwith=...]     runhaskell Setup.hs build     runhaskell Setup.hs install </pre> -For older compilers: <em>ghc-5.02</em> or later, and/or-<em>nhc98-1.14/hmake-3.06</em> or later, and/or <em>Hugs98 (Sept-2003)</em> or later.  Use-+For older compilers, use: <pre>     ./configure [--prefix=...] [--buildwith=...]     make@@ -170,38 +200,74 @@  <hr> <center><h3><a name="news">Recent news</a></h3></center>+ <p>-Graham Klyne has extended the 1.12 version of HaXml significantly, in-particular to ensure that the parser passes a large XML acceptance test-suite, and to deal more correctly with Unicode, namespaces, and parameter-entity expansion.  His modifications will eventually be merged-back in to the main tree, but in the meantime, you can get his-version here:-<a href="http://www.ninebynine.org/Software/HaskellUtils/">-<tt>http://www.ninebynine.org/Software/HaskellUtils/</tt></a>+Version 1.19 improved the lazy XML parsing, and fixed some space leaks+in the XtractLazy tool.  <p>-The latest stable version (1.13.3) has the following features and fixes:<br>-<ul>-<li> Updated to work with ghc-6.8.1 (changes to .cabal file).-</ul>+Version 1.18 pulled out the parser combinator libraries as a separate+package (called polyparse), which must now be downloaded and installed+before installing HaXml.  <p>-The latest stable version (1.13.2) has the following features and fixes:<br>-<ul>-<li> Updated to work with ghc-6.6 (removed uses of Data.FiniteMap).-</ul>+Version 1.17 essentially just fixes compatibility with ghc-6.6.+However, it also include a lazier pretty-printer to use in conjunction+with the lazy parser, to save running out of memory on large datasets.  <p>-The prior version (1.13.1) has the following features and fixes:<br>-<ul>-<li> Bugfix to permit percent character in attribute values.-<li> Bugfix to parse unquoted attribute values starting '+' or '#' in HTML.-<li> Bugfix to keep the original DTD in output of 'processXmlWith'.-</ul>+Version 1.16 adds laziness to the parser combinator libraries, such that+they can start to return partial results before a whole entity has been+parsed.  Partial is also used in the sense that the returned value can+contain bottom - an error which gets thrown as an exception when you try+to explore the inner regions of the value.  In terms of XML, it means you+get an element back as soon as its start-tag has been consumed, but if+there are parse errors later on, BOOM.  However, if there are no errors,+it does mean that your processing will be (a) faster and (b) less memory+hungry.  Another cool thing is that, even in the presence of errors, you+still might get enough output to satisfy your processing task before the+error is noticed.  <p>-Version 1.13 has the following features and fixes:<br>+Use <tt>Text.XML.HaXml.ParseLazy</tt> and+<tt>Text.XML.HaXml.Html.ParseLazy</tt> to try it out.  There are also+lazy versions of the supplied demo programs: <tt>CanonicaliseLazy</tt>+and <tt>XtractLazy</tt>.++<p>+Version 1.15 is essentially 1.14 with some bugfixes, and some new+functionality, especially in the parser combinator libraries.  DrIFT now+supports deriving the XmlContent class, and DtdToHaskell now also+derives the XmlContent class, in addition to determining a collection of+Haskell datatypes equivalent to a given DTD.++<p>+Error messages from parsing are much improved in 1.15 - they should+locate any error far more specifically and accurately.  Let me know+about examples which do not report correctly.++<p>+Prior to 1.14, there were two separate classes, Xml2Haskell and+Haskell2Xml.  They are now combined into the single class XmlContent.+Make sure you get a recent version of DrIFT if you want to derive this+class from Haskell datatypes - the included version of DtdToHaskell has+not yet been updated for deriving the class the other way, from an XML DTD.++<p>+Version 1.14 also contains a new SAX-like stream parser.++<p>+A while back, Graham Klyne extended the 1.12 version of HaXml+significantly, in particular to ensure that the parser passes a large+XML acceptance test suite, and to deal more correctly with Unicode,+namespaces, and parameter entity expansion.  His modifications will+eventually be merged back in to the main CVS tree, but in the meantime,+you can get his version here:+<a href="http://www.ninebynine.org/Software/HaskellUtils/">+<tt>http://www.ninebynine.org/Software/HaskellUtils/</tt></a>++<p>+The previous stable version (1.13) had the following features and fixes:<br> <ul> <li> Bugfixes to the document validator: no more infinite loops. <li> Bugfixes to lexing mixed text and references between quote chars.@@ -246,9 +312,15 @@     in Haskell, called hxml.  What is more, it can be used as a simple     drop-in replacement for the HaXml parser!     <a href="http://www.flightlab.com/~joe/hxml/">Available here</a>.-<li>Uwe Schmidt recently designed another+<li>Uwe Schmidt designed another     <a href="http://www.fh-wedel.de/~si/HXmlToolbox/">Haskell XML Toolbox</a>-    based on the ideas of HaXml and hxml.+    based on the ideas of HaXml and hxml.  It is well-maintained, and has+    recently been updated to use arrow-based combinators rather than filters+    as in HaXml.+<li>To use HaXml and HXT together, Henning Thielemann has put together+    <a href="http://darcs.haskell.org/wraxml/README">WraXML</a>,+    a wrapper using an alternative tree data structure, together with+    conversions to/from HaXml and HXT. <li>Some comparisons between functional language approaches to processing     XML can be found in     <a href="http://www.xml.com/pub/a/2001/02/14/functional.html">@@ -281,7 +353,7 @@     the Java Architecture for XML Binding     (<a href="http://java.sun.com/xml/jaxb/">JAXB</a>).  JAXB translates     an XML Schema Definition into a set of Java classes, and provides-    the runtime machinery (like <em>Xml2Haskell</em>) for reading and+    the runtime machinery (like <em>XmlContent</em>) for reading and     writing objects of those classes to/from XML files. <li>There is a comprehensive reading list for XML and web programming in     functional languages <a href="http://readscheme.org/xml-web/">here</a>.
+ docs/migrate.html view
@@ -0,0 +1,67 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html> <head> <title> HaXml: Haskell and XML </title> </head>++<body bgcolor='#ffffff'>++<center>+<h2>Migrating from HaXml 1.13 to HaXml >= 1.17</h2>+</center>+<hr>++<p>+There are 3 main changes between 1.13 and 1.17:++<h3>More info fields in the generic document tree</h3>+Content items in the generic document representation now have an+extra polymorphic component field.  This can be used for+propagating information throughout the document tree, like+namespace scopes.  However, if you simply want to change some old+code to use the new types, essentially you can just use unit+() values as dummies to fill in this field.++<p>+<tt>data Document</tt>  --&gt;  <tt>data Document i</tt>++<p>+<tt>data Element</tt>  --&gt;  <tt>data Element i</tt>++<p>+<tt>data Content</tt>  --&gt;  <tt>data Content i</tt>++<h3>New XmlContent class, replaces old classes</h3>+The <i>Haskell2Xml</i> and <i>Xml2Haskell</i> classes have been+merged into a single new class: <b>XmlContent</b>.  Because the new+class is based on combinator parsers that return good error+messages, some of the signatures of user-accessible I/O routines +have changed to enable the possibility of reporting parse errors.+See <a href="XmlContent.html">this page</a> for details.++If you are playing with the class methods themselves, then the+translation from old-style to new-style is more-or-less like this:+<pre>+    class XmlContent a where	-- old+      fromElem :: [Content] -&gt; (Maybe a, [Content])+      toElem :: a -&gt; [Content]+</pre>+becomes+<pre>+    class XMLContent a where	--new+      parseContents :: XMLParser a+      toContents    :: a -&gt; [Content ()]+</pre>++<h3>Lazy parsing</h3>+Parsing of generic XML documents can now be lazy, that is, it can+start returning part of the document tree, before seeing the end of+it.  However, this does mean that parse errors can be discovered+too late to do anything sensible with them - your program will+likely just stop with the error message.  To use the lazy parser,++     <p>+<tt>import Text.XML.HaXml.Parse<tt> --&gt; <tt>import Text.XML.HaXml.ParseLazy</tt>+++<hr>++</body>+</html>
examples/AlbumDTD.hs view
@@ -1,6 +1,6 @@ module AlbumDTD where -import Text.XML.HaXml.Xml2Haskell+import Text.XML.HaXml.XmlContent import Text.XML.HaXml.OneOfN  
examples/App.hs view
@@ -4,7 +4,7 @@ import IO  import Text.XML.HaXml.Wrappers (fix2Args)-import Text.XML.HaXml.Xml2Haskell (fReadXml, fWriteXml)+import Text.XML.HaXml.XmlContent (fReadXml, fWriteXml) import AlbumDTD  main =
examples/DTypes.hs view
@@ -1,141 +1,158 @@-{-% DrIFT (Automatic class derivations for Haskell) v1.0 %-}+{- Generated by DrIFT (Automatic class derivations for Haskell) -}+{-# LINE 1 "DTypes.hs" #-} module DTypes where -import Text.XML.HaXml.Haskell2Xml hiding (Name)+import Text.XML.HaXml.XmlContent hiding (Name)  -- data types for a simple test program -data Person = Person Name Email [Rating] Version {-! derive :Haskell2Xml !-}+data Person = Person Name Email [Rating] Version {-! derive : XmlContent !-} -newtype Name = Name String {-! derive :Haskell2Xml !-}-newtype Email = Email String {-! derive :Haskell2Xml !-}-newtype Version = Version Int {-! derive :Haskell2Xml !-}+newtype Name = Name String {-! derive : XmlContent !-}+newtype Email = Email String {-! derive : XmlContent !-}+newtype Version = Version Int {-! derive : XmlContent !-} -data Rating = Rating SubjectID Interest Skill {-! derive :Haskell2Xml !-}+data Rating = Rating SubjectID Interest Skill {-! derive : XmlContent !-} -newtype SubjectID = SubjectID Int {-! derive :Haskell2Xml !-}-newtype Interest = Interest Score {-! derive :Haskell2Xml !-}-newtype Skill = Skill Score {-! derive :Haskell2Xml !-}+newtype SubjectID = SubjectID Int {-! derive : XmlContent !-}+newtype Interest = Interest Score {-! derive : XmlContent !-}+newtype Skill = Skill Score {-! derive : XmlContent !-} -data Score = ScoreNone | ScoreLow | ScoreMedium | ScoreHigh {-! derive :Haskell2Xml !-}+data Score = ScoreNone | ScoreLow | ScoreMedium | ScoreHigh {-! derive : XmlContent !-} -{-* Generated by DrIFT-v1.0 : Look, but Don't Touch. *-}-instance Haskell2Xml Person where+{-* Generated by DrIFT : Look, but Don't Touch. *-}+instance Haskell2XmlNew Person where     toHType v = 	Defined "Person" []-		[Constr "Person" []-			[toHType aa,toHType ab,toHType ac,toHType ad]]+		[Constr "Person" [] [toHType aa,toHType ab,toHType ac,toHType ad]]       where 	(Person aa ab ac ad) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "Person" `isPrefixOf` constr =-	    (\(aa,cs00)-> (\(ab,cs01)-> (\(ac,cs02)-> (\(ad,-							 _)-> (Person aa ab ac ad, etc))-						      (fromContents cs02))-					(fromContents cs01))-			  (fromContents cs00))-	    (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["Person"]+	; case t of+	  _ | "Person" `isPrefixOf` t -> interior e $+		do { aa <- parseContents+		   ; ab <- parseContents+		   ; ac <- parseContents+		   ; ad <- parseContents+		   ; return (Person aa ab ac ad)+		   }+	}     toContents v@(Person aa ab ac ad) =-	[mkElemC (showConstr 0 (toHType v)) (concat [toContents aa,toContents ab-						     ,toContents ac,-						     toContents ad])]+	[mkElemC (showConstr 0 (toHType v)) (concat [toContents aa,+						     toContents ab,toContents ac,toContents ad])] -instance Haskell2Xml Name where+instance Haskell2XmlNew Name where     toHType v = 	Defined "Name" [] [Constr "Name" [] [toHType aa]]       where 	(Name aa) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "Name" `isPrefixOf` constr =-	    (\(aa,_)-> (Name aa, etc)) (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["Name"]+	; case t of+	  _ | "Name" `isPrefixOf` t -> interior e $ fmap Name parseContents+	}     toContents v@(Name aa) = 	[mkElemC (showConstr 0 (toHType v)) (toContents aa)] -instance Haskell2Xml Email where+instance Haskell2XmlNew Email where     toHType v = 	Defined "Email" [] [Constr "Email" [] [toHType aa]]       where 	(Email aa) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "Email" `isPrefixOf` constr =-	    (\(aa,_)-> (Email aa, etc)) (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["Email"]+	; case t of+	  _ | "Email" `isPrefixOf` t -> interior e $ fmap Email parseContents+	}     toContents v@(Email aa) = 	[mkElemC (showConstr 0 (toHType v)) (toContents aa)] -instance Haskell2Xml Version where+instance Haskell2XmlNew Version where     toHType v = 	Defined "Version" [] [Constr "Version" [] [toHType aa]]       where 	(Version aa) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "Version" `isPrefixOf` constr =-	    (\(aa,_)-> (Version aa, etc)) (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["Version"]+	; case t of+	  _ | "Version" `isPrefixOf` t -> interior e $ fmap Version parseContents+	}     toContents v@(Version aa) = 	[mkElemC (showConstr 0 (toHType v)) (toContents aa)] -instance Haskell2Xml Rating where+instance Haskell2XmlNew Rating where     toHType v = 	Defined "Rating" [] 		[Constr "Rating" [] [toHType aa,toHType ab,toHType ac]]       where 	(Rating aa ab ac) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "Rating" `isPrefixOf` constr =-	    (\(aa,cs00)-> (\(ab,cs01)-> (\(ac,_)-> (Rating aa ab ac, etc))-					(fromContents cs01))-			  (fromContents cs00))-	    (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["Rating"]+	; case t of+	  _ | "Rating" `isPrefixOf` t -> interior e $+		do { aa <- parseContents+		   ; ab <- parseContents+		   ; ac <- parseContents+		   ; return (Rating aa ab ac)+		   }+	}     toContents v@(Rating aa ab ac) =-	[mkElemC (showConstr 0 (toHType v)) (concat [toContents aa,toContents ab-						     ,toContents ac])]+	[mkElemC (showConstr 0 (toHType v)) (concat [toContents aa,+						     toContents ab,toContents ac])] -instance Haskell2Xml SubjectID where+instance Haskell2XmlNew SubjectID where     toHType v = 	Defined "SubjectID" [] [Constr "SubjectID" [] [toHType aa]]       where 	(SubjectID aa) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "SubjectID" `isPrefixOf` constr =-	    (\(aa,_)-> (SubjectID aa, etc)) (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["SubjectID"]+	; case t of+	  _ | "SubjectID" `isPrefixOf` t -> interior e $ fmap SubjectID parseContents+	}     toContents v@(SubjectID aa) = 	[mkElemC (showConstr 0 (toHType v)) (toContents aa)] -instance Haskell2Xml Interest where+instance Haskell2XmlNew Interest where     toHType v = 	Defined "Interest" [] [Constr "Interest" [] [toHType aa]]       where 	(Interest aa) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "Interest" `isPrefixOf` constr =-	    (\(aa,_)-> (Interest aa, etc)) (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["Interest"]+	; case t of+	  _ | "Interest" `isPrefixOf` t -> interior e $ fmap Interest parseContents+	}     toContents v@(Interest aa) = 	[mkElemC (showConstr 0 (toHType v)) (toContents aa)] -instance Haskell2Xml Skill where+instance Haskell2XmlNew Skill where     toHType v = 	Defined "Skill" [] [Constr "Skill" [] [toHType aa]]       where 	(Skill aa) = v-    fromContents (CElem (Elem constr [] cs):etc)-	| "Skill" `isPrefixOf` constr =-	    (\(aa,_)-> (Skill aa, etc)) (fromContents cs)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["Skill"]+	; case t of+	  _ | "Skill" `isPrefixOf` t -> interior e $ fmap Skill parseContents+	}     toContents v@(Skill aa) = 	[mkElemC (showConstr 0 (toHType v)) (toContents aa)] -instance Haskell2Xml Score where+instance Haskell2XmlNew Score where     toHType v = 	Defined "Score" [] 		[Constr "ScoreNone" [] [],Constr "ScoreLow" [] [], 		 Constr "ScoreMedium" [] [],Constr "ScoreHigh" [] []]-    fromContents (CElem (Elem constr [] cs):etc)-	| "ScoreNone" `isPrefixOf` constr =-	    (ScoreNone,etc)-	| "ScoreLow" `isPrefixOf` constr =-	    (ScoreLow,etc)-	| "ScoreMedium" `isPrefixOf` constr =-	    (ScoreMedium,etc)-	| "ScoreHigh" `isPrefixOf` constr =-	    (ScoreHigh,etc)+    parseContents = do+	{ e@(Elem t _ _) <- element  ["ScoreNone","ScoreLow","ScoreMedium","ScoreHigh"]+	; case t of+	  _ | "ScoreNone" `isPrefixOf` t -> interior e $ return ScoreNone+	    | "ScoreMedium" `isPrefixOf` t -> interior e $ return ScoreMedium+	    | "ScoreLow" `isPrefixOf` t -> interior e $ return ScoreLow+	    | "ScoreHigh" `isPrefixOf` t -> interior e $ return ScoreHigh+	}     toContents v@ScoreNone = 	[mkElemC (showConstr 0 (toHType v)) []]     toContents v@ScoreLow =@@ -146,4 +163,3 @@ 	[mkElemC (showConstr 3 (toHType v)) []]  --  Imported from other files :--
examples/Example.hs view
@@ -1,7 +1,7 @@ module Main where  import IO-import Text.XML.HaXml.Haskell2Xml (fWriteXml)+import Text.XML.HaXml.XmlContent (fWriteXml) import DTypes  rjn = Person (Name "Rob Noble") (Email "rjn") [
+ examples/GXL.hs view
@@ -0,0 +1,641 @@+module GXL where++import Text.XML.HaXml.XmlContent+import Text.XML.HaXml.OneOfN+++{-Type decls-}++data Gxl = Gxl Gxl_Attrs [Graph]+         deriving (Eq,Show)+data Gxl_Attrs = Gxl_Attrs+    { gxlXmlns'xlink :: (Defaultable String)+    } deriving (Eq,Show)+data Type = Type+    { typeXlink'type :: (Defaultable Type_xlink'type)+    , typeXlink'href :: String+    } deriving (Eq,Show)+data Type_xlink'type = Type_xlink'type_simple+                     deriving (Eq,Show)+data Graph = Graph Graph_Attrs (Maybe Type) [Attr]+                   [(OneOf3 Node Edge Rel)]+           deriving (Eq,Show)+data Graph_Attrs = Graph_Attrs+    { graphId :: String+    , graphRole :: (Maybe String)+    , graphEdgeids :: (Defaultable Graph_edgeids)+    , graphHypergraph :: (Defaultable Graph_hypergraph)+    , graphEdgemode :: (Defaultable Graph_edgemode)+    } deriving (Eq,Show)+data Graph_edgeids = Graph_edgeids_true  |  Graph_edgeids_false+                   deriving (Eq,Show)+data Graph_hypergraph = Graph_hypergraph_true  | +                        Graph_hypergraph_false+                      deriving (Eq,Show)+data Graph_edgemode = Graph_edgemode_directed  | +                      Graph_edgemode_undirected  |  Graph_edgemode_defaultdirected  | +                      Graph_edgemode_defaultundirected+                    deriving (Eq,Show)+data Node = Node Node_Attrs (Maybe Type) [Attr] [Graph]+          deriving (Eq,Show)+data Node_Attrs = Node_Attrs+    { nodeId :: String+    } deriving (Eq,Show)+data Edge = Edge Edge_Attrs (Maybe Type) [Attr] [Graph]+          deriving (Eq,Show)+data Edge_Attrs = Edge_Attrs+    { edgeId :: (Maybe String)+    , edgeFrom :: String+    , edgeTo :: String+    , edgeFromorder :: (Maybe String)+    , edgeToorder :: (Maybe String)+    , edgeIsdirected :: (Maybe Edge_isdirected)+    } deriving (Eq,Show)+data Edge_isdirected = Edge_isdirected_true  | +                       Edge_isdirected_false+                     deriving (Eq,Show)+data Rel = Rel Rel_Attrs (Maybe Type) [Attr] [Graph] [Relend]+         deriving (Eq,Show)+data Rel_Attrs = Rel_Attrs+    { relId :: (Maybe String)+    , relIsdirected :: (Maybe Rel_isdirected)+    } deriving (Eq,Show)+data Rel_isdirected = Rel_isdirected_true  |  Rel_isdirected_false+                    deriving (Eq,Show)+data Relend = Relend Relend_Attrs [Attr]+            deriving (Eq,Show)+data Relend_Attrs = Relend_Attrs+    { relendTarget :: String+    , relendRole :: (Maybe String)+    , relendDirection :: (Maybe Relend_direction)+    , relendStartorder :: (Maybe String)+    , relendEndorder :: (Maybe String)+    } deriving (Eq,Show)+data Relend_direction = Relend_direction_in  | +                        Relend_direction_out  |  Relend_direction_none+                      deriving (Eq,Show)+data Attr = Attr Attr_Attrs [Attr]+                 (OneOf10 Locator Bool AInt AFloat AString Enum Seq Set Bag Tup)+          deriving (Eq,Show)+data Attr_Attrs = Attr_Attrs+    { attrId :: (Maybe String)+    , attrName :: String+    , attrKind :: (Maybe String)+    } deriving (Eq,Show)+data Locator = Locator+    { locatorXlink'type :: (Defaultable Locator_xlink'type)+    , locatorXlink'href :: String+    } deriving (Eq,Show)+data Locator_xlink'type = Locator_xlink'type_simple+                        deriving (Eq,Show)+newtype Bool = Bool String 		deriving (Eq,Show)+newtype AInt = AInt String 		deriving (Eq,Show)+newtype AFloat = AFloat String 		deriving (Eq,Show)+newtype AString = AString String 		deriving (Eq,Show)+newtype Enum = Enum String 		deriving (Eq,Show)+newtype Seq = Seq [Seq_] 		deriving (Eq,Show)+data Seq_ = Seq_Locator Locator+          | Seq_Bool Bool+          | Seq_AInt AInt+          | Seq_AFloat AFloat+          | Seq_AString AString+          | Seq_Enum Enum+          | Seq_Seq Seq+          | Seq_Set Set+          | Seq_Bag Bag+          | Seq_Tup Tup+          deriving (Eq,Show)+newtype Set = Set [Set_] 		deriving (Eq,Show)+data Set_ = Set_Locator Locator+          | Set_Bool Bool+          | Set_AInt AInt+          | Set_AFloat AFloat+          | Set_AString AString+          | Set_Enum Enum+          | Set_Seq Seq+          | Set_Set Set+          | Set_Bag Bag+          | Set_Tup Tup+          deriving (Eq,Show)+newtype Bag = Bag [Bag_] 		deriving (Eq,Show)+data Bag_ = Bag_Locator Locator+          | Bag_Bool Bool+          | Bag_AInt AInt+          | Bag_AFloat AFloat+          | Bag_AString AString+          | Bag_Enum Enum+          | Bag_Seq Seq+          | Bag_Set Set+          | Bag_Bag Bag+          | Bag_Tup Tup+          deriving (Eq,Show)+newtype Tup = Tup [Tup_] 		deriving (Eq,Show)+data Tup_ = Tup_Locator Locator+          | Tup_Bool Bool+          | Tup_AInt AInt+          | Tup_AFloat AFloat+          | Tup_AString AString+          | Tup_Enum Enum+          | Tup_Seq Seq+          | Tup_Set Set+          | Tup_Bag Bag+          | Tup_Tup Tup+          deriving (Eq,Show)+++{-Instance decls-}++instance HTypeable Gxl where+    toHType x = Defined "gxl" [] []+instance XmlContent Gxl where+    toContents (Gxl as a) =+        [CElem (Elem "gxl" (toAttrs as) (concatMap toContents a)) ()]+    parseContents = do+        { e@(Elem _ as _) <- element ["gxl"]+        ; interior e $ return (Gxl (fromAttrs as))+                       `apply` many parseContents+        } `adjustErr` ("in <gxl>, "++)+instance XmlAttributes Gxl_Attrs where+    fromAttrs as =+        Gxl_Attrs+          { gxlXmlns'xlink = defaultA fromAttrToStr "http://www.w3.org/1999/xlink" "xmlns:xlink" as+          }+    toAttrs v = catMaybes +        [ defaultToAttr toAttrFrStr "xmlns:xlink" (gxlXmlns'xlink v)+        ]++instance HTypeable Type where+    toHType x = Defined "type" [] []+instance XmlContent Type where+    toContents as =+        [CElem (Elem "type" (toAttrs as) []) ()]+    parseContents = do+        { (Elem _ as []) <- element ["type"]+        ; return (fromAttrs as)+        } `adjustErr` ("in <type>, "++)+instance XmlAttributes Type where+    fromAttrs as =+        Type+          { typeXlink'type = defaultA fromAttrToTyp Type_xlink'type_simple "xlink:type" as+          , typeXlink'href = definiteA fromAttrToStr "type" "xlink:href" as+          }+    toAttrs v = catMaybes +        [ defaultToAttr toAttrFrTyp "xlink:type" (typeXlink'type v)+        , toAttrFrStr "xlink:href" (typeXlink'href v)+        ]++instance XmlAttrType Type_xlink'type where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "simple" = Just Type_xlink'type_simple+            translate _ = Nothing+    toAttrFrTyp n Type_xlink'type_simple = Just (n, str2attr "simple")++instance HTypeable Graph where+    toHType x = Defined "graph" [] []+instance XmlContent Graph where+    toContents (Graph as a b c) =+        [CElem (Elem "graph" (toAttrs as) (maybe [] toContents a +++                                           concatMap toContents b ++ concatMap toContents c)) ()]+    parseContents = do+        { e@(Elem _ as _) <- element ["graph"]+        ; interior e $ return (Graph (fromAttrs as))+                       `apply` optional parseContents `apply` many parseContents+                       `apply` many parseContents+        } `adjustErr` ("in <graph>, "++)+instance XmlAttributes Graph_Attrs where+    fromAttrs as =+        Graph_Attrs+          { graphId = definiteA fromAttrToStr "graph" "id" as+          , graphRole = possibleA fromAttrToStr "role" as+          , graphEdgeids = defaultA fromAttrToTyp Graph_edgeids_false "edgeids" as+          , graphHypergraph = defaultA fromAttrToTyp Graph_hypergraph_false "hypergraph" as+          , graphEdgemode = defaultA fromAttrToTyp Graph_edgemode_directed "edgemode" as+          }+    toAttrs v = catMaybes +        [ toAttrFrStr "id" (graphId v)+        , maybeToAttr toAttrFrStr "role" (graphRole v)+        , defaultToAttr toAttrFrTyp "edgeids" (graphEdgeids v)+        , defaultToAttr toAttrFrTyp "hypergraph" (graphHypergraph v)+        , defaultToAttr toAttrFrTyp "edgemode" (graphEdgemode v)+        ]++instance XmlAttrType Graph_edgeids where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "true" = Just Graph_edgeids_true+            translate "false" = Just Graph_edgeids_false+            translate _ = Nothing+    toAttrFrTyp n Graph_edgeids_true = Just (n, str2attr "true")+    toAttrFrTyp n Graph_edgeids_false = Just (n, str2attr "false")++instance XmlAttrType Graph_hypergraph where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "true" = Just Graph_hypergraph_true+            translate "false" = Just Graph_hypergraph_false+            translate _ = Nothing+    toAttrFrTyp n Graph_hypergraph_true = Just (n, str2attr "true")+    toAttrFrTyp n Graph_hypergraph_false = Just (n, str2attr "false")++instance XmlAttrType Graph_edgemode where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "directed" = Just Graph_edgemode_directed+            translate "undirected" = Just Graph_edgemode_undirected+            translate "defaultdirected" = Just Graph_edgemode_defaultdirected+            translate "defaultundirected" = Just Graph_edgemode_defaultundirected+            translate _ = Nothing+    toAttrFrTyp n Graph_edgemode_directed = Just (n, str2attr "directed")+    toAttrFrTyp n Graph_edgemode_undirected = Just (n, str2attr "undirected")+    toAttrFrTyp n Graph_edgemode_defaultdirected = Just (n, str2attr "defaultdirected")+    toAttrFrTyp n Graph_edgemode_defaultundirected = Just (n, str2attr "defaultundirected")++instance HTypeable Node where+    toHType x = Defined "node" [] []+instance XmlContent Node where+    toContents (Node as a b c) =+        [CElem (Elem "node" (toAttrs as) (maybe [] toContents a +++                                          concatMap toContents b ++ concatMap toContents c)) ()]+    parseContents = do+        { e@(Elem _ as _) <- element ["node"]+        ; interior e $ return (Node (fromAttrs as))+                       `apply` optional parseContents `apply` many parseContents+                       `apply` many parseContents+        } `adjustErr` ("in <node>, "++)+instance XmlAttributes Node_Attrs where+    fromAttrs as =+        Node_Attrs+          { nodeId = definiteA fromAttrToStr "node" "id" as+          }+    toAttrs v = catMaybes +        [ toAttrFrStr "id" (nodeId v)+        ]++instance HTypeable Edge where+    toHType x = Defined "edge" [] []+instance XmlContent Edge where+    toContents (Edge as a b c) =+        [CElem (Elem "edge" (toAttrs as) (maybe [] toContents a +++                                          concatMap toContents b ++ concatMap toContents c)) ()]+    parseContents = do+        { e@(Elem _ as _) <- element ["edge"]+        ; interior e $ return (Edge (fromAttrs as))+                       `apply` optional parseContents `apply` many parseContents+                       `apply` many parseContents+        } `adjustErr` ("in <edge>, "++)+instance XmlAttributes Edge_Attrs where+    fromAttrs as =+        Edge_Attrs+          { edgeId = possibleA fromAttrToStr "id" as+          , edgeFrom = definiteA fromAttrToStr "edge" "from" as+          , edgeTo = definiteA fromAttrToStr "edge" "to" as+          , edgeFromorder = possibleA fromAttrToStr "fromorder" as+          , edgeToorder = possibleA fromAttrToStr "toorder" as+          , edgeIsdirected = possibleA fromAttrToTyp "isdirected" as+          }+    toAttrs v = catMaybes +        [ maybeToAttr toAttrFrStr "id" (edgeId v)+        , toAttrFrStr "from" (edgeFrom v)+        , toAttrFrStr "to" (edgeTo v)+        , maybeToAttr toAttrFrStr "fromorder" (edgeFromorder v)+        , maybeToAttr toAttrFrStr "toorder" (edgeToorder v)+        , maybeToAttr toAttrFrTyp "isdirected" (edgeIsdirected v)+        ]++instance XmlAttrType Edge_isdirected where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "true" = Just Edge_isdirected_true+            translate "false" = Just Edge_isdirected_false+            translate _ = Nothing+    toAttrFrTyp n Edge_isdirected_true = Just (n, str2attr "true")+    toAttrFrTyp n Edge_isdirected_false = Just (n, str2attr "false")++instance HTypeable Rel where+    toHType x = Defined "rel" [] []+instance XmlContent Rel where+    toContents (Rel as a b c d) =+        [CElem (Elem "rel" (toAttrs as) (maybe [] toContents a +++                                         concatMap toContents b ++ concatMap toContents c +++                                         concatMap toContents d)) ()]+    parseContents = do+        { e@(Elem _ as _) <- element ["rel"]+        ; interior e $ return (Rel (fromAttrs as))+                       `apply` optional parseContents `apply` many parseContents+                       `apply` many parseContents `apply` many parseContents+        } `adjustErr` ("in <rel>, "++)+instance XmlAttributes Rel_Attrs where+    fromAttrs as =+        Rel_Attrs+          { relId = possibleA fromAttrToStr "id" as+          , relIsdirected = possibleA fromAttrToTyp "isdirected" as+          }+    toAttrs v = catMaybes +        [ maybeToAttr toAttrFrStr "id" (relId v)+        , maybeToAttr toAttrFrTyp "isdirected" (relIsdirected v)+        ]++instance XmlAttrType Rel_isdirected where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "true" = Just Rel_isdirected_true+            translate "false" = Just Rel_isdirected_false+            translate _ = Nothing+    toAttrFrTyp n Rel_isdirected_true = Just (n, str2attr "true")+    toAttrFrTyp n Rel_isdirected_false = Just (n, str2attr "false")++instance HTypeable Relend where+    toHType x = Defined "relend" [] []+instance XmlContent Relend where+    toContents (Relend as a) =+        [CElem (Elem "relend" (toAttrs as) (concatMap toContents a)) ()]+    parseContents = do+        { e@(Elem _ as _) <- element ["relend"]+        ; interior e $ return (Relend (fromAttrs as))+                       `apply` many parseContents+        } `adjustErr` ("in <relend>, "++)+instance XmlAttributes Relend_Attrs where+    fromAttrs as =+        Relend_Attrs+          { relendTarget = definiteA fromAttrToStr "relend" "target" as+          , relendRole = possibleA fromAttrToStr "role" as+          , relendDirection = possibleA fromAttrToTyp "direction" as+          , relendStartorder = possibleA fromAttrToStr "startorder" as+          , relendEndorder = possibleA fromAttrToStr "endorder" as+          }+    toAttrs v = catMaybes +        [ toAttrFrStr "target" (relendTarget v)+        , maybeToAttr toAttrFrStr "role" (relendRole v)+        , maybeToAttr toAttrFrTyp "direction" (relendDirection v)+        , maybeToAttr toAttrFrStr "startorder" (relendStartorder v)+        , maybeToAttr toAttrFrStr "endorder" (relendEndorder v)+        ]++instance XmlAttrType Relend_direction where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "in" = Just Relend_direction_in+            translate "out" = Just Relend_direction_out+            translate "none" = Just Relend_direction_none+            translate _ = Nothing+    toAttrFrTyp n Relend_direction_in = Just (n, str2attr "in")+    toAttrFrTyp n Relend_direction_out = Just (n, str2attr "out")+    toAttrFrTyp n Relend_direction_none = Just (n, str2attr "none")++instance HTypeable Attr where+    toHType x = Defined "attr" [] []+instance XmlContent Attr where+    toContents (Attr as a b) =+        [CElem (Elem "attr" (toAttrs as) (concatMap toContents a +++                                          toContents b)) ()]+    parseContents = do+        { e@(Elem _ as _) <- element ["attr"]+        ; interior e $ return (Attr (fromAttrs as))+                       `apply` many parseContents `apply` parseContents+        } `adjustErr` ("in <attr>, "++)+instance XmlAttributes Attr_Attrs where+    fromAttrs as =+        Attr_Attrs+          { attrId = possibleA fromAttrToStr "id" as+          , attrName = definiteA fromAttrToStr "attr" "name" as+          , attrKind = possibleA fromAttrToStr "kind" as+          }+    toAttrs v = catMaybes +        [ maybeToAttr toAttrFrStr "id" (attrId v)+        , toAttrFrStr "name" (attrName v)+        , maybeToAttr toAttrFrStr "kind" (attrKind v)+        ]++instance HTypeable Locator where+    toHType x = Defined "locator" [] []+instance XmlContent Locator where+    toContents as =+        [CElem (Elem "locator" (toAttrs as) []) ()]+    parseContents = do+        { (Elem _ as []) <- element ["locator"]+        ; return (fromAttrs as)+        } `adjustErr` ("in <locator>, "++)+instance XmlAttributes Locator where+    fromAttrs as =+        Locator+          { locatorXlink'type = defaultA fromAttrToTyp Locator_xlink'type_simple "xlink:type" as+          , locatorXlink'href = definiteA fromAttrToStr "locator" "xlink:href" as+          }+    toAttrs v = catMaybes +        [ defaultToAttr toAttrFrTyp "xlink:type" (locatorXlink'type v)+        , toAttrFrStr "xlink:href" (locatorXlink'href v)+        ]++instance XmlAttrType Locator_xlink'type where+    fromAttrToTyp n (n',v)+        | n==n'     = translate (attr2str v)+        | otherwise = Nothing+      where translate "simple" = Just Locator_xlink'type_simple+            translate _ = Nothing+    toAttrFrTyp n Locator_xlink'type_simple = Just (n, str2attr "simple")++instance HTypeable Bool where+    toHType x = Defined "bool" [] []+instance XmlContent Bool where+    toContents (Bool a) =+        [CElem (Elem "bool" [] (toText a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["bool"]+        ; interior e $ return (Bool) `apply` (text `onFail` return "")+        } `adjustErr` ("in <bool>, "++)++instance HTypeable AInt where+    toHType x = Defined "int" [] []+instance XmlContent AInt where+    toContents (AInt a) =+        [CElem (Elem "int" [] (toText a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["int"]+        ; interior e $ return (AInt) `apply` (text `onFail` return "")+        } `adjustErr` ("in <int>, "++)++instance HTypeable AFloat where+    toHType x = Defined "float" [] []+instance XmlContent AFloat where+    toContents (AFloat a) =+        [CElem (Elem "float" [] (toText a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["float"]+        ; interior e $ return (AFloat) `apply` (text `onFail` return "")+        } `adjustErr` ("in <float>, "++)++instance HTypeable AString where+    toHType x = Defined "string" [] []+instance XmlContent AString where+    toContents (AString a) =+        [CElem (Elem "string" [] (toText a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["string"]+        ; interior e $ return (AString) `apply` (text `onFail` return "")+        } `adjustErr` ("in <string>, "++)++instance HTypeable Enum where+    toHType x = Defined "enum" [] []+instance XmlContent Enum where+    toContents (Enum a) =+        [CElem (Elem "enum" [] (toText a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["enum"]+        ; interior e $ return (Enum) `apply` (text `onFail` return "")+        } `adjustErr` ("in <enum>, "++)++instance HTypeable Seq where+    toHType x = Defined "seq" [] []+instance XmlContent Seq where+    toContents (Seq a) =+        [CElem (Elem "seq" [] (concatMap toContents a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["seq"]+        ; interior e $ return (Seq) `apply` many parseContents+        } `adjustErr` ("in <seq>, "++)++instance HTypeable Seq_ where+    toHType x = Defined "seq" [] []+instance XmlContent Seq_ where+    toContents (Seq_Locator a) = toContents a+    toContents (Seq_Bool a) = toContents a+    toContents (Seq_AInt a) = toContents a+    toContents (Seq_AFloat a) = toContents a+    toContents (Seq_AString a) = toContents a+    toContents (Seq_Enum a) = toContents a+    toContents (Seq_Seq a) = toContents a+    toContents (Seq_Set a) = toContents a+    toContents (Seq_Bag a) = toContents a+    toContents (Seq_Tup a) = toContents a+    parseContents = oneOf+        [ return (Seq_Locator) `apply` parseContents+        , return (Seq_Bool) `apply` parseContents+        , return (Seq_AInt) `apply` parseContents+        , return (Seq_AFloat) `apply` parseContents+        , return (Seq_AString) `apply` parseContents+        , return (Seq_Enum) `apply` parseContents+        , return (Seq_Seq) `apply` parseContents+        , return (Seq_Set) `apply` parseContents+        , return (Seq_Bag) `apply` parseContents+        , return (Seq_Tup) `apply` parseContents+        ] `adjustErr` ("in <seq>, "++)++instance HTypeable Set where+    toHType x = Defined "set" [] []+instance XmlContent Set where+    toContents (Set a) =+        [CElem (Elem "set" [] (concatMap toContents a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["set"]+        ; interior e $ return (Set) `apply` many parseContents+        } `adjustErr` ("in <set>, "++)++instance HTypeable Set_ where+    toHType x = Defined "set" [] []+instance XmlContent Set_ where+    toContents (Set_Locator a) = toContents a+    toContents (Set_Bool a) = toContents a+    toContents (Set_AInt a) = toContents a+    toContents (Set_AFloat a) = toContents a+    toContents (Set_AString a) = toContents a+    toContents (Set_Enum a) = toContents a+    toContents (Set_Seq a) = toContents a+    toContents (Set_Set a) = toContents a+    toContents (Set_Bag a) = toContents a+    toContents (Set_Tup a) = toContents a+    parseContents = oneOf+        [ return (Set_Locator) `apply` parseContents+        , return (Set_Bool) `apply` parseContents+        , return (Set_AInt) `apply` parseContents+        , return (Set_AFloat) `apply` parseContents+        , return (Set_AString) `apply` parseContents+        , return (Set_Enum) `apply` parseContents+        , return (Set_Seq) `apply` parseContents+        , return (Set_Set) `apply` parseContents+        , return (Set_Bag) `apply` parseContents+        , return (Set_Tup) `apply` parseContents+        ] `adjustErr` ("in <set>, "++)++instance HTypeable Bag where+    toHType x = Defined "bag" [] []+instance XmlContent Bag where+    toContents (Bag a) =+        [CElem (Elem "bag" [] (concatMap toContents a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["bag"]+        ; interior e $ return (Bag) `apply` many parseContents+        } `adjustErr` ("in <bag>, "++)++instance HTypeable Bag_ where+    toHType x = Defined "bag" [] []+instance XmlContent Bag_ where+    toContents (Bag_Locator a) = toContents a+    toContents (Bag_Bool a) = toContents a+    toContents (Bag_AInt a) = toContents a+    toContents (Bag_AFloat a) = toContents a+    toContents (Bag_AString a) = toContents a+    toContents (Bag_Enum a) = toContents a+    toContents (Bag_Seq a) = toContents a+    toContents (Bag_Set a) = toContents a+    toContents (Bag_Bag a) = toContents a+    toContents (Bag_Tup a) = toContents a+    parseContents = oneOf+        [ return (Bag_Locator) `apply` parseContents+        , return (Bag_Bool) `apply` parseContents+        , return (Bag_AInt) `apply` parseContents+        , return (Bag_AFloat) `apply` parseContents+        , return (Bag_AString) `apply` parseContents+        , return (Bag_Enum) `apply` parseContents+        , return (Bag_Seq) `apply` parseContents+        , return (Bag_Set) `apply` parseContents+        , return (Bag_Bag) `apply` parseContents+        , return (Bag_Tup) `apply` parseContents+        ] `adjustErr` ("in <bag>, "++)++instance HTypeable Tup where+    toHType x = Defined "tup" [] []+instance XmlContent Tup where+    toContents (Tup a) =+        [CElem (Elem "tup" [] (concatMap toContents a)) ()]+    parseContents = do+        { e@(Elem _ [] _) <- element ["tup"]+        ; interior e $ return (Tup) `apply` many parseContents+        } `adjustErr` ("in <tup>, "++)++instance HTypeable Tup_ where+    toHType x = Defined "tup" [] []+instance XmlContent Tup_ where+    toContents (Tup_Locator a) = toContents a+    toContents (Tup_Bool a) = toContents a+    toContents (Tup_AInt a) = toContents a+    toContents (Tup_AFloat a) = toContents a+    toContents (Tup_AString a) = toContents a+    toContents (Tup_Enum a) = toContents a+    toContents (Tup_Seq a) = toContents a+    toContents (Tup_Set a) = toContents a+    toContents (Tup_Bag a) = toContents a+    toContents (Tup_Tup a) = toContents a+    parseContents = oneOf+        [ return (Tup_Locator) `apply` parseContents+        , return (Tup_Bool) `apply` parseContents+        , return (Tup_AInt) `apply` parseContents+        , return (Tup_AFloat) `apply` parseContents+        , return (Tup_AString) `apply` parseContents+        , return (Tup_Enum) `apply` parseContents+        , return (Tup_Seq) `apply` parseContents+        , return (Tup_Set) `apply` parseContents+        , return (Tup_Bag) `apply` parseContents+        , return (Tup_Tup) `apply` parseContents+        ] `adjustErr` ("in <tup>, "++)++++{-Done-}
examples/SimpleTest.hs view
@@ -1,7 +1,7 @@ module Main where  import List (isPrefixOf)-import Text.XML.HaXml.Haskell2Xml+import Text.XML.HaXml.XmlContent import Text.XML.HaXml.Types import Text.PrettyPrint.HughesPJ (render) import Text.XML.HaXml.Pretty     (document)
examples/SimpleTestBool.hs view
@@ -1,7 +1,7 @@ module Main where  import List (isPrefixOf)-import Text.XML.HaXml.Haskell2Xml+import Text.XML.HaXml.XmlContent import Text.XML.HaXml.Types import Text.PrettyPrint.HughesPJ (render) import Text.XML.HaXml.Pretty     (document)
examples/SimpleTestD.hs view
@@ -4,12 +4,12 @@ import System (getArgs) --import List (isPrefixOf) -import Text.XML.HaXml.Haskell2Xml+import Text.XML.HaXml.XmlContent  -- Test stuff data MyType a = ConsA Int a               | ConsB String-          {-! derive : Haskell2Xml !-}+          {-! derive : XmlContent !-}  instance Eq a => Eq (MyType a) where   (ConsA a b) == (ConsA c d) = a==c && b==d
examples/Types.hs view
@@ -1,20 +1,20 @@ module DTypes where -import Text.XML.HaXml.Haskell2Xml hiding (Name)+import Text.XML.HaXml.XmlContent hiding (Name)  -- data types for a simple test program -data Person = Person Name Email [Rating] Version {-! derive :Haskell2Xml !-}+data Person = Person Name Email [Rating] Version {-! derive : XmlContent !-} -newtype Name = Name String {-! derive :Haskell2Xml !-}-newtype Email = Email String {-! derive :Haskell2Xml !-}-newtype Version = Version Int {-! derive :Haskell2Xml !-}+newtype Name = Name String {-! derive : XmlContent !-}+newtype Email = Email String {-! derive : XmlContent !-}+newtype Version = Version Int {-! derive : XmlContent !-} -data Rating = Rating SubjectID Interest Skill {-! derive :Haskell2Xml !-}+data Rating = Rating SubjectID Interest Skill {-! derive : XmlContent !-} -newtype SubjectID = SubjectID Int {-! derive :Haskell2Xml !-}-newtype Interest = Interest Score {-! derive :Haskell2Xml !-}-newtype Skill = Skill Score {-! derive :Haskell2Xml !-}+newtype SubjectID = SubjectID Int {-! derive : XmlContent !-}+newtype Interest = Interest Score {-! derive : XmlContent !-}+newtype Skill = Skill Score {-! derive : XmlContent !-} -data Score = ScoreNone | ScoreLow | ScoreMedium | ScoreHigh {-! derive :Haskell2Xml !-}+data Score = ScoreNone | ScoreLow | ScoreMedium | ScoreHigh {-! derive : XmlContent !-} 
+ examples/gxl-1.0.dtd view
@@ -0,0 +1,138 @@+<!-- GXL (1.0)+     Document Type Definition+     (April 25, 2002)++copyright by++       Andy Schuerr+         Real-Time Systems Lab+         Darmstadt University of Technology+         Merckstr. 25, D-64283 Darmstadt, Germany+         andy.schuerr@es.tu-darmstadt.de++       Susan Elliott Sim+         School of Information and Computer Science+         444 Computer Science Bldg.+         University of California, Irvine+         ses@ics.uci.edu++       Ric Holt+         Department of Computer Science+         University of Waterloo+         Waterloo N2L 3G1, Canada+         holt@plg.uwaterloo.ca++       Andreas Winter+         Institute for Software Technology+         University of Koblenz-Landau+         Universitaetsstrasse 1, D-56070 Koblenz, Germany+         winter@uni-koblenz.de+-->+<!-- Extensions -->+<!ENTITY % gxl-extension "">+<!ENTITY % graph-extension "">+<!ENTITY % node-extension "">+<!ENTITY % edge-extension "">+<!ENTITY % rel-extension "">+<!ENTITY % value-extension "">+<!ENTITY % relend-extension "">+<!ENTITY % gxl-attr-extension "">+<!ENTITY % graph-attr-extension "">+<!ENTITY % node-attr-extension "">+<!ENTITY % edge-attr-extension "">+<!ENTITY % rel-attr-extension "">+<!ENTITY % relend-attr-extension "">+<!-- Attribute values -->+<!ENTITY % val "+           locator |+           bool    |+           int     |+           float   |+           string  |+           enum    |+           seq     |+           set     |+           bag     |+           tup+           %value-extension;">+<!-- gxl -->+<!ELEMENT gxl (graph* %gxl-extension;) >+<!ATTLIST gxl+	xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"+	%gxl-attr-extension;+>+<!-- type -->+<!ELEMENT type EMPTY>+<!ATTLIST type+	xlink:type (simple) #FIXED "simple"+	xlink:href CDATA #REQUIRED+>+<!-- graph -->+<!ELEMENT graph (type? , attr* , ( node | edge | rel )* %graph-extension;) >+<!ATTLIST graph+	id ID #REQUIRED+	role NMTOKEN #IMPLIED+	edgeids (true | false) "false"+	hypergraph (true | false) "false"+	edgemode (directed | undirected | defaultdirected | defaultundirected) "directed"+	%graph-attr-extension;+>+<!-- node -->+<!ELEMENT node (type? , attr*, graph* %node-extension;) >+<!ATTLIST node+	id ID #REQUIRED+	%node-attr-extension;+>+<!-- edge -->+<!ELEMENT edge (type?, attr*, graph* %edge-extension;) >+<!ATTLIST edge+	id ID #IMPLIED+	from IDREF #REQUIRED+	to IDREF #REQUIRED+	fromorder CDATA #IMPLIED+	toorder CDATA #IMPLIED+	isdirected (true | false) #IMPLIED+	%edge-attr-extension;+>+<!-- rel -->+<!ELEMENT rel (type? , attr*, graph*, relend* %rel-extension;) >+<!ATTLIST rel+	id ID #IMPLIED+	isdirected (true | false) #IMPLIED+	%rel-attr-extension;+>+<!-- relend -->+<!ELEMENT relend (attr* %relend-extension;) >+<!ATTLIST relend+	target IDREF #REQUIRED+	role NMTOKEN #IMPLIED+	direction (in | out | none) #IMPLIED+	startorder CDATA #IMPLIED+	endorder CDATA #IMPLIED+	%relend-attr-extension;+>+<!-- attr -->+<!ELEMENT attr (attr*, (%val;))>+<!ATTLIST attr+	id ID #IMPLIED+	name NMTOKEN #REQUIRED+	kind NMTOKEN #IMPLIED+>+<!-- locator -->+<!ELEMENT locator EMPTY>+<!ATTLIST locator+	xlink:type (simple) #FIXED "simple"+	xlink:href CDATA #REQUIRED+>+<!-- atomic values -->+<!ELEMENT bool (#PCDATA)>+<!ELEMENT int (#PCDATA)>+<!ELEMENT float (#PCDATA)>+<!ELEMENT string (#PCDATA)>+<!-- enumeration value -->+<!ELEMENT enum (#PCDATA)>+<!-- composite values -->+<!ELEMENT seq (%val;)*>+<!ELEMENT set (%val;)*>+<!ELEMENT bag (%val;)*>+<!ELEMENT tup (%val;)*>
rpm.spec view
@@ -2,7 +2,7 @@  Summary: Haskell utilities for processing XML Name: HaXml-Version: 1.13.3+Version: 1.19 Release: 1 License: GPL/LGPL Group: Development/Languages/Haskell@@ -86,9 +86,8 @@  %changelog -* Fri Sep 08 2006 Malcolm Wallace <malcolm@cs.york.ac.uk> 1.13-2-- Updated to HaXml 1.13-- Tweaked for use with ghc-6.6+* Tue Mar 16 2004 Malcolm Wallace <malcolm@cs.york.ac.uk> 1.12-1+- Updated to HaXml 1.14  * Tue Mar 16 2004 Malcolm Wallace <malcolm@cs.york.ac.uk> 1.12-1 - Updated to HaXml 1.12
src/Makefile view
@@ -1,19 +1,25 @@ SOFTWARE = HaXml-VERSION = 1.13.3+VERSION = 1.19  LIBSRCS = \ 	Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Lex.hs \+	Text/XML/HaXml/Posn.hs \ 	Text/XML/HaXml/Parse.hs Text/XML/HaXml/Pretty.hs \ 	Text/XML/HaXml/Types.hs Text/XML/HaXml/Validate.hs \-	Text/XML/HaXml/Wrappers.hs Text/XML/HaXml/OneOfN.hs \-	Text/XML/HaXml/Xml2Haskell.hs Text/XML/HaXml/Haskell2Xml.hs \+	Text/XML/HaXml/Wrappers.hs \+	Text/XML/HaXml/OneOfN.hs \+	Text/XML/HaXml/ParseLazy.hs \+	Text/XML/HaXml/ByteStringPP.hs \+	Text/XML/HaXml/TypeMapping.hs  Text/XML/HaXml/XmlContent.hs \ 	Text/XML/HaXml/Verbatim.hs Text/XML/HaXml/Escape.hs \+	Text/XML/HaXml/SAX.hs \+	Text/XML/HaXml/ShowXmlLazy.hs \ 	Text/XML/HaXml/Html/Generate.hs Text/XML/HaXml/Html/Parse.hs \ 	Text/XML/HaXml/Html/Pretty.hs \+	Text/XML/HaXml/Html/ParseLazy.hs \ 	Text/XML/HaXml/Xtract/Combinators.hs \ 	Text/XML/HaXml/Xtract/Lex.hs \ 	Text/XML/HaXml/Xtract/Parse.hs \-	Text/ParserCombinators/HuttonMeijerWallace.hs  LIBOBJS = $(patsubst %.hs, %.o, $(LIBSRCS)) @@ -22,26 +28,31 @@ 	Text/XML/HaXml/DtdToHaskell/Convert.hs \ 	Text/XML/HaXml/DtdToHaskell/Instance.hs \ 	tools/DtdToHaskell.hs tools/Xtract.hs tools/Validate.hs \- 	tools/Canonicalise.hs tools/MkOneOf.hs+ 	tools/Canonicalise.hs tools/MkOneOf.hs \+ 	tools/CanonicaliseLazy.hs tools/XtractLazy.hs  TOOLSET = \ 	../../DtdToHaskell$(EXE) ../../Xtract$(EXE) ../../Validate$(EXE) \-	../../Canonicalise$(EXE) ../../MkOneOf$(EXE)+	../../Canonicalise$(EXE) ../../MkOneOf$(EXE) \+	../../CanonicaliseLazy$(EXE) ../../XtractLazy$(EXE)  EXE = $(shell cat ../exe)-OUT = $(shell cat ../out) INSTALLDIR = $(shell cat ../prefix) WHOLEARCHIVE = $(shell cat ../ldopt)  # The caller *must* set the HC variable. COMPILER := $(findstring ghc, $(HC)) ifeq "$(COMPILER)" "ghc"-COMPILE  = $(HC) --make -cpp -i. $(shell cat ghcpkgs) -package-name HaXml-RENAME   = mv $(OUT)+COMPILEXEC = $(HC) --make -cpp -i. $(shell cat ghcpkgs) \+		-package polyparse -DVERSION=$(VERSION)+COMPILE  = $(COMPILEXEC) -package-name HaXml-$(VERSION)+RENAME   = $(shell cat ../out) endif COMPILER := $(findstring nhc98, $(HC)) ifeq "$(COMPILER)" "nhc98"-COMPILE  = hmake -hc=$(HC) -I. -K4M +CTS -H8M -CTS -package base+COMPILEXEC = hmake -hc=$(HC) -I. -K4M +CTS -H8M -CTS -package base \+		-package polyparse -package fps -DVERSION=$(VERSION)+COMPILE  = $(COMPILEXEC) RENAME   = echo Built endif @@ -54,35 +65,36 @@ 	cp libHSHaXml.a `cat ghclibdir` 	-ranlib `cat ghclibdir`/libHSHaXml.a	# ignore if fails on Linux 	-cp HSHaXml.o `cat ghclibdir`		# file may not exist on MacOS X-	-rm -r `cat ghcincdir`/HaXml-	mkdir `cat ghcincdir`/HaXml+	rm -rf `cat ghcincdir`/HaXml+	mkdir -p `cat ghcincdir`/HaXml 	cp interfaces.tar `cat ghcincdir`/HaXml 	cd `cat ghcincdir`/HaXml; tar xf interfaces.tar; rm interfaces.tar 	cp $(TOOLSET) $(INSTALLDIR) install-filesonly-nhc98: libs $(INSTALLDIR) 	cp libHSHaXml.a `cat nhc98libdir`/`harch` 	-ranlib `cat nhc98libdir`/`harch`/libHSHaXml.a-	-rm -r `cat nhc98incdir`/HaXml-	mkdir `cat nhc98incdir`/HaXml+	rm -rf `cat nhc98incdir`/HaXml+	mkdir -p `cat nhc98incdir`/HaXml 	cp interfaces.tar `cat nhc98incdir`/packages/HaXml 	cd `cat nhc98incdir`/packages/HaXml; tar xf interfaces.tar; rm interfaces.tar 	cp $(TOOLSET) $(INSTALLDIR) install-ghc: install-filesonly-ghc HaXml.pkgconf-	`cat ghcpkgcmd` --remove-package=HaXml || true+	`cat ghcpkgcmd` --remove-package=HaXml || true	# ignore any error 	`cat ghcpkgcmd` --add-package <pkg.conf || \ 	`cat ghcpkgcmd` register HaXml.pkgconf+	echo "you can safely ignore any errors from --add-package" install-nhc98: install-filesonly-nhc98 install-tools-hugs: toolset-hugs $(INSTALLDIR) 	cp $(patsubst ../../%, %, ${TOOLSET}) $(INSTALLDIR)  # update the sources if necessary-$(LIBSRCS) $(TOOLSRCS) Makefile Text/PrettyPrint/HughesPJ.hs: %: ../../src/%+$(LIBSRCS) $(TOOLSRCS) Makefile: %: ../../src/% 	cp $< $@ HaXml.pkgconf: ../../HaXml.cabal ghcincdirraw ghclibdirraw 	cp ../../HaXml.cabal $@ 	echo "import-dirs:	`cat ghcincdirraw`HaXml" >>$@ 	echo "library-dirs:	`cat ghclibdirraw`" >>$@-	echo "depends:		base, haskell98" >>$@+	echo "depends:		base, haskell98, polyparse" >>$@ 	echo "hs-libraries:	HS$(SOFTWARE)" >>$@  @@ -91,13 +103,13 @@ libHSHaXml.a: $(LIBSRCS) 	$(COMPILE) $(LIBSRCS) 	ar r libHSHaXml.a $(LIBOBJS)-	-ld -r -x $(WHOLEARCHIVE) -o HSHaXml.o libHSHaXml.a	# for GHCi only+	-ld -r $(WHOLEARCHIVE) -o HSHaXml.o libHSHaXml.a	# for GHCi only 	tar cf interfaces.tar `find Text -name *.hi -print`   # standalone tools $(TOOLSET): $(LIBSRCS) $(TOOLSRCS)-	cd tools; $(COMPILE) -i.. $(patsubst ../../%${EXE}, %, $@)+	cd tools; $(COMPILEXEC) -i.. $(patsubst ../../%${EXE}, %, $@) 	cd tools; $(RENAME) $(patsubst ../../%, %, $@) 	mv $(patsubst ../../%, tools/%, $@) ../.. 
− src/Text/ParserCombinators/HuttonMeijerWallace.hs
@@ -1,297 +0,0 @@-{-------------------------------------------------------------------------------                 A LIBRARY OF MONADIC PARSER COMBINATORS--                              29th July 1996--                 Graham Hutton               Erik Meijer-            University of Nottingham    University of Utrecht--This Haskell 1.3 script defines a library of parser combinators, and is taken-from sections 1-6 of our article "Monadic Parser Combinators".  Some changes-to the library have been made in the move from Gofer to Haskell:--   * Do notation is used in place of monad comprehension notation;--   * The parser datatype is defined using "newtype", to avoid the overhead-     of tagging and untagging parsers with the P constructor.---------------------------------------------------------------------------------** Extended to allow a symbol table/state to be threaded through the monad.-** Extended to allow a parameterised token type, rather than just strings.-** Extended to allow error-reporting.--(Extensions: 1998-2000 Malcolm.Wallace@cs.york.ac.uk)-(More extensions: 2004 gk-haskell@ninebynine.org)--------------------------------------------------------------------------------}---- | This library of monadic parser combinators is based on the ones---   defined by Graham Hutton and Erik Meijer.  It has been extended by---   Malcolm Wallace to use an abstract token type (no longer just a---   string) as input, and to incorporate a State Transformer monad, useful---   for symbol tables, macros, and so on.  Basic facilities for error---   reporting have also been added, and later extended by Graham Klyne---   to return the errors through an @Either@ type, rather than just---   calling @error@.--module Text.ParserCombinators.HuttonMeijerWallace-  (-  -- * The parser monad-    Parser(..)-  -- * Primitive parser combinators-  , item, eof, papply, papply'-  -- * Derived combinators-  , (+++), {-sat,-} tok, nottok, many, many1-  , sepby, sepby1, chainl, chainl1, chainr, chainr1, ops, bracket-  , toEOF-  -- * Error handling-  , elserror-  -- * State handling-  , stupd, stquery, stget-  -- * Re-parsing-  , reparse-  ) where--import Char-import Monad--infixr 5 +++----- The parser monad -----------------------------------------------------------type ParseResult s t e a = Either e [(a,s,[Either e t])]--newtype Parser s t e a   = P ( s -> [Either e t] -> ParseResult s t e a )-    -- ^ The parser type is parametrised on the types of the state @s@,-    --   the input tokens @t@, error-type @e@, and the result value @a@.-    --   The state and remaining input are threaded through the monad.--instance Functor (Parser s t e) where-   -- fmap        :: (a -> b) -> (Parser s t e a -> Parser s t e b)-   fmap f (P p)    = P (\st inp -> case p st inp of-                        Right res -> Right [(f v, s, out) | (v,s,out) <- res]-                        Left err  -> Left err-                       )--instance Monad (Parser s t e) where-   -- return      :: a -> Parser s t e a-   return v        = P (\st inp -> Right [(v,st,inp)])-   -- >>=         :: Parser s t e a -> (a -> Parser s t e b) -> Parser s t e b-   (P p) >>= f     = P (\st inp -> case p st inp of-                        Right res -> foldr joinresults (Right [])-                            [ papply' (f v) s out | (v,s,out) <- res ]-                        Left err  -> Left err-                       )-   -- fail        :: String -> Parser s t e a-   fail err        = P (\st inp -> Right [])-  -- I know it's counterintuitive, but we want no-parse, not an error.--instance MonadPlus (Parser s t e) where-   -- mzero       :: Parser s t e a-   mzero           = P (\st inp -> Right [])-   -- mplus       :: Parser s t e a -> Parser s t e a -> Parser s t e a-   (P p) `mplus` (P q) = P (\st inp -> joinresults (p st inp) (q st inp))---- joinresults ensures that explicitly raised errors are dominant,--- provided no parse has yet been found.  The commented out code is--- a slightly stricter specification of the real code.-joinresults :: ParseResult s t e a -> ParseResult s t e a -> ParseResult s t e a-{--joinresults (Left  p)  (Left  q)  = Left  p-joinresults (Left  p)  (Right _)  = Left  p-joinresults (Right []) (Left  q)  = Left  q-joinresults (Right p)  (Left  q)  = Right p-joinresults (Right p)  (Right q)  = Right (p++q)--}-joinresults (Left  p)  q  = Left p-joinresults (Right []) q  = q-joinresults (Right p)  q  = Right (p++ case q of Left _  -> []-                                                 Right r -> r)------ Primitive parser combinators ------------------------------------------------- | Deliver the first remaining token.-item              :: Parser s t e t-item               = P (\st inp -> case inp of-                        []            -> Right []-                        (Left e: _)   -> Left e-                        (Right x: xs) -> Right [(x,st,xs)]-                       )---- | Fail if end of input is not reached-eof               :: Show p => Parser s (p,t) String ()-eof                = P (\st inp -> case inp of-                        []         -> Right [((),st,[])]-                        (Left e:_) -> Left e-                        (Right (p,_):_) -> Left ("End of input expected at "-                                                 ++show p++"\n  but found text")-                       )--{---- | Ensure the value delivered by the parser is evaluated to WHNF.-force             :: Parser s t e a -> Parser s t e a-force (P p)        = P (\st inp -> let Right xs = p st inp-                                       h = head xs in-                                   h `seq` Right (h: tail xs)-                       )---  [[[GK]]]  ^^^^^^---  WHNF = Weak Head Normal Form, meaning that it has no top-level redex.---  In this case, I think that means that the first element of the list---  is fully evaluated.------  NOTE:  the original form of this function fails if there is no parse---  result for p st inp (head xs fails if xs is null), so the modified---  form can assume a Right value only.------  Why is this needed?---  It's not exported, and the only use of this I see is commented out.------------------------------------------}----- | Deliver the first parse result only, eliminating any backtracking.-first             :: Parser s t e a -> Parser s t e a-first (P p)        = P (\st inp -> case p st inp of-                                   Right (x:xs) -> Right [x]-                                   otherwise    -> otherwise-                       )---- | Apply the parser to some real input, given an initial state value.---   If the parser fails, raise 'error' to halt the program.---   (This is the original exported behaviour - to allow the caller to---   deal with the error differently, see @papply'@.)-papply            :: Parser s t String a -> s -> [Either String t]-                                              -> [(a,s,[Either String t])]-papply (P p) st inp = either error id (p st inp)---- | Apply the parser to some real input, given an initial state value.---   If the parser fails, return a diagnostic message to the caller.-papply'           :: Parser s t e a -> s -> [Either e t]-                                         -> Either e [(a,s,[Either e t])]-papply' (P p) st inp = p st inp----- Derived combinators ---------------------------------------------------------- | A choice between parsers.  Keep only the first success.-(+++)             :: Parser s t e a -> Parser s t e a -> Parser s t e a-p +++ q            = first (p `mplus` q)---- | Deliver the first token if it satisfies a predicate.-sat               :: (t -> Bool) -> Parser s (p,t) e t-sat p              = do {(_,x) <- item; if p x then return x else mzero}---- | Deliver the first token if it equals the argument.-tok               :: Eq t => t -> Parser s (p,t) e t-tok t              = do {(_,x) <- item; if x==t then return t else mzero}---- | Deliver the first token if it does not equal the argument.-nottok            :: Eq t => [t] -> Parser s (p,t) e t-nottok ts          = do {(_,x) <- item; if x `notElem` ts then return x-                                        else mzero}---- | Deliver zero or more values of @a@.-many              :: Parser s t e a -> Parser s t e [a]-many p             = many1 p +++ return []---many p           = force (many1 p +++ return [])---- | Deliver one or more values of @a@.-many1             :: Parser s t e a -> Parser s t e [a]-many1 p            = do {x <- p; xs <- many p; return (x:xs)}---- | Deliver zero or more values of @a@ separated by @b@'s.-sepby             :: Parser s t e a -> Parser s t e b -> Parser s t e [a]-p `sepby` sep      = (p `sepby1` sep) +++ return []---- | Deliver one or more values of @a@ separated by @b@'s.-sepby1            :: Parser s t e a -> Parser s t e b -> Parser s t e [a]-p `sepby1` sep     = do {x <- p; xs <- many (do {sep; p}); return (x:xs)}--chainl            :: Parser s t e a -> Parser s t e (a->a->a) -> a-                                                              -> Parser s t e a-chainl p op v      = (p `chainl1` op) +++ return v--chainl1           :: Parser s t e a -> Parser s t e (a->a->a) -> Parser s t e a-p `chainl1` op     = do {x <- p; rest x}-                     where-                        rest x = do {f <- op; y <- p; rest (f x y)}-                                 +++ return x--chainr            :: Parser s t e a -> Parser s t e (a->a->a) -> a-                                                              -> Parser s t e a-chainr p op v      = (p `chainr1` op) +++ return v--chainr1           :: Parser s t e a -> Parser s t e (a->a->a) -> Parser s t e a-p `chainr1` op     = do {x <- p; rest x}-                     where-                        rest x = do { f <- op-                                    ; y <- p `chainr1` op-                                    ; return (f x y)-                                    }-                                 +++ return x--ops               :: [(Parser s t e a, b)] -> Parser s t e b-ops xs             = foldr1 (+++) [do {p; return op} | (p,op) <- xs]--bracket           :: (Show p,Show t) =>-                     Parser s (p,t) e a -> Parser s (p,t) e b ->-                               Parser s (p,t) e c -> Parser s (p,t) e b-bracket open p close = do { open-                          ; x <- p-                          ; close -- `elserror` "improperly matched construct";-                          ; return x-                          }---- | Accept a complete parse of the input only, no partial parses.-toEOF             :: Show p =>-                     Parser s (p,t) String a -> Parser s (p,t) String a-toEOF p            = do { x <- p; eof; return x }------ Error handling --------------------------------------------------------------- | Return an error using the supplied diagnostic string, and a token type---   which includes position information.-parseerror :: (Show p,Show t) => String -> Parser s (p,t) String a-parseerror err = P (\st inp ->-                         case inp of-                           [] -> Left "Parse error: unexpected EOF\n"-                           (Left e:_) -> Left ("Lexical error:  "++e)-                           (Right (p,t):_)  ->-                                 Left ("Parse error: in  "++show p++"\n    "-                                       ++err++"\n  "++"Found "++show t)-                   )----- | If the parser fails, generate an error message.-elserror          :: (Show p,Show t) => Parser s (p,t) String a -> String-                                        -> Parser s (p,t) String a-p `elserror` s     = p +++ parseerror s----- State handling --------------------------------------------------------------- | Update the internal state.-stupd      :: (s->s) -> Parser s t e ()-stupd f     = P (\st inp-> {-let newst = f st in newst `seq`-}-                           Right [((), f st, inp)])---- | Query the internal state.-stquery    :: (s->a) -> Parser s t e a-stquery f   = P (\st inp-> Right [(f st, st, inp)])---- | Deliver the entire internal state.-stget      :: Parser s t e s-stget       = P (\st inp-> Right [(st, st, inp)])------ Push some tokens back onto the input stream and reparse ---------------------- | This is useful for recursively expanding macros.  When the---   user-parser recognises a macro use, it can lookup the macro---   expansion from the parse state, lex it, and then stuff the---   lexed expansion back down into the parser.-reparse    :: [Either e t] -> Parser s t e ()-reparse ts  = P (\st inp-> Right [((), st, ts++inp)])--------------------------------------------------------------------------------
src/Text/XML/HaXml.hs view
@@ -1,3 +1,4 @@+#define dummy	-- just to ensure cpp gets called on this file -- | This is just a convenient way of bunching the XML combinators --   together with some other things you are likely to want at the --   same time.@@ -29,6 +30,7 @@  import Text.PrettyPrint.HughesPJ  (render) --- | The version of the library (currently "1.13.2").+-- | The version of the library. version :: String-version  = "1.13.2"+version  = show VERSION+		-- expect cpp to fill in value
+ src/Text/XML/HaXml/ByteStringPP.hs view
@@ -0,0 +1,297 @@+-- | This is a fast non-pretty-printer for turning the internal representation+--   of generic structured XML documents into Lazy ByteStrings.+--   Like in Text.Xml.HaXml.Pretty, there is one pp function for each type in+--   Text.Xml.HaXml.Types, so you can pretty-print as much or as little+--   of the document as you wish.++module Text.XML.HaXml.ByteStringPP+  (+  -- * Pretty-print a whole document+    document+  -- ** Just one content+  ,   content+  -- ** Just one tagged element+  ,   element+  -- * Pretty-print just a DTD+  , doctypedecl+  -- ** The prolog+  ,   prolog+  -- ** A content particle description+  ,   cp+  ) where++import Prelude hiding (maybe,either,elem)+import Maybe hiding (maybe)+import Data.List (intersperse) +import Data.ByteString.Lazy hiding (pack,map,head,any,singleton)+import Data.ByteString.Lazy.Char8 (pack, singleton, join)+import Text.XML.HaXml.Types++either f g (Left x)  = f x+either f g (Right x) = g x++maybe f Nothing  = empty+maybe f (Just x) = f x+++-- A simple implementation of the pretty-printing combinator interface,+-- but for plain ByteStrings:+infixl 6 <> +infixl 6 <+>+infixl 5 $$, $+$+(<>)   :: ByteString   -> ByteString -> ByteString -- Beside+hcat   :: [ByteString] -> ByteString		   -- List version of <>+(<+>)  :: ByteString   -> ByteString -> ByteString -- Beside, separated by space+hsep   :: [ByteString] -> ByteString		   -- List version of <+>+($$)   :: ByteString   -> ByteString -> ByteString -- Above; if there is no+                                                   -- overlap, it "dovetails"+vcat   :: [ByteString] -> ByteString       -- List version of $$+cat    :: [ByteString] -> ByteString       -- Either hcat or vcat+sep    :: [ByteString] -> ByteString       -- Either hsep or vcat+fcat   :: [ByteString] -> ByteString       -- ``Paragraph fill'' version of cat+fsep   :: [ByteString] -> ByteString       -- ``Paragraph fill'' version of sep+nest   :: Int -> ByteString -> ByteString  -- Nested++(<>)  b1 b2  = b1 `append` b2+(<+>) b1 b2  = b1 <> pack " " <> b2+($$)  b1 b2  = b1 <> pack "\n" <> b2+($+$)        = ($$)++hcat = Data.ByteString.Lazy.concat +hsep = Data.ByteString.Lazy.Char8.join (singleton ' ')+vcat = Data.ByteString.Lazy.Char8.join (singleton '\n')+cat  = hcat+sep  = hsep+text = pack+fcat = cat+fsep = sep+nest _ b = pack " " <> b+parens p = pack "(" <> p <> pack ")"+++----+-- Now for the XML pretty-printing interface.+-- (Basically copied direct from Text.XML.HaXml.Pretty).++document :: Document i -> ByteString+prolog   :: Prolog     -> ByteString+xmldecl  :: XMLDecl    -> ByteString+misc     :: Misc       -> ByteString+sddecl   :: Bool       -> ByteString++doctypedecl   :: DocTypeDecl   -> ByteString+markupdecl    :: MarkupDecl    -> ByteString+extsubset     :: ExtSubset     -> ByteString+extsubsetdecl :: ExtSubsetDecl -> ByteString+cp            :: CP            -> ByteString++element   :: Element i -> ByteString+attribute :: Attribute -> ByteString+content   :: Content i -> ByteString++----++document (Document p _ e m)= prolog p $$ element e $$ vcat (Prelude.map misc m)+prolog (Prolog x m1 dtd m2)= maybe xmldecl x $$+                             vcat (Prelude.map misc m1) $$+                             maybe doctypedecl dtd $$+                             vcat (Prelude.map misc m2)+xmldecl (XMLDecl v e sd)   = text "<?xml version='" <> text v <> text "'" <+>+                             maybe encodingdecl e <+>+                             maybe sddecl sd <+>+                             text "?>"+misc (Comment s)           = text "<!--" <+> text s <+> text "-->"+misc (PI (n,s))            = text "<?" <> text n <+> text s <+> text "?>"+sddecl sd   | sd           = text "standalone='yes'"+            | otherwise    = text "standalone='no'"+doctypedecl (DTD n eid ds) = if Prelude.null ds then +                                  hd <> text ">"+                             else hd <+> text " [" $$+                                  vcat (Prelude.map markupdecl ds) $$ text "]>"+                           where hd = text "<!DOCTYPE" <+> text n <+>+                                      maybe externalid eid+markupdecl (Element e)     = elementdecl e+markupdecl (AttList a)     = attlistdecl a+markupdecl (Entity e)      = entitydecl e+markupdecl (Notation n)    = notationdecl n+markupdecl (MarkupMisc m)  = misc m+--markupdecl (MarkupPE p m)  = peref p+extsubset (ExtSubset t ds) = maybe textdecl t $$+                             vcat (Prelude.map extsubsetdecl ds)+extsubsetdecl (ExtMarkupDecl m)      = markupdecl m+extsubsetdecl (ExtConditionalSect c) = conditionalsect c+--extsubsetdecl (ExtPEReference p e)   = peref p++element (Elem n as []) = text "<" <> text n <+>+                         fsep (Prelude.map attribute as) <> text "/>"+element e@(Elem n as cs)+--  | any isText cs    = text "<" <> text n <+> fsep (map attribute as) <>+--                       text ">" <> hcat (map content cs) <>+--                       text "</" <> text n <> text ">"+    | isText (head cs) = text "<" <> text n <+> fsep (Prelude.map attribute as) <>+                         text ">" <> hcat (Prelude.map content cs) <>+                         text "</" <> text n <> text ">"+    | otherwise        = let (d,c) = carryelem e empty+                         in d <> c++isText (CString _ _ _) = True+isText (CRef _ _)      = True+isText _               = False++carryelem (Elem n as []) c+                       = ( c <>+                           text "<" <> text n <+> fsep (Prelude.map attribute as)+                         , text "/>")+carryelem e@(Elem n as cs) c+--  | any isText cs    =  ( c <> element e, empty)+    | otherwise        =  let (cs0,d0) = carryscan carrycontent cs (text ">")+                          in+                          ( c <>+                            text "<" <> text n <+> fsep (Prelude.map attribute as) $$+                            nest 2 (vcat cs0) <> --- $$+                            d0 <> text "</" <> text n+                          , text ">")+carrycontent (CElem e _) c   = carryelem e c+carrycontent (CString False s _) c = (c <> chardata s, empty)+carrycontent (CString True  s _) c = (c <> cdsect s, empty)+carrycontent (CRef r _) c    = (c <> reference r, empty)+carrycontent (CMisc m _) c   = (c <> misc m, empty)++carryscan :: (a->c->(b,c)) -> [a] -> c -> ([b],c)+carryscan f []     c = ([],c)+carryscan f (a:as) c = let (b, c0) = f a c+                           (bs,c1) = carryscan f as c0+                       in (b:bs, c1)++--carryelem e@(Elem n as cs) c+--  | isText (head cs) =+--        ( start <>+--          text ">" <> hcat (map content cs) <> text "</" <> text n+--        , text ">")+--  | otherwise =+--        let (d,c0) = foldl carrycontent (start, text ">") cs in+--        ( d <> c0 <> text "</" <> text n+--        , text ">")+--  where start = c <> text "<" <> text n <+> fsep (map attribute as)+--+--carrycontent (d,c) (CElem e)   = let (d',c') = carryelem e c in+--                                 (d $$ nest 2 d',       c')+--carrycontent (d,c) (CString _ s) = (d <> c <> chardata s, empty)+--carrycontent (d,c) (CRef r)    = (d <> c <> reference r,empty)+--carrycontent (d,c) (CMisc m)   = (d $$ c <> misc m,     empty)+++attribute (n,v)             = text n <> text "=" <> attvalue v+content (CElem e _)         = element e+content (CString False s _) = chardata s+content (CString True s _)  = cdsect s+content (CRef r _)          = reference r+content (CMisc m _)         = misc m++elementdecl (ElementDecl n cs) = text "<!ELEMENT" <+> text n <+>+                                 contentspec cs <> text ">"+contentspec EMPTY              = text "EMPTY"+contentspec ANY                = text "ANY"+contentspec (Mixed m)          = mixed m+contentspec (ContentSpec c)    = cp c+--contentspec (ContentPE p cs)   = peref p+cp (TagName n m)       = text n <> modifier m+cp (Choice cs m)       = parens (hcat (intersperse (text "|") (Prelude.map cp cs))) <>+                           modifier m+cp (Seq cs m)          = parens (hcat (intersperse (text ",") (Prelude.map cp cs))) <>+                           modifier m+--cp (CPPE p c)          = peref p+modifier None          = empty+modifier Query         = text "?"+modifier Star          = text "*"+modifier Plus          = text "+"+mixed  PCDATA          = text "(#PCDATA)"+mixed (PCDATAplus ns)  = text "(#PCDATA |" <+>+                         hcat (intersperse (text "|") (Prelude.map text ns)) <>+                         text ")*"++attlistdecl (AttListDecl n ds) = text "<!ATTLIST" <+> text n <+>+                                 fsep (Prelude.map attdef ds) <> text ">"+attdef (AttDef n t d)          = text n <+> atttype t <+> defaultdecl d+atttype  StringType            = text "CDATA"+atttype (TokenizedType t)      = tokenizedtype t+atttype (EnumeratedType t)     = enumeratedtype t+tokenizedtype ID               = text "ID"+tokenizedtype IDREF            = text "IDREF"+tokenizedtype IDREFS           = text "IDREFS"+tokenizedtype ENTITY           = text "ENTITY"+tokenizedtype ENTITIES         = text "ENTITIES"+tokenizedtype NMTOKEN          = text "NMTOKEN"+tokenizedtype NMTOKENS         = text "NMTOKENS"+enumeratedtype (NotationType n)= notationtype n+enumeratedtype (Enumeration e) = enumeration e+notationtype ns                = text "NOTATION" <+>+                                 parens (hcat (intersperse (text "|") (Prelude.map text ns)))+enumeration ns                 = parens (hcat (intersperse (text "|") (Prelude.map nmtoken ns)))+defaultdecl  REQUIRED          = text "#REQUIRED"+defaultdecl  IMPLIED           = text "#IMPLIED"+defaultdecl (DefaultTo a f)    = maybe (const (text "#FIXED")) f <+> attvalue a+conditionalsect (IncludeSect i)= text "<![INCLUDE [" <+>+                                 vcat (Prelude.map extsubsetdecl i) <+> text "]]>"+conditionalsect (IgnoreSect i) = text "<![IGNORE [" <+>+                                 fsep (Prelude.map ignoresectcontents i) <+> text "]]>"+ignore (Ignore)                = empty+ignoresectcontents (IgnoreSectContents i is)+                               = ignore i <+> vcat (Prelude.map internal is)+                          where internal (ics,i) = text "<![[" <+>+                                                   ignoresectcontents ics <+>+                                                   text "]]>" <+> ignore i+reference (RefEntity er)       = entityref er+reference (RefChar cr)         = charref cr+entityref n                    = text "&" <> text n <> text ";"+charref c                      = text "&#" <> text (show c) <> text ";"+entitydecl (EntityGEDecl d)    = gedecl d+entitydecl (EntityPEDecl d)    = pedecl d+gedecl (GEDecl n ed)           = text "<!ENTITY" <+> text n <+> entitydef ed <>+                                 text ">"+pedecl (PEDecl n pd)           = text "<!ENTITY %" <> text n <+> pedef pd <>+                                 text ">"+entitydef (DefEntityValue ev)  = entityvalue ev+entitydef (DefExternalID i nd) = externalid i <+> maybe ndatadecl nd+pedef (PEDefEntityValue ev)    = entityvalue ev+pedef (PEDefExternalID eid)    = externalid eid+externalid (SYSTEM sl)         = text "SYSTEM" <+> systemliteral sl+externalid (PUBLIC i sl)       = text "PUBLIC" <+> pubidliteral i <+>+                                 systemliteral sl+ndatadecl (NDATA n)            = text "NDATA" <+> text n+textdecl (TextDecl vi ed)      = text "<?xml" <+> maybe text vi <+>+                                 encodingdecl ed <> text "?>"+extparsedent (ExtParsedEnt t c)= maybe textdecl t <+> content c+extpe (ExtPE t esd)            = maybe textdecl t <+>+                                 vcat (Prelude.map extsubsetdecl esd)+notationdecl (NOTATION n e)    = text "<!NOTATION" <+> text n <+>+                                 either externalid publicid e <>+                                 text ">"+publicid (PUBLICID p)          = text "PUBLICID" <+> pubidliteral p+encodingdecl (EncodingDecl s)  = text "encoding='" <> text s <> text "'"+nmtoken s                      = text s+attvalue (AttValue esr)        = text "\"" <>+                                 hcat (Prelude.map (either text reference) esr) <>+                                 text "\""+entityvalue (EntityValue evs)+  | containsDoubleQuote evs    = text "'"  <> hcat (Prelude.map ev evs) <> text "'"+  | otherwise                  = text "\"" <> hcat (Prelude.map ev evs) <> text "\""+ev (EVString s)                = text s+--ev (EVPERef p e)               = peref p+ev (EVRef r)                   = reference r+pubidliteral (PubidLiteral s)+    | toWord8 '"' `elem` (pack s) = text "'" <> text s <> text "'"+    | otherwise                = text "\"" <> text s <> text "\""+systemliteral (SystemLiteral s)+    | toWord8 '"' `elem` (pack s) = text "'" <> text s <> text "'"+    | otherwise                = text "\"" <> text s <> text "\""+chardata s                     = {-if all isSpace s then empty else-} text s+cdsect c                       = text "<![CDATA[" <> chardata c <> text "]]>"++--toWord8 :: Char -> Word8+toWord8 = toEnum . fromEnum++----+containsDoubleQuote evs = any csq evs+    where csq (EVString s) = toWord8 '"' `elem` (pack s)+          csq _            = False
src/Text/XML/HaXml/Combinators.hs view
@@ -32,7 +32,7 @@    -- $recursive   , deep, deepest, multi    -- ** Interior editing.-  , when, guards, chip, foldXml+  , when, guards, chip, inplace, foldXml    -- ** Constructive filters.   , mkElem, mkElemAttr, literal, cdata, replaceTag, replaceAttrs @@ -66,7 +66,7 @@ -- | All document transformations are /content filters/. --   A filter takes a single XML 'Content' value and returns a sequence --   of 'Content' values, possibly empty.-type CFilter    = Content -> [Content]+type CFilter i  = Content i -> [Content i]   @@ -74,17 +74,18 @@ -- $selection -- In the algebra of combinators, @none@ is the zero, and @keep@ the identity. -- (They have a more general type than just CFilter.)-keep, none :: a->[a]+keep :: a->[a] keep = \x->[x]+none :: a->[b] none = \x->[]  -- | Throw away current node, keep just the (unprocessed) children.-children :: CFilter-children (CElem (Elem _ _ cs)) = cs+children :: CFilter i+children (CElem (Elem _ _ cs) _) = cs children _ = []  -- | Select the @n@'th positional result of a filter.-position :: Int -> CFilter -> CFilter+position :: Int -> CFilter i -> CFilter i position n f = (\cs-> [cs!!n]) . f  @@ -99,29 +100,29 @@ -- attribute value, @tagWith@ keeps only an element whose tag name -- satisfies the given predicate. -elm, txt   :: CFilter-tag        :: String -> CFilter-attr       :: Name -> CFilter-attrval    :: Attribute -> CFilter-tagWith    :: (String->Bool) -> CFilter+elm, txt   :: CFilter i+tag        :: String -> CFilter i+attr       :: Name -> CFilter i+attrval    :: Attribute -> CFilter i+tagWith    :: (String->Bool) -> CFilter i -elm x@(CElem _)   = [x]+elm x@(CElem _ _) = [x] elm _             = [] -txt x@(CString _ _) = [x]-txt x@(CRef _)      = [x]-txt _               = []+txt x@(CString _ _ _) = [x]+txt x@(CRef _ _)      = [x]+txt _                 = [] -tag t x@(CElem (Elem n _ _)) | t==n  = [x]+tag t x@(CElem (Elem n _ _) _) | t==n  = [x] tag t _  = [] -tagWith p x@(CElem (Elem n _ _)) | p n  = [x]+tagWith p x@(CElem (Elem n _ _) _) | p n  = [x] tagWith p _  = [] -attr n x@(CElem (Elem _ as _)) | n `elem` (map fst as)  = [x]+attr n x@(CElem (Elem _ as _) _) | n `elem` (map fst as)  = [x] attr n _  = [] -attrval av x@(CElem (Elem _ as _)) | av `elem` as  = [x]+attrval av x@(CElem (Elem _ as _) _) | av `elem` as  = [x] attrval av _  = []  @@ -131,27 +132,26 @@ -- | For a mandatory attribute field, @find key cont@ looks up the value of --   the attribute name @key@, and applies the continuation @cont@ to --   the value.-find :: String -> (String->CFilter) -> CFilter-find key cont c@(CElem (Elem _ as _)) = cont (value (lookfor key as)) c+find :: String -> (String->CFilter i) -> CFilter i+find key cont c@(CElem (Elem _ as _) _) = cont (show (lookfor key as)) c   where lookfor x = fromMaybe (error ("missing attribute: "++show x)) . lookup x-        value (AttValue [Left x]) = x -- 'lookfor' has the more general type :: (Eq a,Show a) => a -> [(a,b)] -> b  -- | When an attribute field may be absent, use @iffind key yes no@ to lookup --   its value.  If the attribute is absent, it acts as the @no@ filter, --   otherwise it applies the @yes@ filter.-iffind :: String -> (String->CFilter) -> CFilter -> CFilter-iffind key yes no c@(CElem (Elem _ as _)) =+iffind :: String -> (String->CFilter i) -> CFilter i -> CFilter i+iffind key yes no c@(CElem (Elem _ as _) _) =   case (lookup key as) of     Nothing  -> no c-    (Just (AttValue [Left s])) -> yes s c+    (Just v@(AttValue _)) -> yes (show v) c iffind key yes no other = no other  -- | @ifTxt yes no@ processes any textual content with the @yes@ filter, --   but otherwise is the same as the @no@ filter.-ifTxt :: (String->CFilter) -> CFilter -> CFilter-ifTxt yes no c@(CString _ s) = yes s c-ifTxt yes no c               = no c+ifTxt :: (String->CFilter i) -> CFilter i -> CFilter i+ifTxt yes no c@(CString _ s _) = yes s c+ifTxt yes no c                 = no c   @@ -175,7 +175,7 @@   -- | Sequential (/Irish/,/backwards/) composition-o :: CFilter -> CFilter -> CFilter+o :: CFilter i -> CFilter i -> CFilter i f `o` g = concatMap f . g  -- | Binary parallel composition.  Each filter uses a copy of the input,@@ -202,7 +202,7 @@ andThen f g = \x-> g (f x) x			-- lift g f id  -- | Process children using specified filters.  /not exported/-childrenBy :: CFilter -> CFilter+childrenBy :: CFilter i -> CFilter i  childrenBy f = f `o` children  -- | Directional choice:@@ -213,24 +213,24 @@  -- | Pruning: in @f `with` g@, --   keep only those f-productions which have at least one g-production-with :: CFilter -> CFilter -> CFilter+with :: CFilter i -> CFilter i -> CFilter i f `with` g = filter (not.null.g) . f  -- | Pruning: in @f `without` g@, --   keep only those f-productions which have no g-productions-without :: CFilter -> CFilter -> CFilter+without :: CFilter i -> CFilter i -> CFilter i f `without` g = filter (null.g) . f  -- | Pronounced /slash/, @f \/> g@ means g inside f-(/>) :: CFilter -> CFilter -> CFilter+(/>) :: CFilter i -> CFilter i -> CFilter i f /> g = g `o` children `o` f  -- | Pronounced /outside/, @f \<\/ g@ means f containing g-(</) :: CFilter -> CFilter -> CFilter+(</) :: CFilter i -> CFilter i -> CFilter i f </ g = f `with` (g `o` children)  -- | Join an element-matching filter with a text-only filter-et :: (String->CFilter) -> CFilter -> CFilter+et :: (String->CFilter i) -> CFilter i -> CFilter i et f g = (f `oo` tagged elm)             |>|          (g `o` txt)@@ -238,7 +238,7 @@ -- | Express a list of filters like an XPath query, e.g. --   @path [children, tag \"name1\", attr \"attr1\", children, tag \"name2\"]@ --   is like the XPath query @\/name1[\@attr1]\/name2@.-path :: [CFilter] -> CFilter+path :: [CFilter i] -> CFilter i path fs = foldr (flip (o)) keep fs  @@ -248,7 +248,7 @@ -- search of the tree, @deepest@ does a depth-first search, @multi@ returns -- content at all tree-levels, even those strictly contained within results -- that have already been returned.-deep, deepest, multi :: CFilter -> CFilter+deep, deepest, multi :: CFilter i -> CFilter i deep f     = f |>| (deep f `o` children) deepest f  = (deepest f `o` children) |>| f multi f    = f `union` (multi f `o` children)@@ -256,23 +256,31 @@ -- | Interior editing: --   @f `when` g@ applies @f@ only when the predicate @g@ succeeds, --   otherwise the content is unchanged.-when   :: CFilter -> CFilter -> CFilter+when   :: CFilter i -> CFilter i -> CFilter i -- | Interior editing: --   @g `guards` f@ applies @f@ only when the predicate @g@ succeeds, --   otherwise the content is discarded.-guards :: CFilter -> CFilter -> CFilter+guards :: CFilter i -> CFilter i -> CFilter i f `when` g       = g ?> f :> keep g `guards` f     = g ?> f :> none	-- = f `o` (keep `with` g)  -- | Process CHildren In Place.  The filter is applied to any children --   of an element content, and the element rebuilt around the results.-chip :: CFilter -> CFilter-chip f (CElem (Elem n as cs)) = [ CElem (Elem n as (concatMap f cs)) ]+chip :: CFilter i -> CFilter i+chip f (CElem (Elem n as cs) i) = [ CElem (Elem n as (concatMap f cs)) i ] chip f c = [c]+-- chip f = inplace (f `o` children) +-- | Process an element In Place.  The filter is applied to the element+--   itself, and then the original element rebuilt around the results.+inplace :: CFilter i -> CFilter i+inplace f c@(CElem (Elem name as _) i) = [ CElem (Elem name as (f c)) i ]+inplace f c = [c]++ -- | Recursive application of filters: a fold-like operator.  Defined --   as @f `o` chip (foldXml f)@.-foldXml :: CFilter -> CFilter+foldXml :: CFilter i -> CFilter i foldXml f = f `o` chip (foldXml f)  @@ -282,32 +290,32 @@  -- | Build an element with the given tag name - its content is the results --   of the given list of filters.-mkElem :: String -> [CFilter] -> CFilter-mkElem h cfs = \t-> [ CElem (Elem h [] (cat cfs t)) ]+mkElem :: String -> [CFilter i] -> CFilter i+mkElem h cfs = \t-> [ CElem (Elem h [] (cat cfs t)) undefined ]  -- | Build an element with the given name, attributes, and content.-mkElemAttr :: String -> [(String,CFilter)] -> [CFilter] -> CFilter-mkElemAttr h as cfs = \t-> [ CElem (Elem h (map (attr t) as) (cat cfs t)) ]+mkElemAttr :: String -> [(String,CFilter i)] -> [CFilter i] -> CFilter i+mkElemAttr h as cfs = \t-> [ CElem (Elem h (map (attr t) as) (cat cfs t)) undefined ]   where attr t (n,vf) =-            let v = concat [ s | (CString _ s) <- (deep txt `o` vf) t ]+            let v = concat [ s | (CString _ s _) <- (deep txt `o` vf) t ]             in  (n, AttValue [Left v])  -- | Build some textual content.-literal :: String -> CFilter-literal s = const [CString False s]+literal :: String -> CFilter i+literal s = const [CString False s undefined]  -- | Build some CDATA content.-cdata :: String -> CFilter-cdata s = const [CString True s]+cdata :: String -> CFilter i+cdata s = const [CString True s undefined] --- | Rename an element tag.-replaceTag :: String -> CFilter-replaceTag n (CElem (Elem _ _ cs)) = [CElem (Elem n [] cs)]+-- | Rename an element tag (leaving attributes in place).+replaceTag :: String -> CFilter i+replaceTag n (CElem (Elem _ as cs) i) = [CElem (Elem n as cs) i] replaceTag n _ = [] --- | Replace the attributes of an element.-replaceAttrs :: [(String,String)] -> CFilter-replaceAttrs as (CElem (Elem n _ cs)) = [CElem (Elem n as' cs)]+-- | Replace the attributes of an element (leaving tag the same).+replaceAttrs :: [(String,String)] -> CFilter i+replaceAttrs as (CElem (Elem n _ cs) i) = [CElem (Elem n as' cs) i]     where as' = map (\(n,v)-> (n, AttValue [Left v])) as replaceAttrs as _ = [] @@ -317,15 +325,26 @@  -- | A LabelFilter is like a CFilter except that it pairs up a polymorphic --   value (label) with each of its results.-type LabelFilter a = Content -> [(a,Content)]+type LabelFilter i a = Content i -> [(a,Content i)]  -- | Compose a label-processing filter with a label-generating filter.-oo :: (a->CFilter) -> LabelFilter a -> CFilter+oo :: (a->CFilter i) -> LabelFilter i a -> CFilter i f `oo` g = concatMap (uncurry f) . g +{-+-- | Process the information labels (very nearly monadic bind).+oo :: (b -> CFilter b c) -> CFilter a b -> CFilter a c+f `oo` g = concatMap info . g+    where info c@(CElem _ i)     = f i c+          info c@(CString _ _ i) = f i c+          info c@(CRef _ i)      = f i c+          info c                 = [c]+-}+ -- | Combine labels.  Think of this as a pair-wise zip on labels.-x :: (CFilter->LabelFilter a) -> (CFilter->LabelFilter b) ->-       (CFilter->LabelFilter (a,b))+--   e.g. @(numbered `x` tagged)@+x :: (CFilter i->LabelFilter i a) -> (CFilter i->LabelFilter i b) ->+       (CFilter i->LabelFilter i (a,b)) f `x` g = \cf c-> let gs = map fst (g cf c)                       fs = map fst (f cf c)                   in zip (zip fs gs) (cf c)@@ -334,12 +353,12 @@ -- Some basic label-generating filters.  -- | Number the results from 1 upwards.-numbered :: CFilter -> LabelFilter String-numbered f = zip (map show [(1::Int)..]) . f+numbered :: CFilter i -> LabelFilter i Int+numbered f = zip [1..] . f  -- | In @interspersed a f b@, label each result of @f@ with the string @a@, --   except for the last one which is labelled with the string @b@.-interspersed :: String -> CFilter -> String -> LabelFilter String+interspersed :: String -> CFilter i -> String -> LabelFilter i String interspersed a f b =   (\xs-> zip (replicate (len xs) a ++ [b]) xs) . f   where@@ -348,31 +367,31 @@  -- | Label each element in the result with its tag name.  Non-element --   results get an empty string label.-tagged :: CFilter -> LabelFilter String+tagged :: CFilter i -> LabelFilter i String tagged f = extracted name f-  where name (CElem (Elem n _ _)) = n-        name _                    = ""+  where name (CElem (Elem n _ _) _) = n+        name _                      = ""  -- | Label each element in the result with the value of the named attribute. --   Elements without the attribute, and non-element results, get an --   empty string label.-attributed :: String -> CFilter -> LabelFilter String+attributed :: String -> CFilter i -> LabelFilter i String attributed key f = extracted att f-  where att (CElem (Elem _ as _)) =+  where att (CElem (Elem _ as _) _) =             case (lookup key as) of               Nothing  -> ""-              (Just (AttValue [Left s])) -> s+              (Just v@(AttValue _)) -> show v         att _ = ""  -- | Label each textual part of the result with its text.  Element --   results get an empty string label.-textlabelled :: CFilter -> LabelFilter (Maybe String)+textlabelled :: CFilter i -> LabelFilter i (Maybe String) textlabelled f = extracted text f-  where text (CString _ s) = Just s-        text _             = Nothing+  where text (CString _ s _) = Just s+        text _               = Nothing  -- | Label each content with some information extracted from itself.-extracted :: (Content->a) -> CFilter -> LabelFilter a+extracted :: (Content i->a) -> CFilter i -> LabelFilter i a extracted proj f = concatMap (\c->[(proj c, c)]) . f                                                                                  
src/Text/XML/HaXml/DtdToHaskell/Convert.hs view
@@ -88,13 +88,13 @@   where     mkConstr n ts = (mkConsName n ts, ts)     mkConsName (Name x n) sts = Name x (n++concat (intersperse "_" (map flatten sts)))-    flatten (Maybe st)   = {-"Maybe_" ++-} flatten st-    flatten (List st)    = {-"List_" ++-} flatten st-    flatten (List1 st)   = {-"List1_" ++-} flatten st-    flatten (Tuple sts)  = {-"Tuple" ++ show (length sts) ++ "_" ++-}+    flatten (Maybe st)   = {-"Maybe_" ++ -} flatten st+    flatten (List st)    = {-"List_" ++ -} flatten st+    flatten (List1 st)   = {-"List1_" ++ -} flatten st+    flatten (Tuple sts)  = {-"Tuple" ++ show (length sts) ++ "_" ++ -}                             concat (intersperse "_" (map flatten sts))     flatten String       = "Str"-    flatten (OneOf sts)  = {-"OneOf" ++ show (length sts) ++ "_" ++-}+    flatten (OneOf sts)  = {-"OneOf" ++ show (length sts) ++ "_" ++ -}                             concat (intersperse "_" (map flatten sts))     flatten Any          = "Any"     flatten (Defined (Name _ n))  = n@@ -114,13 +114,13 @@   where     mkType StringType REQUIRED = String     mkType StringType IMPLIED  = Maybe String-    mkType StringType (DefaultTo (AttValue [Left s]) f) = Defaultable String s+    mkType StringType (DefaultTo v@(AttValue _) f) = Defaultable String (show v)     mkType (TokenizedType _) REQUIRED  = String     mkType (TokenizedType _) IMPLIED   = Maybe String-    mkType (TokenizedType _) (DefaultTo (AttValue [Left s]) f) =-							Defaultable String s+    mkType (TokenizedType _) (DefaultTo v@(AttValue _) f) =+							Defaultable String (show v)     mkType (EnumeratedType _) REQUIRED = Defined (name_a e n)     mkType (EnumeratedType _) IMPLIED  = Maybe (Defined (name_a e n))-    mkType (EnumeratedType _) (DefaultTo (AttValue [Left s]) f) =-		Defaultable (Defined (name_a e n)) (hName (name_ac e n s))+    mkType (EnumeratedType _) (DefaultTo v@(AttValue _) f) =+		Defaultable (Defined (name_a e n)) (hName (name_ac e n (show v))) 
src/Text/XML/HaXml/DtdToHaskell/Instance.hs view
@@ -7,28 +7,32 @@ import Text.XML.HaXml.DtdToHaskell.TypeDef import Text.PrettyPrint.HughesPJ - -- | Convert typedef to appropriate instance declaration, either @XmlContent@, --   @XmlAttributes@, or @XmlAttrType@. mkInstance :: TypeDef -> Doc --- no constructors+-- no constructors - represents an element with empty content but attributes. mkInstance (DataDef aux n fs []) =     let (frpat, frattr, topat, toattr) = attrpats fs         frretval = if null fs then ppHName n else frattr         topatval = if null fs then ppHName n else topat     in+    text "instance HTypeable" <+> ppHName n <+> text "where" $$+    nest 4 ( text "toHType x = Defined \"" <> ppXName n <> text "\" [] []" )+    $$     text "instance XmlContent" <+> ppHName n <+> text "where" $$-    nest 4 ( text "fromElem (CElem (Elem \"" <> ppXName n <> text "\""-                  <+> frpat <+> text "[]):rest) =" $$-             nest 4 (text "(Just" <+> frretval <> text ", rest)") $$-             text "fromElem (CMisc _:rest) = fromElem rest" $$-             text "fromElem (CString _ s:rest) | all isSpace s = fromElem rest" $$-             text "fromElem rest = (Nothing, rest)"-           $$-             text "toElem" <+> topatval <+> text "=" $$+    nest 4 (+             text "toContents" <+> topatval <+> text "=" $$              nest 4 (text "[CElem (Elem \"" <> ppXName n <> text "\""-                          <+> toattr <+> text "[])]")+                          <+> toattr <+> text "[]) ()]")+           $$+             text "parseContents = do" $$+             nest 4 (text "{ (Elem _ as []) <- element [\""+                             <> ppXName n <> text "\"]" $$+                     text "; return" <+> frretval $$+                     text "} `adjustErr` (\"in <" <> ppXName n+                                                  <> text ">, \"++)"+                    )            )     $$     mkInstanceAttrs Same n fs@@ -38,58 +42,88 @@     let vs = nameSupply sts         (frpat, frattr, topat, toattr) = attrpats fs     in+    text "instance HTypeable" <+> ppHName n <+> text "where" $$+    nest 4 ( text "toHType x = Defined \"" <> ppXName n <> text "\" [] []" )+    $$     text "instance XmlContent" <+> ppHName n <+> text "where" $$-    nest 4 ( text "fromElem (CElem (Elem \"" <> ppXName n <> text "\""-                  <+> frpat <+> text "c0):rest) =" $$-             nest 4 (mkFrElem n sts vs (-                         text "(Just" <+> parens (mkCpat n0 frattr vs)-                               <> text ", rest)")-                    ) $$-             text "fromElem (CMisc _:rest) = fromElem rest" $$-             text "fromElem (CString _ s:rest) | all isSpace s = fromElem rest" $$-             text "fromElem rest = (Nothing, rest)"-           $$-             text "toElem" <+> parens (mkCpat n0 topat vs) <+> text "=" $$+    nest 4 (+             text "toContents" <+> parens (mkCpat n0 topat vs) <+> text "=" $$              nest 4 (text "[CElem (Elem \"" <> ppXName n <> text "\""-                          <+> toattr <+> parens (mkToElem sts vs) <> text ")]")+                          <+> toattr <+> parens (mkToElem sts vs)+                          <> text ") ()]")+           $$+             text "parseContents = do" $$+             nest 4 (text "{ e@(Elem _"<+> frpat <+> text "_) <- element [\""+                             <> ppXName n <> text "\"]"+                     $$ text "; interior e $"+                           <+> (mkParseConstr frattr (n0,sts))+                     $$ text "} `adjustErr` (\"in <" <> ppXName n+                                                     <> text ">, \"++)")            )     $$     mkInstanceAttrs Extended n fs --- single constructor, auxiliary type-mkInstance (DataDef True n fs [(n0,sts)]) =+-- single constructor, auxiliary type (i.e. no corresponding element tag)+--   cannot be attributes here?+mkInstance (DataDef True n [] [(n0,sts)]) =     let vs = nameSupply sts-        (frpat, frattr, topat, toattr) = attrpats fs     in+    text "instance HTypeable" <+> ppHName n <+> text "where" $$+    nest 4 ( text "toHType x = Defined \"" <> ppXName n <> text "\" [] []" )+    $$     text "instance XmlContent" <+> ppHName n <+> text "where" $$-    nest 4 ( text "fromElem c0 =" $$-             mkFrAux True frattr [(n0,sts)]+    nest 4 ( text "toContents" <+> parens (mkCpat n0 empty vs)+                               <+> text "="+                               $$  nest 4 (parens (mkToElem sts vs))            $$-             text "toElem" <+> parens (mkCpat n0 topat vs) <+> text "=" $$-      --     nest 4 (text "[CElem (Elem \"" <> ppXName n <> text "\""-      --                  <+> toattr <+> parens (mkToElem sts vs) <> text ")]")-             nest 4 (parens (mkToElem sts vs))+             text "parseContents =" <+> mkParseConstr empty (n0,sts)            )++-- multiple constructors (real)+mkInstance (DataDef False n fs cs) =+    let vs = nameSupply cs+        (frpat, frattr, topat, toattr) = attrpats fs+        mixattrs = if null fs then False else True+    in+    text "instance HTypeable" <+> ppHName n <+> text "where" $$+    nest 4 ( text "toHType x = Defined \"" <> ppXName n <> text "\" [] []" )     $$+    text "instance XmlContent" <+> ppHName n <+> text "where" $$+    nest 4 ( vcat (map (mkToMult n topat toattr) cs)+           $$ text "parseContents = do "+           $$ nest 4 (text "{ e@(Elem _"<+> frpat <+> text "_) <- element [\""+                                                  <> ppXName n <> text "\"]"+                     $$ text "; interior e $ oneOf"+                     $$ nest 4 ( text "[" <+> mkParseConstr frattr (head cs)+                               $$ vcat (map (\c-> text "," <+> mkParseConstr frattr c)+                                            (tail cs))+                               $$ text "] `adjustErr` (\"in <" <> ppXName n+                                                             <> text ">, \"++)"+                               )+                     $$ text "}"+                     )+           )+    $$     mkInstanceAttrs Extended n fs --- multiple constructors-mkInstance (DataDef aux n fs cs) =+-- multiple constructors (auxiliary)+mkInstance (DataDef True n fs cs) =     let vs = nameSupply cs         (frpat, frattr, topat, toattr) = attrpats fs         mixattrs = if null fs then False else True     in+    text "instance HTypeable" <+> ppHName n <+> text "where" $$+    nest 4 ( text "toHType x = Defined \"" <> ppXName n <> text "\" [] []" )+    $$     text "instance XmlContent" <+> ppHName n <+> text "where" $$-    nest 4 ( ( if aux then text "fromElem c0 ="-               else text "fromElem (CElem (Elem \"" <> ppXName n <> text "\""-                         <+> frpat <+> text "c0):rest) =" ) $$-             mkFrAux aux frattr cs $$-             text "fromElem (CMisc _:rest) = fromElem rest" $$-             text "fromElem (CString _ s:rest) | all isSpace s = fromElem rest" $$-             text "fromElem rest = (Nothing, rest)"-           $$-             if aux then vcat (map (mkToAux mixattrs) cs)-             else vcat (map (mkToMult n topat toattr) cs)+    nest 4 ( vcat (map (mkToAux mixattrs) cs)+           $$ text "parseContents = oneOf"+           $$ nest 4 ( text "[" <+> mkParseConstr frattr (head cs)+                     $$ vcat (map (\c-> text "," <+> mkParseConstr frattr c)+                                  (tail cs))+                     $$ text "] `adjustErr` (\"in <" <> ppXName n+                                                     <> text ">, \"++)"+                     )            )     $$     mkInstanceAttrs Extended n fs@@ -175,6 +209,41 @@             (Defaultable _ _)  -> text "nyi_fromElem_Defaultable" <+> cvo           ) +-- +{-+mkParseContents :: Name -> [StructType] -> [Doc] -> Doc -> Doc+mkParseContents n sts vs inner =+    foldr (frElem n) inner (zip3 sts vs cvs)+  where+    cvs = let ns = nameSupply2 vs+          in zip ns (text "c0": init ns)+    frElem n (st,v,(cvi,cvo)) inner =+        parens (text "\\" <> parens (v<>comma<>cvi) <> text "->" $$+                nest 2 inner) $$+        parens (+          )+-}++mkParseConstr frattr (c,sts) =+        fsep (text "return" <+> parens (ppHName c <+> frattr)+             : map mkParseContents sts)++mkParseContents st =+  let ap = text "`apply`" in+          case st of+            (Maybe String)  -> ap <+> text "optional text"+            (Maybe s)       -> ap <+> text "optional parseContents"+            (List String)   -> ap <+> text "many text"+            (List s)        -> ap <+> text "many parseContents"+            (List1 s)       -> ap <+> text "parseContents"+            (Tuple ss)      -> ap <+> text "parseContents"+            (OneOf ss)      -> ap <+> text "parseContents"+            (String)        -> ap <+> text "(text `onFail` return \"\")"+            (Any)           -> ap <+> text "parseContents"+            (Defined m)     -> ap <+> text "parseContents"+            (Defaultable _ _)  -> ap <+> text "nyi_fromElem_Defaultable"++-- mkToElem :: [StructType] -> [Doc] -> Doc mkToElem []  [] = text "[]" mkToElem sts vs =@@ -183,15 +252,15 @@     toElem st v =       case st of         (Maybe String)  -> text "maybe [] toText" <+> v-        (Maybe s)       -> text "maybe [] toElem" <+> v+        (Maybe s)       -> text "maybe [] toContents" <+> v         (List String)   -> text "concatMap toText" <+> v-        (List s)        -> text "concatMap toElem" <+> v-        (List1 s)       -> text "toElem" <+> v-        (Tuple ss)      -> text "toElem" <+> v-        (OneOf ss)      -> text "toElem" <+> v+        (List s)        -> text "concatMap toContents" <+> v+        (List1 s)       -> text "toContents" <+> v+        (Tuple ss)      -> text "toContents" <+> v+        (OneOf ss)      -> text "toContents" <+> v         (String)        -> text "toText" <+> v-        (Any)           -> text "toElem" <+> v-        (Defined m)     -> text "toElem" <+> v+        (Any)           -> text "toContents" <+> v+        (Defined m)     -> text "toContents" <+> v         (Defaultable _ _)  -> text "nyi_toElem_Defaultable" <+> v  mkRpat :: [Doc] -> Doc@@ -309,14 +378,14 @@     let vs = nameSupply sts         attrs = if mixattrs then text "as" else empty     in-    text "toElem" <+> parens (mkCpat n attrs vs) <+> text "=" <+>+    text "toContents" <+> parens (mkCpat n attrs vs) <+> text "=" <+>     mkToElem sts vs  mkToMult :: Name -> Doc -> Doc -> (Name,[StructType]) -> Doc mkToMult tag attrpat attrexp (n,sts) =     let vs = nameSupply sts     in-    text "toElem" <+> parens (mkCpat n attrpat vs) <+> text "=" <+>-    text "[CElem (Elem \"" <> ppXName tag <> text "\""<+> attrexp <+>-    parens (mkToElem sts vs) <+> text ")]"+    text "toContents" <+> parens (mkCpat n attrpat vs) <+> text "="+    $$ nest 4 (text "[CElem (Elem \"" <> ppXName tag <> text "\""<+> attrexp+              <+> parens (mkToElem sts vs) <+> text ") ()]") 
src/Text/XML/HaXml/DtdToHaskell/TypeDef.hs view
@@ -154,28 +154,33 @@  ---- Some operations on Names ---- --- | Make a name valid in both XML and Haskell.+-- | Make a type name valid in both XML and Haskell. name :: String -> Name-name n     = Name n (mangle n)+name n     = Name { xName = n+                  , hName = mangle n }  -- | Append an underscore to the Haskell version of the name. name_ :: String -> Name-name_ n    = Name n (mangle n ++ "_")+name_ n    = Name { xName = n+                  , hName = mangle n ++ "_" }  -- | Prefix an attribute enumeration type name with its containing element --   name. name_a :: String -> String -> Name-name_a e n = Name n (mangle e ++ "_" ++ map decolonify n)+name_a e n = Name { xName = n+                  , hName = mangle e ++ "_" ++ map decolonify n }  -- | Prefix an attribute enumeration constructor with its element-tag name, --   and its enumeration type name. name_ac :: String -> String -> String -> Name-name_ac e t n = Name n (mangle e ++ "_" ++ map decolonify t-                                 ++ "_" ++ map decolonify n)+name_ac e t n = Name { xName = n+                     , hName = mangle e ++ "_" ++ map decolonify t+                                        ++ "_" ++ map decolonify n }  -- | Prefix a field name with its enclosing element name. name_f :: String -> String -> Name-name_f e n = Name n (manglef e ++ mangle n)+name_f e n = Name { xName = n+                  , hName = manglef e ++ mangle n }  ---- obsolete -- elementname_at :: String -> Name@@ -184,10 +189,47 @@ -- | Convert an XML name to a Haskell conid. mangle :: String -> String mangle (n:ns)-    | isLower n   = toUpper n: map decolonify ns+    | isLower n   = notPrelude (toUpper n: map decolonify ns)     | isDigit n   = 'I': n: map decolonify ns-    | otherwise   = n: map decolonify ns+    | otherwise   = notPrelude (n: map decolonify ns) +-- | Ensure a generated name does not conflict with a standard haskell one.+notPrelude :: String -> String+notPrelude "String"  = "AString"+notPrelude "Maybe"   = "AMaybe"+notPrelude "Either"  = "AEither"+notPrelude "Char"    = "AChar"+notPrelude "String"  = "AString"+notPrelude "Int"     = "AInt"+notPrelude "Integer" = "AInteger"+notPrelude "Float"   = "AFloat"+notPrelude "Double"  = "ADouble"+notPrelude "List1"   = "AList1"	-- part of HaXml+notPrelude "IO"      = "AIO"+notPrelude "IOError" = "AIOError"+notPrelude "FilePath"= "AFilePath"+notPrelude "Bool"    = "ABool"+notPrelude "Ordering"= "AOrdering"+notPrelude "Eq"      = "AEq"+notPrelude "Ord"     = "AOrd"+notPrelude "Enum"    = "AEnum"+notPrelude "Bounded" = "ABounded"+notPrelude "Functor" = "AFunctor"+notPrelude "Monad"   = "AMonad"+notPrelude "Rational"= "ARational"+notPrelude "Integral"= "AIntegral"+notPrelude "Num"     = "ANum"+notPrelude "Real"    = "AReal"+notPrelude "RealFrac"= "ARealFrac"+notPrelude "Floating"= "AFloating"+notPrelude "RealFloat" = "ARealFloat"+notPrelude "Fractional"= "AFractional"+notPrelude "Read"    = "ARead"+notPrelude "Show"    = "AShow"+notPrelude "ReadS"   = "AReadS"+notPrelude "ShowS"   = "AShowS"+notPrelude n         = n+ -- | Convert an XML name to a Haskell varid. manglef :: String -> String manglef (n:ns)@@ -199,6 +241,7 @@ decolonify :: Char -> Char decolonify ':' = '\''   -- TODO: turn namespaces into qualified identifiers decolonify '-' = '_'+decolonify '.' = '_' decolonify  c  = c  commaList = hcat . intersperse comma
src/Text/XML/HaXml/Escape.hs view
@@ -9,9 +9,13 @@    -} module Text.XML.HaXml.Escape(    xmlEscape,-      -- :: XmlEscaper -> Element -> Element+      -- :: XmlEscaper -> Element i -> Element i    xmlUnEscape,-      -- :: XmlEscaper -> Element -> Element+      -- :: XmlEscaper -> Element i -> Element i+   xmlEscapeContent,+      -- :: XmlEscaper -> [Content i] -> [Content i]+   xmlUnEscapeContent,+      -- :: XmlEscaper -> [Content i] -> [Content i]     XmlEscaper,       -- Something describing a particular set of escapes.@@ -93,11 +97,15 @@   -xmlEscape :: XmlEscaper -> Element -> Element+xmlEscape :: XmlEscaper -> Element i -> Element i xmlEscape xmlEscaper element =     compressElement (escapeElement xmlEscaper element) -escapeElement :: XmlEscaper -> Element -> Element+xmlEscapeContent :: XmlEscaper -> [Content i] -> [Content i]+xmlEscapeContent xmlEscaper cs = +   compressContent (escapeContent xmlEscaper cs)++escapeElement :: XmlEscaper -> Element i -> Element i escapeElement xmlEscaper (Elem name attributes content) =    Elem name (escapeAttributes xmlEscaper attributes)        (escapeContent xmlEscaper content)@@ -129,21 +137,21 @@          )       ) -escapeContent :: XmlEscaper -> [Content] -> [Content]+escapeContent :: XmlEscaper -> [Content i] -> [Content i] escapeContent xmlEscaper contents =    concat       (map           (\ content -> case content of-             (CString b str) ->+             (CString b str i) ->                 map                    (\ c -> if isEscape xmlEscaper c                       then-                         CRef (mkEscape xmlEscaper c)+                         CRef (mkEscape xmlEscaper c) i                       else-                         CString b [c]+                         CString b [c] i                       )                    str-             (CElem elem) -> [CElem (escapeElement xmlEscaper elem)]+             (CElem elem i) -> [CElem (escapeElement xmlEscaper elem) i]              _ -> [content]              )           contents@@ -162,11 +170,15 @@ -- Unescaping -- ------------------------------------------------------------------------ -xmlUnEscape :: XmlEscaper -> Element -> Element+xmlUnEscape :: XmlEscaper -> Element i -> Element i xmlUnEscape xmlEscaper element =    compressElement (unEscapeElement xmlEscaper element) -unEscapeElement :: XmlEscaper -> Element -> Element+xmlUnEscapeContent :: XmlEscaper -> [Content i] -> [Content i]+xmlUnEscapeContent xmlEscaper cs = +   compressContent (unEscapeContent xmlEscaper cs)++unEscapeElement :: XmlEscaper -> Element i -> Element i unEscapeElement xmlEscaper (Elem name attributes content) =    Elem name (unEscapeAttributes xmlEscaper attributes)       (unEscapeContent xmlEscaper content)@@ -190,14 +202,14 @@          attValList       ) -unEscapeContent :: XmlEscaper -> [Content] -> [Content]+unEscapeContent :: XmlEscaper -> [Content i] -> [Content i] unEscapeContent xmlEscaper content =    map       (\ content -> case content of-         CRef ref -> case unEscapeChar xmlEscaper ref of-            Just c -> CString True [c]+         CRef ref i -> case unEscapeChar xmlEscaper ref of+            Just c -> CString False [c] i             Nothing -> content-         CElem elem -> CElem (unEscapeElement xmlEscaper elem)+         CElem elem i -> CElem (unEscapeElement xmlEscaper elem) i          _ -> content          )       content@@ -213,7 +225,7 @@ -- adjacent identical character data. -- ------------------------------------------------------------------------ -compressElement :: Element -> Element+compressElement :: Element i -> Element i compressElement (Elem name attributes content) =    Elem name (compressAttributes attributes) (compressContent content) @@ -234,16 +246,16 @@             (Left s2 : es2) -> Left (s1 ++ s2) : es2             es2 -> ls : es2 -compressContent :: [Content] -> [Content]+compressContent :: [Content i] -> [Content i] compressContent [] = []-compressContent ((csb @ (CString b1 s1)) : cs) =+compressContent ((csb @ (CString b1 s1 i1)) : cs) =    case compressContent cs of-      (CString b2 s2) : cs2+      (CString b2 s2 i2) : cs2           | b1 == b2-          -> CString b1 (s1 ++ s2) : cs2+          -> CString b1 (s1 ++ s2) i1: cs2       cs2 -> csb : cs2-compressContent (CElem element : cs) = -   CElem (compressElement element) : compressContent cs+compressContent (CElem element i : cs) = +   CElem (compressElement element) i : compressContent cs compressContent (c : cs) = c : compressContent cs  @@ -258,8 +270,9 @@       let          i = ord ch       in-         i < 32 || i >= 127 ||+         i < 10 || (10<i && i<32) || i >= 127 ||             case ch of+               '\'' -> True                '\"' -> True                '&' -> True                '<' -> True
− src/Text/XML/HaXml/Haskell2Xml.hs
@@ -1,383 +0,0 @@--- | The class 'Haskell2Xml' is a replacement for Read and Show: it provides---   textual conversions (to and from an XML representation) for your---   Haskell data values.  Use the tool---   DrIFT to derive this class for your own datatypes, then---   include this module where you want to use the facilities.------   The methods 'toContents' and 'fromContents' convert a value to and from---   a generic internal representation of an XML document /without/ a DTD.---   The functions 'toXml' and 'fromXml' convert a value to and from a generic---   internal representation of an XML document /including/ a DTD.---   The functions 'readXml' and 'showXml' convert to and from Strings.---   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from---   the given filenames.---   The functions 'hGetXml' and 'hPutXml' do the conversion to and from---   the given file handles.---   (See the type signatures.)--module Text.XML.HaXml.Haskell2Xml-  ( -- * Re-export the entire set of XML type definitions-    module Text.XML.HaXml.Types-  -- * The class Haskell2Xml-  , Haskell2Xml(..)-  -- ** Conversion functions-  , toXml, toDTD, fromXml-  , readXml, showXml-  -- ** IO conversion functions-  , fReadXml, fWriteXml-  , hGetXml,  hPutXml-  -- * Auxiliary types-  , HType(..)-  , Constr(..)-  -- Convenience functions-  , mkElem , mkElemC-  , showConstr-  , isPrefixOf-  ) where--import IO--import Text.XML.HaXml.Types-import Text.XML.HaXml.Parse (xmlParse)-import Text.PrettyPrint.HughesPJ (render)-import qualified Text.XML.HaXml.Pretty as PP-import List(intersperse,isPrefixOf,isSuffixOf,partition)-import Char (ord)----- | A concrete representation of any Haskell type.-data HType =-      Maybe HType-    | List HType-    | Tuple [HType]-    | Prim String String	-- ^ separate Haskell name and Xml name-    | String-    | Defined String [HType] [Constr]-	-- ^ A user-defined type has a name, a sequence of type variables,-	--   and a set of constructors.-    deriving (Show)--instance Eq HType where-    (Maybe x)  == (Maybe y)  =  x==y-    (List x)   == (List y)   =  x==y-    (Tuple xs) == (Tuple ys) =  xs==ys-    (Prim x _) == (Prim y _) =  x==y-    String     == String     =  True-    (Defined n xs _) == (Defined m ys _)  =  n==m && xs==ys-    _          == _          =  False---- | A concrete representation of any user-defined Haskell constructor.---   The constructor has a name, and a sequence of component types.  The---   first sequence of types represents the minimum set of free type---   variables occurring in the (second) list of real component types.-data Constr = Constr String [HType] [HType]-    deriving (Eq,Show)---attval :: (Read a) => AttValue -> a-attval (AttValue v) = read (concatMap decode v)-    where-      decode (Left  v)               = v-      decode (Right (RefEntity ent)) = "&"++ent++";"-      decode (Right (RefChar cref))  = "&"++show cref++";"--mkAttr :: String -> String -> Attribute-mkAttr n v = (n, AttValue [Left v])--atoi :: String -> Int-atoi = foldl (\x y-> x*10 + ord y - ord '0') 0--atoI :: String -> Integer-atoI = foldl (\x y-> x*10 + toInteger (ord y) - toInteger (ord '0')) 0---- | A class to convert any Haskell value to and from an XML representation.-class Haskell2Xml a where-    -- | Determine the type of the Haskell value (to create a DTD).-    toHType      :: a -> HType-    -- | Convert the Haskell value to a generic XML value.-    toContents   :: a -> [Content]-    -- | Parse a Haskell value from a generic XML representation, returning-    --   the value and the remainder of the XML.-    fromContents :: [Content] -> (a,[Content])--    -- | This function is a dummy for most types: it is used /only/ in-    --   the Char instance for coercing lists of Char into String.-    xToChar      :: a -> Char-    xToChar       = error "Haskell2Xml.xToChar used in error"-    -- | This function is a dummy for most types: it is used /only/ in-    --   the Char instance for coercing lists of Char into String.-    xFromChar    :: Char -> a-    xFromChar     = error "Haskell2Xml.xFromChar used in error"--instance Haskell2Xml Bool where-    toHType   _    = Prim "Bool" "bool"-    toContents b   = [CElem (Elem "bool" [mkAttr "value" (show b)] [])]-    fromContents (CElem (Elem "bool" [("value",b)] []):cs) = (attval b, cs)-    fromContents (_:cs) = fromContents cs--instance Haskell2Xml Int where-    toHType   _    = Prim "Int" "int"-    toContents i   = [CElem (Elem "int" [mkAttr "value" (show i)] [])]-    fromContents (CElem (Elem "int" [("value",(AttValue [Left s]))] []):cs)-                   = (atoi s, cs)-    fromContents (_:cs) = fromContents cs--instance Haskell2Xml Integer where-    toHType   _    = Prim "Integer" "integer"-    toContents i   = [CElem (Elem "integer" [mkAttr "value" (show i)] [])]-    fromContents (CElem (Elem "integer" [("value",(AttValue [Left s]))] []):cs)-                   = (atoI s, cs)-    fromContents (_:cs) = fromContents cs--instance Haskell2Xml Float where-    toHType   _    = Prim "Float" "float"-    toContents i   = [CElem (Elem "float" [mkAttr "value" (show i)] [])]-    fromContents (CElem (Elem "float" [("value",(AttValue [Left s]))] []):cs)-                   = (read s, cs)-    fromContents (_:cs) = fromContents cs--instance Haskell2Xml Double where-    toHType   _    = Prim "Double" "double"-    toContents i   = [CElem (Elem "double" [mkAttr "value" (show i)] [])]-    fromContents (CElem (Elem "double" [("value",(AttValue [Left s]))] []):cs)-                   = (read s, cs)-    fromContents (_:cs) = fromContents cs--instance Haskell2Xml Char where-    -- NOT in a string-    toHType   _    = Prim "Char" "char"-    toContents c   = [CElem (Elem "char" [mkAttr "value" [c]] [])]-    fromContents (CElem (Elem "char" [("value",(AttValue [Left [c]]))] []):cs) = (c, cs)-    fromContents (_:cs) = fromContents cs--    -- Only defined for Char and no other types:-    xToChar   = id-    xFromChar = id--instance Haskell2Xml a => Haskell2Xml [a] where-    toHType xs     = case toHType x of-                       (Prim "Char" _) -> String-                       _ -> List (toHType x)-                   where   (x:_) = xs-    toContents xs  = case toHType x of-                       (Prim "Char" _) ->-                            [mkElem "string" [CString False (map xToChar xs)]]-                       _ -> [mkElem xs (concatMap toContents xs)]-                   where   (x:_) = xs-    fromContents (CString _ s:cs) =-                   (map xFromChar s,cs)-    fromContents (CElem (Elem _ [] [CString _ s]):cs) =-                   (map xFromChar s,cs) --fromContents cs -    fromContents (CElem (Elem _ [] xs):cs) =-                   (fst (scanElements xs), cs)-                   where-                 --scanElements :: Haskell2Xml a => [Content] -> ([a],[Content])-                   scanElements [] = ([],[])-                   scanElements els =-                     (\(x,els0)-> (\(xs,els1)-> (x:xs,els1))-                                  (scanElements els0))-                       (fromContents els)-                   --let (x,els0)  = fromContents els-                   --    (xs,els1) = scanElements els0-                   --in (x:xs, els1) --instance (Haskell2Xml a, Haskell2Xml b) => Haskell2Xml (a,b) where-    toHType p        = Tuple [toHType a, toHType b]   where   (a,b) = p-    toContents (a,b) = toContents a ++ toContents b-    fromContents cs  = --let  (x,cs1) = fromContents cs-                       --     (y,cs2) = fromContents cs1-                       --in ((x,y),cs2)-                       (\(x,cs1)-> (\(y,cs2)-> ((x,y),cs2)) (fromContents cs1))-                         (fromContents cs)--instance (Haskell2Xml a) => Haskell2Xml (Maybe a) where-    toHType m      = Maybe (toHType x)   where   (Just x) = m-    toContents m   = [mkElem m (maybe [] toContents m)]-    fromContents (CElem (Elem _ [] []):cs) =-                     (Nothing,cs)-    fromContents (CElem (Elem _ [] cs0):cs) =-                   --let (x,[]) = fromContents cs0 in (Just x,cs)-                     (\(x,[])-> (Just x, cs)) (fromContents cs0)--instance (Haskell2Xml a, Haskell2Xml b) => Haskell2Xml (Either a b) where-    toHType m  = Defined "Either" [hx, hy]-                         [Constr "Left" [hx] [hx] ,Constr "Right" [hy] [hy]]-               where   (Left x)  = m-                       (Right y) = m-                       hx = toHType x-                       hy = toHType y-    fromContents (CElem (Elem constr [] cs):etc)-        | "Left" `isPrefixOf` constr =-            (\(aa,_)-> (Left aa, etc)) (fromContents cs)-        | "Right" `isPrefixOf` constr =-            (\(ab,_)-> (Right ab, etc)) (fromContents cs)-    toContents v@(Left aa) =-        [mkElemC (showConstr 0 (toHType v)) (toContents aa)]-    toContents v@(Right ab) =-        [mkElemC (showConstr 1 (toHType v)) (toContents ab)]---instance Haskell2Xml () where-    toHType _      = Prim "unit" "unit"-    toContents ()  = [CElem (Elem "unit" [] [])]-    fromContents (CElem (Elem "unit" [] []):cs) = ((),cs)  ---mkElem x cs  = CElem (Elem (flat (toHType x) "") [] cs)-mkElemC x cs = CElem (Elem x [] cs)----- | 'toDTD' converts a concrete representation of the Haskell type of---   a value (obtained by the method 'toHType') into a real DocTypeDecl.---   It ensures that PERefs are defined before they are used, and that no---   element or attribute-list is declared more than once.-toDTD :: HType -> DocTypeDecl-toDTD ht =-  DTD (toplevel ht) Nothing (macrosFirst (reverse (h2d True [] [] [ht])))-  where-    macrosFirst :: [MarkupDecl] -> [MarkupDecl]-    macrosFirst decls = concat [p, p'] where (p, p') = partition f decls-                                             f (Entity _) = True-                                             f _ = False-    toplevel ht@(Defined _ _ _) = flat ht "-XML"-    toplevel ht@_               = flat ht ""-    c0 = False-    h2d :: Bool -> [HType] -> [Constr] -> [HType] -> [MarkupDecl]-    -- toplevel?   history    history   remainingwork     result-    h2d c history chist []       = []-    h2d c history chist (ht:hts) =-      if ht `elem` history then h2d c0 history chist hts-      else-        case ht of-          Maybe ht0  -> declelem ht: h2d c0 (ht:history) chist (ht0:hts)-          List ht0   -> declelem ht: h2d c0 (ht:history) chist (ht0:hts)-          Tuple hts0 -> (c ? (declelem ht:))-                                     (h2d c0 history chist (hts0++hts))-          Prim s t   -> declprim ht ++ h2d c0 (ht:history) chist hts-          String     -> declstring:    h2d c0 (ht:history) chist hts-          Defined s _ cs ->-               let hts0 = concatMap grab cs in-               (c ? (decltopelem ht:)) (declmacro ht chist)-               ++ h2d c0 (ht:history) (cs++chist) (hts0++hts)-    declelem ht =-      Element (ElementDecl (flat ht "") (ContentSpec (outerHtExpr ht)))-    decltopelem ht =	-- hack to avoid peref at toplevel-      Element (ElementDecl (flat ht "-XML") (ContentSpec (innerHtExpr ht None)))-    declmacro ht@(Defined _ _ cs) chist =-      Entity (EntityPEDecl (PEDecl (flat ht "") (PEDefEntityValue ev))):-      concatMap (declConstr chist) cs-      where ev = EntityValue [EVString (render (PP.cp (outerHtExpr ht)))]-    declConstr chist c@(Constr s fv hts)-      | c `notElem` chist =-          [Element (ElementDecl (cflat c "") (ContentSpec (constrHtExpr c)))]-      | otherwise = []-    declprim (Prim s t) =-      [ Element (ElementDecl t EMPTY)-      , AttList (AttListDecl t [AttDef "value" StringType REQUIRED])]-    declstring =-      Element (ElementDecl "string" (Mixed PCDATA))-    grab (Constr _ _ hts) = hts--(?) :: Bool -> (a->a) -> (a->a)-b ? f | b     = f-      | not b = id---flat :: HType -> ShowS-flat (Maybe ht)       = showString "maybe-" . flat ht-flat (List ht)        = showString "list-" . flat ht-flat (Tuple hts)      = showString "tuple" . shows (length hts) .-                        showChar '-' .-                        foldr1 (.) (intersperse (showChar '-') (map flat hts))-flat (Prim s t)       = showString t-flat String           = showString "string"-flat (Defined s fv _) = showString s . ((length fv > 0) ? (showChar '-')) .-                        foldr (.) id (intersperse (showChar '-') (map flat fv))-cflat :: Constr -> ShowS-cflat (Constr s fv _) = showString s . ((length fv > 0) ? (showChar '-')) .-                        foldr (.) id (intersperse (showChar '-') (map flat fv))--outerHtExpr :: HType -> CP-outerHtExpr (Maybe ht)      = innerHtExpr ht Query-outerHtExpr (List ht)       = innerHtExpr ht Star-outerHtExpr (Defined s fv cs) =-    Choice (map (\c->TagName (cflat c "") None) cs) None-outerHtExpr ht              = innerHtExpr ht None--innerHtExpr :: HType -> Modifier -> CP-innerHtExpr (Prim s t)  m = TagName t m-innerHtExpr (Tuple hts) m = Seq (map (\c-> innerHtExpr c None) hts) m-innerHtExpr ht@(Defined s hts cs) m = -- CPPE (flat ht "") (outerHtExpr ht)-                                      TagName ('%': flat ht ";") m-							--  ***HACK!!!***-innerHtExpr ht m = TagName (flat ht "") m--constrHtExpr (Constr s fv [])  = TagName "EMPTY" None	--  ***HACK!!!***-constrHtExpr (Constr s fv hts) = innerHtExpr (Tuple hts) None---------------------------------- Exported user functions.-------------------------------- | Convert any Haskell value to an XML document, including both DTD and---   content.-toXml :: Haskell2Xml a => a -> Document-toXml value =-  let ht = toHType value in-  Document (Prolog Nothing [] (Just (toDTD ht)) [])-           emptyST-           (case (ht, toContents value) of-             (Tuple _, cs) -> (Elem (flat ht "") [] cs)-             (Defined _ _ _, cs) -> (Elem (flat ht "-XML") [] cs)-             (_,[CElem e]) -> e )-           []---- | Read a Haskell value from an XML document, ignoring the DTD and---   using the Haskell result type to determine how to parse it.-fromXml :: Haskell2Xml a => Document -> a-fromXml (Document _ _ e@(Elem n _ cs) _)-  | "tuple" `isPrefixOf` n = fst (fromContents cs)-  | "-XML"  `isSuffixOf` n = fst (fromContents cs)-  | otherwise = fst (fromContents [CElem e])---- | Convert an XML document encoded as a String, into a Haskell value.-readXml :: Haskell2Xml a => String -> Maybe a-readXml = Just . fromXml . xmlParse "string input"--- | Convert a Haskell value to an XML document, encoded as a String.-showXml :: Haskell2Xml a => a -> String-showXml = render . PP.document . toXml----- | Read a Haskell value from an XML document stored in a file.-fReadXml  :: Haskell2Xml a => FilePath -> IO a-fReadXml fp = do-    f <- openFile fp ReadMode -    content <- hGetContents f-    --hClose f-    return (fromXml (xmlParse fp content))---- | Write a Haskell value to the given file as an XML document.-fWriteXml :: Haskell2Xml a => FilePath -> a -> IO ()-fWriteXml fp v = do-    f <- openFile fp WriteMode -    (hPutStrLn f . render . PP.document . toXml) v-    hClose f---- | Read a Haskell value from an XML document transmitted through the---   given 'Handle'.-hGetXml  :: Haskell2Xml a => Handle -> IO a-hGetXml f = do-    content <- hGetContents f-    return (fromXml (xmlParse "file handle" content))---- | Write a Haskell value to the given 'Handle' as an XML document.-hPutXml :: Haskell2Xml a => Handle -> a -> IO ()-hPutXml f v = (hPutStrLn f . render . PP.document . toXml) v---showConstr n (Defined _ _ cs) = cflat (cs!!n) ""-showConstr n _ = error "no constructors for builtin types"---- END
src/Text/XML/HaXml/Html/Generate.hs view
@@ -39,7 +39,7 @@  html, hhead, htitle, hbody, h1, h2, h3, h4, hpara, hpre, hcentre,     hem, htt, hbold, htable, hrow, hcol, hdiv, hspan, margin-       :: [CFilter] -> CFilter+       :: [CFilter i] -> CFilter i html    = mkElem "html" hhead   = mkElem "head" htitle  = mkElem "title"@@ -64,28 +64,28 @@ margin = mkElemAttr "div" [("margin-left",("2em"!)),                            ("margin-top", ("1em"!))] -anchor      :: [(String, CFilter)] -> [CFilter] -> CFilter+anchor      :: [(String, CFilter i)] -> [CFilter i] -> CFilter  i anchor       = mkElemAttr "a" -makehref, anchorname :: CFilter -> [CFilter] -> CFilter+makehref, anchorname :: CFilter i -> [CFilter i] -> CFilter i makehref r   = anchor [ ("href",r) ] anchorname n = anchor [ ("name",n) ]  -hbr, hhr :: CFilter+hbr, hhr :: CFilter i hbr       = mkElem "br" [] hhr       = mkElem "hr" []  -showattr, (!), (?) :: String -> CFilter+showattr, (!), (?) :: String -> CFilter i showattr n = find n literal (!) = literal (?) = showattr -parens :: CFilter -> CFilter+parens :: CFilter i -> CFilter i parens f = cat [ literal "(", f, literal ")" ] -bullet :: [CFilter] -> CFilter+bullet :: [CFilter i] -> CFilter i bullet = cat . (literal "M-^U":)  @@ -105,12 +105,12 @@ --   attr (n,v) = " "++n++"='"++v++"'"  -htmlprint :: [Content] -> Pretty.Doc+htmlprint :: [Content i] -> Pretty.Doc htmlprint = Pretty.cat . map cprint . foldrefs    where   foldrefs [] = []-  foldrefs (CString ws s1:CRef r:CString _ s2:cs) =-              CString ws (s1++"&"++ref r++";"++s2): foldrefs cs+  foldrefs (CString ws s1 i:CRef r _:CString _ s2 _:cs) =+              CString ws (s1++"&"++ref r++";"++s2) i: foldrefs cs   foldrefs (c:cs) = c : foldrefs cs  --ref (RefEntity (EntityRef n)) = n	-- Actually, should look-up symtable.@@ -118,11 +118,11 @@   ref (RefEntity n) = n	-- Actually, should look-up symtable.   ref (RefChar s) = show s -  cprint (CElem e)      = elem e-  cprint (CString ws s) = Pretty.cat (map Pretty.text (fmt 60+  cprint (CElem e _)      = elem e+  cprint (CString ws s _) = Pretty.cat (map Pretty.text (fmt 60                                              ((if ws then id else deSpace) s)))-  cprint (CRef r)       = Pretty.text ("&"++ref r++";")-  cprint (CMisc m)      = Pretty.empty+  cprint (CRef r _)       = Pretty.text ("&"++ref r++";")+  cprint (CMisc m _)      = Pretty.empty     elem (Elem n as []) = Pretty.text "<"   Pretty.<>                         Pretty.text n     Pretty.<>@@ -148,11 +148,11 @@                                     ]    attrs = Pretty.cat . map attr-  attr (n,AttValue [Left v]) =+  attr (n,v@(AttValue _)) =                Pretty.text " "  Pretty.<>                Pretty.text n    Pretty.<>                Pretty.text "='" Pretty.<>-               Pretty.text v    Pretty.<>+               Pretty.text (show v) Pretty.<>                Pretty.text "'"    fmt n [] = []
src/Text/XML/HaXml/Html/Parse.hs view
@@ -20,7 +20,8 @@  import Text.XML.HaXml.Types import Text.XML.HaXml.Lex-import Text.ParserCombinators.HuttonMeijerWallace+import Text.XML.HaXml.Posn+import Text.ParserCombinators.Poly.NoLeak.Plain  --  #define DEBUG  @@ -43,33 +44,33 @@  -- | The first argument is the name of the file, the second is the string --   contents of the file.  The result is the generic representation of---   an XML document.-htmlParse :: String -> String -> Document-htmlParse name = simplify . sanitycheck . Prelude.either error id-                 . papply' document () . xmlLex name--sanitycheck :: Show p => [(a,s,[Either String (p,t)])] -> a-sanitycheck [] = error "***Error at line 0: document not HTML?"-sanitycheck ((x,_,[]):_) = x-sanitycheck ((x,_,s@(Right (n,_):_)):xs) =-  error ("***Error at "++show n++": data beyond end of parsed document")+--   an XML document.  Any errors cause program failure with message to stderr.+htmlParse :: String -> String -> Document Posn+htmlParse name = Prelude.either error id . htmlParse' name +-- | The first argument is the name of the file, the second is the string+--   contents of the file.  The result is the generic representation of+--   an XML document.  Any parsing errors are returned in the @Either@ type.+htmlParse' :: String -> String -> Either String (Document Posn)+htmlParse' name = Prelude.either Left (Right . simplify) . fst+                  . runParser document . xmlLex name  ---- Document simplification ---- -simplify :: Document -> Document+simplify :: Document i -> Document i simplify (Document p st (Elem n avs cs) ms) =     Document p st (Elem n avs (deepfilter simp cs)) ms   where-    simp (CElem (Elem "null" [] [])) = False-    simp (CElem (Elem  n     _  [])) | n `elem` ["font","p","i","b","em"-                                                ,"tt","big","small"] = False-    simp (CString False s) | all isSpace s = False+    simp (CElem (Elem "null" [] []) _) = False+    simp (CElem (Elem  n     _  []) _) | n `elem` ["font","p","i","b","em"+                                                  ,"tt","big","small"] = False+ -- simp (CString False s _) | all isSpace s = False     simp _ = True     deepfilter p =         filter p . map (\c-> case c of-                          (CElem (Elem n avs cs)) -> CElem (Elem n avs (deepfilter p cs))-                          _ -> c)+                          CElem (Elem n avs cs) i+                                  -> CElem (Elem n avs (deepfilter p cs)) i+                          _       -> c)  -- opening any of these, they close again immediately selfclosingtags = ["img","hr","br","meta","col","link","base"@@ -130,72 +131,100 @@  ---- Auxiliary Parsing Functions ---- -type HParser a = Parser () (Posn,TokenT) String a+type HParser a = Parser (Posn,TokenT) a +tok :: TokenT -> HParser TokenT+tok t = do (p,t') <- next+           case t' of TokError s    -> report failBad (show t) p t'+                      _ | t'==t     -> return t+                        | otherwise -> report fail (show t) p t'+ name :: HParser Name-name = do {(p,TokName s) <- item; return s}+--name = do {(p,TokName s) <- next; return s}+name = do (p,tok) <- next+          case tok of +            TokName s  -> return s +            TokError s -> report failBad "a name" p tok+            _          -> report fail "a name" p tok  string, freetext :: HParser String-string   = do {(p,TokName s) <- item; return s}-freetext = do {(p,TokFreeText s) <- item; return s}+string   = do (p,t) <- next+              case t of TokName s -> return s+                        _         -> report fail "text" p t+freetext = do (p,t) <- next+              case t of TokFreeText s -> return s+                        _             -> report fail "text" p t  maybe :: HParser a -> HParser (Maybe a) maybe p =-    ( p >>= return . Just) ++++    ( p >>= return . Just) `onFail`     ( return Nothing)  either :: HParser a -> HParser b -> HParser (Either a b) either p q =-    ( p >>= return . Left) ++++    ( p >>= return . Left) `onFail`     ( q >>= return . Right)  word :: String -> HParser ()-word s = P (\st inp-> case inp of {-               (Left err: _) -> Left err;-               (Right (p,TokName n):ts) -> if s==n then Right [((),st,ts)]-                                           else Right [];-               (Right (p,TokFreeText n):ts) -> if s==n then Right [((),st,ts)]-                                               else Right [];-               ts -> Right [] } )+word s = do { x <- next+            ; case x of+                (p,TokName n)     | s==n -> return ()+                (p,TokFreeText n) | s==n -> return ()+                (p,t@(TokError _)) -> report failBad (show s) p t+                (p,t) -> report fail (show s) p t+            }  posn :: HParser Posn-posn = P (\st inp-> case inp of {-                     (Left err: _)   -> Left err;-                     (Right (p,_):_) -> Right [(p,st,inp)];-                     [] -> Right [(Pn "unknown" 0 0 Nothing,st,inp)]; } )+posn = do { x@(p,_) <- next+          ; reparse [x]+          ; return p+          } `onFail` return noPos  nmtoken :: HParser NmToken-nmtoken = (string +++ freetext)+nmtoken = (string `onFail` freetext) +failP, failBadP :: String -> HParser a+failP msg    = do { p <- posn; fail (msg++"\n    at "++show p) }+failBadP msg = do { p <- posn; failBad (msg++"\n    at "++show p) } +report :: (String->HParser a) -> String -> Posn -> TokenT -> HParser a+report fail exp p t = fail ("Expected "++show exp++" but found "++show t+                           ++"\n  at "++show p)++adjustErrP :: HParser a -> (String->String) -> HParser a+p `adjustErrP` f = p `onFail` do pn <- posn+                                 (p `adjustErr` f) `adjustErr` (++show pn)+ ---- XML Parsing Functions ---- -document :: HParser Document+document :: HParser (Document Posn) document = do-    p     <- prolog `elserror` "unrecognisable XML prolog"+    p     <- prolog `adjustErr` ("unrecognisable XML prolog\n"++)     es    <- many1 (element "HTML document")     ms    <- many misc     return (Document p emptyST (case map snd es of                                   [e] -> e-                                  es  -> Elem "html" [] (map CElem es))+                                  es  -> Elem "html" [] (map mkCElem es))                                ms)+  where mkCElem e = CElem e noPos  comment :: HParser Comment comment = do-    bracket (tok TokCommentOpen) freetext (tok TokCommentClose)+    bracket (tok TokCommentOpen) (tok TokCommentClose) freetext  processinginstruction :: HParser ProcessingInstruction processinginstruction = do     tok TokPIOpen-    n <- string  `elserror` "processing instruction has no target"-    f <- freetext-    (tok TokPIClose +++ tok TokAnyClose) `elserror` "missing ?> or >"-    return (n, f)+    commit $ do+      n <- string  `onFail` failP "processing instruction has no target"+      f <- freetext+      (tok TokPIClose `onFail` tok TokAnyClose) `onFail` failP "missing ?> or >"+      return (n, f)  cdsect :: HParser CDSect cdsect = do     tok TokSectionOpen-    bracket (tok (TokSection CDATAx)) chardata (tok TokSectionClose)+    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata  prolog :: HParser Prolog prolog = do@@ -208,30 +237,29 @@ xmldecl :: HParser XMLDecl xmldecl = do     tok TokPIOpen-    (word "xml" +++ word "XML")+    (word "xml" `onFail` word "XML")     p <- posn     s <- freetext-    tok TokPIClose `elserror` "missing ?> in <?xml ...?>"-    (raise . papply' aux () . xmlReLex p) s+    tok TokPIClose `onFail` failBadP "missing ?> in <?xml ...?>"+    (Prelude.either failP return . fst . runParser aux . xmlReLex p) s   where     aux = do-      v <- versioninfo  `elserror` "missing XML version info"+      v <- versioninfo  `onFail` failP "missing XML version info"       e <- maybe encodingdecl       s <- maybe sddecl       return (XMLDecl v e s)-    raise (Left err) = mzero `elserror` err-    raise (Right ok) = (return . fst3 . head) ok  versioninfo :: HParser VersionInfo versioninfo = do-    (word "version" +++ word "VERSION")+    (word "version" `onFail` word "VERSION")     tok TokEqual-    bracket (tok TokQuote) freetext (tok TokQuote)+    bracket (tok TokQuote) (tok TokQuote) freetext  misc :: HParser Misc misc = -    ( comment >>= return . Comment) +++-    ( processinginstruction >>= return . PI)+    oneOf' [ ("<!--comment-->", comment >>= return . Comment)+           , ("<?PI?>",         processinginstruction >>= return . PI)+           ]   -- Question: for HTML, should we disallow in-line DTDs, allowing only externals?@@ -241,22 +269,21 @@ doctypedecl = do     tok TokSpecialOpen     tok (TokSpecial DOCTYPEx)-    n <- name-    eid <- maybe externalid---  es <- maybe (bracket (tok TokSqOpen)---                       (many markupdecl)---                       (tok TokSqClose))-    tok TokAnyClose  `elserror` "missing > in DOCTYPE decl"---  return (DTD n eid (case es of { Nothing -> []; Just e -> e }))-    return (DTD n eid [])+    commit $ do+      n <- name+      eid <- maybe externalid+--    es <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)) (many markupdecl)+      tok TokAnyClose  `onFail` failP "missing > in DOCTYPE decl"+--    return (DTD n eid (case es of { Nothing -> []; Just e -> e }))+      return (DTD n eid [])  --markupdecl :: HParser MarkupDecl --markupdecl =---    ( elementdecl >>= return . Element) +++---    ( attlistdecl >>= return . AttList) +++---    ( entitydecl >>= return . Entity) +++---    ( notationdecl >>= return . Notation) +++---    ( misc >>= return . MarkupMisc) ++++--    ( elementdecl >>= return . Element) `onFail`+--    ( attlistdecl >>= return . AttList) `onFail`+--    ( entitydecl >>= return . Entity) `onFail`+--    ( notationdecl >>= return . Notation) `onFail`+--    ( misc >>= return . MarkupMisc) `onFail` --    PEREF(MarkupPE,markupdecl) -- --extsubset :: HParser ExtSubset@@ -267,19 +294,19 @@ -- --extsubsetdecl :: HParser ExtSubsetDecl --extsubsetdecl =---    ( markupdecl >>= return . ExtMarkupDecl) +++---    ( conditionalsect >>= return . ExtConditionalSect) ++++--    ( markupdecl >>= return . ExtMarkupDecl) `onFail`+--    ( conditionalsect >>= return . ExtConditionalSect) `onFail` --    PEREF(ExtPEReference,extsubsetdecl)  sddecl :: HParser SDDecl sddecl = do-    (word "standalone" +++ word "STANDALONE")-    tok TokEqual `elserror` "missing = in 'standalone' decl"-    bracket (tok TokQuote)-            ( (word "yes" >> return True) +++-              (word "no" >> return False) `elserror`-              "'standalone' decl requires 'yes' or 'no' value" )-            (tok TokQuote)+    (word "standalone" `onFail` word "STANDALONE")+    commit $ do+      tok TokEqual `onFail` failP "missing = in 'standalone' decl"+      bracket (tok TokQuote) (tok TokQuote)+              ( (word "yes" >> return True) `onFail`+                (word "no" >> return False) `onFail`+                failP "'standalone' decl requires 'yes' or 'no' value" )   @@ -290,7 +317,7 @@ -- earliest opportunity. type Stack = [(Name,[Attribute])] -element :: Name -> HParser (Stack,Element)+element :: Name -> HParser (Stack,Element Posn) element ctx =   do     tok TokAnyOpen@@ -305,29 +332,32 @@          -- complete the parse straightaway.          ( do tok TokEndClose	-- self-closing <tag />                debug (e++"[+]")-              return ([], Elem e avs [])) ++++              return ([], Elem e avs [])) `onFail`      --  ( do tok TokAnyClose	-- sequence <tag></tag>	(**not HTML?**)      --       debug (e++"[+")-     --       n <- bracket (tok TokEndOpen) name (tok TokAnyClose)+     --       n <- bracket (tok TokEndOpen) (tok TokAnyClose) name      --       debug "]"      --       if e == (map toLower n :: Name)       --         then return ([], Elem e avs [])      -     --         else return (error "no nesting in empty tag")) ++++     --         else return (error "no nesting in empty tag")) `onFail`          ( do tok TokAnyClose	-- <tag> with no close (e.g. <IMG>)               debug (e++"[+]")               return ([], Elem e avs []))       else         (( do tok TokEndClose               debug (e++"[]")-              return ([], Elem e avs [])) +++-         ( do tok TokAnyClose `elserror` "missing > or /> in element tag"+              return ([], Elem e avs [])) `onFail`+         ( do tok TokAnyClose `onFail` failP "missing > or /> in element tag"               debug (e++"[")-              zz <- many (content e)-           -- (if null zz then return (error ("empty content in context: "++e)) else return ())+           -- zz <- many (content e)+           -- n <- bracket (tok TokEndOpen) (tok TokAnyClose) name+              zz <- manyFinally (content e)+                                (tok TokEndOpen)+              n <- name+              commit (tok TokAnyClose)+              debug "]"               let (ss,cs) = unzip zz               let s       = if null ss then [] else last ss-              n <- bracket (tok TokEndOpen) name (tok TokAnyClose)-              debug "]"               ( if e == (map toLower n :: Name) then                   do unparse (reformatTags (closeInner e s))                      debug "^"@@ -336,7 +366,7 @@                   do unparse [TokEndOpen, TokName n, TokAnyClose]                      debug "-"                      return (((e,avs):s), Elem e avs cs))-         ) `elserror` ("failed to repair non-matching tags in context: "++ctx)))+         ) `onFail` failP ("failed to repair non-matching tags in context: "++ctx)))  closeInner :: Name -> [(Name,[Attribute])] -> [(Name,[Attribute])] closeInner c ts =@@ -345,26 +375,28 @@       Nothing      -> ts  unparse ts = do p <- posn-                reparse (map Right (zip (repeat p) ts))+                reparse (zip (repeat p) ts)  reformatAttrs avs = concatMap f0 avs-    where f0 (a, AttValue [Left s]) = [TokName a, TokEqual, TokQuote,-                                       TokFreeText s, TokQuote]+    where f0 (a, v@(AttValue _)) = [TokName a, TokEqual, TokQuote,+                                       TokFreeText (show v), TokQuote] reformatTags ts = concatMap f0 ts     where f0 (t,avs) = [TokAnyOpen, TokName t]++reformatAttrs avs++[TokAnyClose] -content :: Name -> HParser (Stack,Content)-content ctx =-    ( element ctx >>= \(s,e)-> return (s, CElem e)) +++-    ( chardata >>= \s-> return ([], CString False s)) +++-    ( reference >>= \r-> return ([], CRef r)) +++-    ( cdsect >>= \c-> return ([], CString True c)) +++-    ( misc >>= \m->  return ([], CMisc m))+content :: Name -> HParser (Stack,Content Posn)+content ctx = do { p <- posn ; content' p ctx }+  where content' p ctx = oneOf'+          [ ( "element", element ctx >>= \(s,e)-> return (s, CElem e p))+          , ( "chardata", chardata >>= \s-> return ([], CString False s p))+          , ( "reference", reference >>= \r-> return ([], CRef r p))+          , ( "cdsect", cdsect >>= \c-> return ([], CString True c p))+          , ( "misc", misc >>= \m->  return ([], CMisc m p))+          ] `adjustErrP` ("when looking for a content item,\n"++)  ---- elemtag :: HParser ElemTag elemtag = do-    n <- name `elserror` "malformed element tag"+    n <- name `adjustErrBad` ("malformed element tag\n"++)     as <- many attribute     return (ElemTag (map toLower n) as) @@ -372,7 +404,7 @@ attribute = do     n <- name     v <- (do tok TokEqual-             attvalue) ++++             attvalue) `onFail`          (return (AttValue [Left "TRUE"]))     return (map toLower n,v) @@ -380,49 +412,47 @@ --elementdecl = do --    tok TokSpecialOpen --    tok (TokSpecial ELEMENTx)---    n <- name `elserror` "missing identifier in ELEMENT decl"---    c <- contentspec `elserror` "missing content spec in ELEMENT decl"---    tok TokAnyClose `elserror` "expected > terminating ELEMENT decl"+--    n <- name `onFail` failP "missing identifier in ELEMENT decl"+--    c <- contentspec `onFail` failP "missing content spec in ELEMENT decl"+--    tok TokAnyClose `onFail` failP "expected > terminating ELEMENT decl" --    return (ElementDecl n c) -- --contentspec :: HParser ContentSpec --contentspec =---    ( word "EMPTY" >> return EMPTY) +++---    ( word "ANY" >> return ANY) +++---    ( mixed >>= return . Mixed) +++---    ( cp >>= return . ContentSpec) ++++--    ( word "EMPTY" >> return EMPTY) `onFail`+--    ( word "ANY" >> return ANY) `onFail`+--    ( mixed >>= return . Mixed) `onFail`+--    ( cp >>= return . ContentSpec) `onFail` --    PEREF(ContentPE,contentspec) -- --choice :: HParser [CP] --choice = do---    bracket (tok TokBraOpen)+--    bracket (tok TokBraOpen) (tok TokBraClose) --            (cp `sepby1` (tok TokPipe))---            (tok TokBraClose) -- --sequence :: HParser [CP] --sequence = do---    bracket (tok TokBraOpen)+--    bracket (tok TokBraOpen) (tok TokBraClose) --            (cp `sepby1` (tok TokComma))---            (tok TokBraClose) -- --cp :: HParser CP --cp = --    ( do n <- name --         m <- modifier---         return (TagName n m)) ++++--         return (TagName n m)) `onFail` --    ( do ss <- sequence --         m <- modifier---         return (Seq ss m)) ++++--         return (Seq ss m)) `onFail` --    ( do cs <- choice --         m <- modifier---         return (Choice cs m)) ++++--         return (Choice cs m)) `onFail` --    PEREF(CPPE,cp) -- --modifier :: HParser Modifier --modifier =---    ( tok TokStar >> return Star) +++---    ( tok TokQuery >> return Query) +++---    ( tok TokPlus >> return Plus) ++++--    ( tok TokStar >> return Star) `onFail`+--    ( tok TokQuery >> return Query) `onFail`+--    ( tok TokPlus >> return Plus) `onFail` --    ( return None) -- --mixed :: HParser Mixed@@ -432,7 +462,7 @@ --    word "PCDATA" --    cont --  where---    cont = ( tok TokBraClose >> return PCDATA) ++++--    cont = ( tok TokBraClose >> return PCDATA) `onFail` --           ( do cs <- many ( do tok TokPipe --                                n <- name --                                return n)@@ -444,56 +474,54 @@ --attlistdecl = do --    tok TokSpecialOpen --    tok (TokSpecial ATTLISTx)---    n <- name `elserror` "missing identifier in ATTLIST"+--    n <- name `onFail` failP "missing identifier in ATTLIST" --    ds <- many attdef---    tok TokAnyClose `elserror` "missing > terminating ATTLIST"+--    tok TokAnyClose `onFail` failP "missing > terminating ATTLIST" --    return (AttListDecl n ds) -- --attdef :: HParser AttDef --attdef = do --    n <- name---    t <- atttype `elserror` "missing attribute type in attlist defn"+--    t <- atttype `onFail` failP "missing attribute type in attlist defn" --    d <- defaultdecl --    return (AttDef n t d) -- --atttype :: HParser AttType --atttype =---    ( word "CDATA" >> return StringType) +++---    ( tokenizedtype >>= return . TokenizedType) ++++--    ( word "CDATA" >> return StringType) `onFail`+--    ( tokenizedtype >>= return . TokenizedType) `onFail` --    ( enumeratedtype >>= return . EnumeratedType) -- --tokenizedtype :: HParser TokenizedType --tokenizedtype =---    ( word "ID" >> return ID) +++---    ( word "IDREF" >> return IDREF) +++---    ( word "IDREFS" >> return IDREFS) +++---    ( word "ENTITY" >> return ENTITY) +++---    ( word "ENTITIES" >> return ENTITIES) +++---    ( word "NMTOKEN" >> return NMTOKEN) ++++--    ( word "ID" >> return ID) `onFail`+--    ( word "IDREF" >> return IDREF) `onFail`+--    ( word "IDREFS" >> return IDREFS) `onFail`+--    ( word "ENTITY" >> return ENTITY) `onFail`+--    ( word "ENTITIES" >> return ENTITIES) `onFail`+--    ( word "NMTOKEN" >> return NMTOKEN) `onFail` --    ( word "NMTOKENS" >> return NMTOKENS) -- --enumeratedtype :: HParser EnumeratedType --enumeratedtype =---    ( notationtype >>= return . NotationType) ++++--    ( notationtype >>= return . NotationType) `onFail` --    ( enumeration >>= return . Enumeration) -- --notationtype :: HParser NotationType --notationtype = do --    word "NOTATION"---    bracket (tok TokBraOpen)+--    bracket (tok TokBraOpen) (tok TokBraClose) --            (name `sepby1` (tok TokPipe))---            (tok TokBraClose) -- --enumeration :: HParser Enumeration --enumeration =---    bracket (tok TokBraOpen)+--    bracket (tok TokBraOpen) (tok TokBraClose) --            (nmtoken `sepby1` (tok TokPipe))---            (tok TokBraClose) -- --defaultdecl :: HParser DefaultDecl --defaultdecl =---    ( tok TokHash >> word "REQUIRED" >> return REQUIRED) +++---    ( tok TokHash >> word "IMPLIED" >> return IMPLIED) ++++--    ( tok TokHash >> word "REQUIRED" >> return REQUIRED) `onFail`+--    ( tok TokHash >> word "IMPLIED" >> return IMPLIED) `onFail` --    ( do f <- maybe (tok TokHash >> word "FIXED" >> return FIXED) --         a <- attvalue --         return (DefaultTo a f))@@ -502,15 +530,15 @@ --conditionalsect = --    ( do tok TokSectionOpen --         tok (TokSection INCLUDEx)---         tok TokSqOpen `elserror` "missing [ after INCLUDE"---         i <- extsubsetdecl `elserror` "missing ExtSubsetDecl in INCLUDE"---         tok TokSectionClose `elserror` "missing ] after INCLUDE"---         return (IncludeSect i)) ++++--         tok TokSqOpen `onFail` failP "missing [ after INCLUDE"+--         i <- extsubsetdecl `onFail` failP "missing ExtSubsetDecl in INCLUDE"+--         tok TokSectionClose `onFail` failP "missing ] after INCLUDE"+--         return (IncludeSect i)) `onFail` --    ( do tok TokSectionOpen --         tok (TokSection IGNOREx)---         tok TokSqOpen `elserror` "missing [ after IGNORE"+--         tok TokSqOpen `onFail` failP "missing [ after IGNORE" --         i <- many ignoresectcontents---         tok TokSectionClose `elserror` "missing ] after IGNORE"+--         tok TokSectionClose `onFail` failP "missing ] after IGNORE" --         return (IgnoreSect i)) -- --ignoresectcontents :: HParser IgnoreSectContents@@ -528,7 +556,7 @@  reference :: HParser Reference reference = do-    bracket (tok TokAmp) (freetext >>= val) (tok TokSemi)+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= val)   where     val ('#':'x':i) | all isHexDigit i                     = return . RefChar . fst . head . readHex $ i@@ -539,17 +567,17 @@ {- reference :: HParser Reference reference =-    ( charref >>= return . RefChar) ++++    ( charref >>= return . RefChar) `onFail`     ( entityref >>= return . RefEntity)  entityref :: HParser EntityRef entityref = do-    n <- bracket (tok TokAmp) name (tok TokSemi)+    n <- bracket (tok TokAmp) (tok TokSemi) name     return n  charref :: HParser CharRef charref = do-    bracket (tok TokAmp) (freetext >>= readCharVal) (tok TokSemi)+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)   where     readCharVal ('#':'x':i) = return . fst . head . readHex $ i     readCharVal ('#':i)     = return . fst . head . readDec $ i@@ -558,11 +586,11 @@  --pereference :: HParser PEReference --pereference = do---    bracket (tok TokPercent) nmtoken (tok TokSemi)+--    bracket (tok TokPercent) (tok TokSemi) nmtoken -- --entitydecl :: HParser EntityDecl --entitydecl =---    ( gedecl >>= return . EntityGEDecl) ++++--    ( gedecl >>= return . EntityGEDecl) `onFail` --    ( pedecl >>= return . EntityPEDecl) -- --gedecl :: HParser GEDecl@@ -570,8 +598,8 @@ --    tok TokSpecialOpen --    tok (TokSpecial ENTITYx) --    n <- name---    e <- entitydef `elserror` "missing entity defn in G ENTITY decl"---    tok TokAnyClose `elserror` "expected > terminating G ENTITY decl"+--    e <- entitydef `onFail` failP "missing entity defn in G ENTITY decl"+--    tok TokAnyClose `onFail` failP "expected > terminating G ENTITY decl" --    return (GEDecl n e) -- --pedecl :: HParser PEDecl@@ -580,30 +608,30 @@ --    tok (TokSpecial ENTITYx) --    tok TokPercent --    n <- name---    e <- pedef `elserror` "missing entity defn in P ENTITY decl"---    tok TokAnyClose `elserror` "expected > terminating P ENTITY decl"+--    e <- pedef `onFail` failP "missing entity defn in P ENTITY decl"+--    tok TokAnyClose `onFail` failP "expected > terminating P ENTITY decl" --    return (PEDecl n e) -- --entitydef :: HParser EntityDef --entitydef =---    ( entityvalue >>= return . DefEntityValue) ++++--    ( entityvalue >>= return . DefEntityValue) `onFail` --    ( do eid <- externalid --         ndd <- maybe ndatadecl --         return (DefExternalID eid ndd)) -- --pedef :: HParser PEDef --pedef =---    ( entityvalue >>= return . PEDefEntityValue) ++++--    ( entityvalue >>= return . PEDefEntityValue) `onFail` --    ( externalid >>= return . PEDefExternalID)  externalid :: HParser ExternalID externalid =     ( do word "SYSTEM"          s <- systemliteral-         return (SYSTEM s)) ++++         return (SYSTEM s)) `onFail`     ( do word "PUBLIC"          p <- pubidliteral-         s <- (systemliteral +++ return (SystemLiteral ""))+         s <- (systemliteral `onFail` return (SystemLiteral ""))          return (PUBLIC p s))  --ndatadecl :: HParser NDataDecl@@ -615,10 +643,10 @@ textdecl :: HParser TextDecl textdecl = do     tok TokPIOpen-    (word "xml" +++ word "XML")+    (word "xml" `onFail` word "XML")     v <- maybe versioninfo     e <- encodingdecl-    tok TokPIClose `elserror` "expected ?> terminating text decl"+    tok TokPIClose `onFail` failP "expected ?> terminating text decl"     return (TextDecl v e)  --extparsedent :: HParser ExtParsedEnt@@ -635,9 +663,9 @@  encodingdecl :: HParser EncodingDecl encodingdecl = do-    (word "encoding" +++ word "ENCODING")-    tok TokEqual `elserror` "expected = in 'encoding' decl"-    f <- bracket (tok TokQuote) freetext (tok TokQuote)+    (word "encoding" `onFail` word "ENCODING")+    tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"+    f <- bracket (tok TokQuote) (tok TokQuote) freetext     return (EncodingDecl f)  --notationdecl :: HParser NotationDecl@@ -646,7 +674,7 @@ --    word "NOTATION" --    n <- name --    e <- either externalid publicid---    tok TokAnyClose `elserror` "expected > terminating NOTATION decl"+--    tok TokAnyClose `onFail` failP "expected > terminating NOTATION decl" --    return (NOTATION n e)  publicid :: HParser PublicID@@ -657,35 +685,38 @@  entityvalue :: HParser EntityValue entityvalue = do-    evs <- bracket (tok TokQuote) (many ev) (tok TokQuote)+    evs <- bracket (tok TokQuote) (tok TokQuote) (many ev)     return (EntityValue evs)  ev :: HParser EV ev =-    ( freetext >>= return . EVString) +++---  PEREF(EVPERef,ev) ++++    ( freetext >>= return . EVString) `onFail`+--  PEREF(EVPERef,ev) `onFail`     ( reference >>= return . EVRef)  attvalue :: HParser AttValue attvalue =-  ( do avs <- bracket (tok TokQuote)+  ( do avs <- bracket (tok TokQuote) (tok TokQuote)                       (many (either freetext reference))-                      (tok TokQuote)-       return (AttValue avs) ) +++-  ( do p <- (tok TokPlus >> return ('+':))-            +++ (tok TokHash >> return ('#':))-            +++ (return id)+       return (AttValue avs) ) `onFail`+  ( do v <- nmtoken+       s <- (tok TokPercent >> return "%") `onFail` return ""+       return (AttValue [Left (v++s)]) ) `onFail`+  ( do s <- oneOf [ tok TokPlus >> return "+"+                  , tok TokHash >> return "#"+                  ]        v <- nmtoken-       return (AttValue [Left (p v)]) )+       return (AttValue [Left (s++v)]) ) `onFail`+  failP "Badly formatted attribute value"  systemliteral :: HParser SystemLiteral systemliteral = do-    s <- bracket (tok TokQuote) freetext (tok TokQuote)+    s <- bracket (tok TokQuote) (tok TokQuote) freetext     return (SystemLiteral s)		-- note: need to fold &...; escapes  pubidliteral :: HParser PubidLiteral pubidliteral = do-    s <- bracket (tok TokQuote) freetext (tok TokQuote)+    s <- bracket (tok TokQuote) (tok TokQuote) freetext     return (PubidLiteral s)		-- note: need to fold &...; escapes  chardata :: HParser CharData
+ src/Text/XML/HaXml/Html/ParseLazy.hs view
@@ -0,0 +1,728 @@+-- | This is a parser for HTML documents.  Unlike for XML documents, it+--   must include a certain amount of error-correction to account for+--   HTML features like self-terminating tags, unterminated tags, and+--   incorrect nesting.  The input is tokenised by the+--   XML lexer (a separate lexer is not required for HTML).++-- It uses a slightly extended version of the Hutton/Meijer parser+-- combinators.++module Text.XML.HaXml.Html.ParseLazy+  ( htmlParse+  ) where++import Prelude hiding (either,maybe,sequence)+import qualified Prelude (either)+import Maybe hiding (maybe)+import Char (toLower, isSpace, isDigit, isHexDigit)+import Numeric (readDec,readHex)+import Monad++import Text.XML.HaXml.Types+import Text.XML.HaXml.Lex+import Text.XML.HaXml.Posn+import Text.ParserCombinators.Poly.NoLeak.Lazy++--  #define DEBUG+ +#if defined(DEBUG)+#  if ( defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 502 ) || \+      ( defined(__NHC__) && __NHC__ > 114 ) || defined(__HUGS__)+import Debug.Trace(trace)+#  elif defined(__GLASGOW_HASKELL__)+import IOExts(trace)+#  elif defined(__NHC__) || defined(__HBC__)+import NonStdTrace+#  endif+debug :: Monad m => String -> m ()+debug s = trace s (return ())+#else+debug :: Monad m => String -> m ()+debug s = return ()+#endif+++-- | The first argument is the name of the file, the second is the string+--   contents of the file.  The result is the generic representation of+--   an XML document.  Any errors cause program failure with message to stderr.+htmlParse :: String -> String -> Document Posn+htmlParse name = {-simplify .-} fst . runParser document . xmlLex name++{-+-- | The first argument is the name of the file, the second is the string+--   contents of the file.  The result is the generic representation of+--   an XML document.  Any parsing errors are returned in the @Either@ type.+htmlParse' :: String -> String -> Either String (Document Posn)+htmlParse' name = Prelude.either Left (Right . simplify) . fst+                  . runParser document . xmlLex name+-}++---- Document simplification ----++simplify :: Document i -> Document i+simplify (Document p st (Elem n avs cs) ms) =+    Document p st (Elem n avs (deepfilter simp cs)) ms+  where+    simp (CElem (Elem "null" [] []) _) = False+    simp (CElem (Elem  n     _  []) _) | n `elem` ["font","p","i","b","em"+                                                  ,"tt","big","small"] = False+ -- simp (CString False s _) | all isSpace s = False+    simp _ = True+    deepfilter p =+        filter p . map (\c-> case c of+                          CElem (Elem n avs cs) i+                                  -> CElem (Elem n avs (deepfilter p cs)) i+                          _       -> c)++-- opening any of these, they close again immediately+selfclosingtags = ["img","hr","br","meta","col","link","base"+                  ,"param","area","frame","input"]++--closing this, implicitly closes any of those which are contained in it+closeInnerTags =+  [ ("ul",      ["li"])+  , ("ol",      ["li"])+  , ("dl",      ["dt","dd"])+  , ("tr",      ["th","td"])+  , ("div",     ["p"])+  , ("thead",   ["th","tr","td"])+  , ("tfoot",   ["th","tr","td"])+  , ("tbody",   ["th","tr","td"])+  , ("table",   ["th","tr","td","thead","tfoot","tbody"])+  , ("caption", ["p"])+  , ("th",      ["p"])+  , ("td",      ["p"])+  , ("li",      ["p"])+  , ("dt",      ["p"])+  , ("dd",      ["p"])+  , ("object",  ["p"])+  , ("map",     ["p"])+  , ("body",    ["p"])+  ]++--opening this, implicitly closes that+closes :: Name -> Name -> Bool+"a"  `closes` "a"   =  True+"li" `closes` "li"  =  True+"th" `closes`  t    | t `elem` ["th","td"]      =  True+"td" `closes`  t    | t `elem` ["th","td"]      =  True+"tr" `closes`  t    | t `elem` ["th","td","tr"] =  True+"dt" `closes`  t    | t `elem` ["dt","dd"]      =  True+"dd" `closes`  t    | t `elem` ["dt","dd"]      =  True+"form"  `closes` "form"      = True+"label" `closes` "label"     = True+_       `closes` "option"    = True+"thead" `closes` t  | t `elem` ["colgroup"]          = True+"tfoot" `closes` t  | t `elem` ["thead","colgroup"]  = True+"tbody" `closes` t  | t `elem` ["tbody","tfoot","thead","colgroup"] = True+"colgroup" `closes` "colgroup"  = True+t `closes` "p"+    | t `elem` ["p","h1","h2","h3","h4","h5","h6"+               ,"hr","div","ul","dl","ol","table"]  =  True+_ `closes` _ = False++++---- Misc ----++fst3 (a,_,_) = a+snd3 (_,a,_) = a+thd3 (_,_,a) = a++++---- Auxiliary Parsing Functions ----++type HParser a = Parser (Posn,TokenT) a++tok :: TokenT -> HParser TokenT+tok t = do (p,t') <- next+           case t' of TokError s    -> report failBad (show t) p t'+                      _ | t'==t     -> return t+                        | otherwise -> report fail (show t) p t'++name :: HParser Name+--name = do {(p,TokName s) <- next; return s}+name = do (p,tok) <- next+          case tok of +            TokName s  -> return s +            TokError s -> report failBad "a name" p tok+            _          -> report fail "a name" p tok++string, freetext :: HParser String+string   = do (p,t) <- next+              case t of TokName s -> return s+                        _         -> report fail "text" p t+freetext = do (p,t) <- next+              case t of TokFreeText s -> return s+                        _             -> report fail "text" p t++maybe :: HParser a -> HParser (Maybe a)+maybe p =+    ( p >>= return . Just) `onFail`+    ( return Nothing)++either :: HParser a -> HParser b -> HParser (Either a b)+either p q =+    ( p >>= return . Left) `onFail`+    ( q >>= return . Right)++word :: String -> HParser ()+word s = do { x <- next+            ; case x of+                (p,TokName n)     | s==n -> return ()+                (p,TokFreeText n) | s==n -> return ()+                (p,t@(TokError _)) -> report failBad (show s) p t+                (p,t) -> report fail (show s) p t+            }++posn :: HParser Posn+posn = do { x@(p,_) <- next+          ; reparse [x]+          ; return p+          } `onFail` return noPos++nmtoken :: HParser NmToken+nmtoken = (string `onFail` freetext)++failP, failBadP :: String -> HParser a+failP msg    = do { p <- posn; fail (msg++"\n    at "++show p) }+failBadP msg = do { p <- posn; failBad (msg++"\n    at "++show p) }++report :: (String->HParser a) -> String -> Posn -> TokenT -> HParser a+report fail exp p t = fail ("Expected "++show exp++" but found "++show t+                           ++"\n  at "++show p)++adjustErrP :: HParser a -> (String->String) -> HParser a+p `adjustErrP` f = p `onFail` do pn <- posn+                                 (p `adjustErr` f) `adjustErr` (++show pn)++---- XML Parsing Functions ----++document :: HParser (Document Posn)+document = do+    return Document+        `apply` (prolog `adjustErr` ("unrecognisable XML prolog\n"++))+        `apply` (return emptyST)+        `apply` (do es <- many1 (element "HTML document")+                    return (case map snd es of+                                [e] -> e+                                es  -> Elem "html" [] (map mkCElem es)))+        `apply` (many misc)+  where mkCElem e = CElem e noPos++comment :: HParser Comment+comment = do+    bracket (tok TokCommentOpen) (tok TokCommentClose) freetext++processinginstruction :: HParser ProcessingInstruction+processinginstruction = do+    tok TokPIOpen+    commit $ do+      n <- string  `onFail` failP "processing instruction has no target"+      f <- freetext+      (tok TokPIClose `onFail` tok TokAnyClose) `onFail` failP "missing ?> or >"+      return (n, f)++cdsect :: HParser CDSect+cdsect = do+    tok TokSectionOpen+    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata++prolog :: HParser Prolog+prolog = do+    x <- maybe xmldecl+    m1 <- many misc+    dtd <- maybe doctypedecl+    m2 <- many misc+    return (Prolog x m1 dtd m2)++xmldecl :: HParser XMLDecl+xmldecl = do+    tok TokPIOpen+    (word "xml" `onFail` word "XML")+    p <- posn+    s <- freetext+    tok TokPIClose `onFail` failBadP "missing ?> in <?xml ...?>"+    (return . fst . runParser aux . xmlReLex p) s+  where+    aux = do+      v <- versioninfo  `onFail` failP "missing XML version info"+      e <- maybe encodingdecl+      s <- maybe sddecl+      return (XMLDecl v e s)++versioninfo :: HParser VersionInfo+versioninfo = do+    (word "version" `onFail` word "VERSION")+    tok TokEqual+    bracket (tok TokQuote) (tok TokQuote) freetext++misc :: HParser Misc+misc = +    oneOf' [ ("<!--comment-->", comment >>= return . Comment)+           , ("<?PI?>",         processinginstruction >>= return . PI)+           ]+++-- Question: for HTML, should we disallow in-line DTDs, allowing only externals?+-- Answer: I think so.++doctypedecl :: HParser DocTypeDecl+doctypedecl = do+    tok TokSpecialOpen+    tok (TokSpecial DOCTYPEx)+    commit $ do+      n <- name+      eid <- maybe externalid+--    es <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)) (many markupdecl)+      tok TokAnyClose  `onFail` failP "missing > in DOCTYPE decl"+--    return (DTD n eid (case es of { Nothing -> []; Just e -> e }))+      return (DTD n eid [])++--markupdecl :: HParser MarkupDecl+--markupdecl =+--    ( elementdecl >>= return . Element) `onFail`+--    ( attlistdecl >>= return . AttList) `onFail`+--    ( entitydecl >>= return . Entity) `onFail`+--    ( notationdecl >>= return . Notation) `onFail`+--    ( misc >>= return . MarkupMisc) `onFail`+--    PEREF(MarkupPE,markupdecl)+--+--extsubset :: HParser ExtSubset+--extsubset = do+--    td <- maybe textdecl+--    ds <- many extsubsetdecl+--    return (ExtSubset td ds)+--+--extsubsetdecl :: HParser ExtSubsetDecl+--extsubsetdecl =+--    ( markupdecl >>= return . ExtMarkupDecl) `onFail`+--    ( conditionalsect >>= return . ExtConditionalSect) `onFail`+--    PEREF(ExtPEReference,extsubsetdecl)++sddecl :: HParser SDDecl+sddecl = do+    (word "standalone" `onFail` word "STANDALONE")+    commit $ do+      tok TokEqual `onFail` failP "missing = in 'standalone' decl"+      bracket (tok TokQuote) (tok TokQuote)+              ( (word "yes" >> return True) `onFail`+                (word "no" >> return False) `onFail`+                failP "'standalone' decl requires 'yes' or 'no' value" )+++++----+-- VERY IMPORTANT NOTE: The stack returned here contains those tags which+-- have been closed implicitly and need to be reopened again at the+-- earliest opportunity.+type Stack = [(Name,[Attribute])]++element :: Name -> HParser (Stack,Element Posn)+element ctx =+  do+    tok TokAnyOpen+    (ElemTag e avs) <- elemtag+    ( if e `closes` ctx then+         -- insert the missing close-tag, fail forward, and reparse.+         ( do debug ("/")+              unparse ([TokEndOpen, TokName ctx, TokAnyClose,+                        TokAnyOpen, TokName e] ++ reformatAttrs avs)+              return ([], Elem "null" [] []))+      else if e `elem` selfclosingtags then+         -- complete the parse straightaway.+         ( do tok TokEndClose	-- self-closing <tag /> +              debug (e++"[+]")+              return ([], Elem e avs [])) `onFail`+     --  ( do tok TokAnyClose	-- sequence <tag></tag>	(**not HTML?**)+     --       debug (e++"[+")+     --       n <- bracket (tok TokEndOpen) (tok TokAnyClose) name+     --       debug "]"+     --       if e == (map toLower n :: Name) +     --         then return ([], Elem e avs [])      +     --         else return (error "no nesting in empty tag")) `onFail`+         ( do tok TokAnyClose	-- <tag> with no close (e.g. <IMG>)+              debug (e++"[+]")+              return ([], Elem e avs []))+      else+        (( do tok TokEndClose+              debug (e++"[]")+              return ([], Elem e avs [])) `onFail`+         ( do tok TokAnyClose `onFail` failP "missing > or /> in element tag"+              debug (e++"[")+              return (\ interior-> let (stack,contained) = interior+                                   in  (stack, Elem e avs contained))+                  `apply`+                  (do zz <- manyFinally (content e)+                                        (tok TokEndOpen)+                      n <- name+                      commit (tok TokAnyClose)+                      debug "]"+                      let (ss,cs) = unzip zz+                      let s       = if null ss then [] else last ss+                      ( if e == (map toLower n :: Name) then+                          do unparse (reformatTags (closeInner e s))+                             debug "^"+                             return ([], cs)+                        else+                          do unparse [TokEndOpen, TokName n, TokAnyClose]+                             debug "-"+                             return (((e,avs):s), cs)))+         ) `onFail` failP ("failed to repair non-matching tags in context: "++ctx)))++closeInner :: Name -> [(Name,[Attribute])] -> [(Name,[Attribute])]+closeInner c ts =+    case lookup c closeInnerTags of+      (Just these) -> filter ((`notElem` these).fst) ts+      Nothing      -> ts++unparse ts = do p <- posn+                reparse (zip (repeat p) ts)++reformatAttrs avs = concatMap f0 avs+    where f0 (a, v@(AttValue _)) = [TokName a, TokEqual, TokQuote,+                                       TokFreeText (show v), TokQuote]+reformatTags ts = concatMap f0 ts+    where f0 (t,avs) = [TokAnyOpen, TokName t]++reformatAttrs avs++[TokAnyClose]++content :: Name -> HParser (Stack,Content Posn)+content ctx = do { p <- posn ; content' p ctx }+  where content' p ctx = oneOf'+          [ ( "element", element ctx >>= \(s,e)-> return (s, CElem e p))+          , ( "chardata", chardata >>= \s-> return ([], CString False s p))+          , ( "reference", reference >>= \r-> return ([], CRef r p))+          , ( "cdsect", cdsect >>= \c-> return ([], CString True c p))+          , ( "misc", misc >>= \m->  return ([], CMisc m p))+          ] `adjustErrP` ("when looking for a content item,\n"++)++----+elemtag :: HParser ElemTag+elemtag = do+    n <- name `adjustErrBad` ("malformed element tag\n"++)+    as <- many attribute+    return (ElemTag (map toLower n) as)++attribute :: HParser Attribute+attribute = do+    n <- name+    v <- (do tok TokEqual+             attvalue) `onFail`+         (return (AttValue [Left "TRUE"]))+    return (map toLower n,v)++--elementdecl :: HParser ElementDecl+--elementdecl = do+--    tok TokSpecialOpen+--    tok (TokSpecial ELEMENTx)+--    n <- name `onFail` failP "missing identifier in ELEMENT decl"+--    c <- contentspec `onFail` failP "missing content spec in ELEMENT decl"+--    tok TokAnyClose `onFail` failP "expected > terminating ELEMENT decl"+--    return (ElementDecl n c)+--+--contentspec :: HParser ContentSpec+--contentspec =+--    ( word "EMPTY" >> return EMPTY) `onFail`+--    ( word "ANY" >> return ANY) `onFail`+--    ( mixed >>= return . Mixed) `onFail`+--    ( cp >>= return . ContentSpec) `onFail`+--    PEREF(ContentPE,contentspec)+--+--choice :: HParser [CP]+--choice = do+--    bracket (tok TokBraOpen) (tok TokBraClose)+--            (cp `sepby1` (tok TokPipe))+--+--sequence :: HParser [CP]+--sequence = do+--    bracket (tok TokBraOpen) (tok TokBraClose)+--            (cp `sepby1` (tok TokComma))+--+--cp :: HParser CP+--cp =+--    ( do n <- name+--         m <- modifier+--         return (TagName n m)) `onFail`+--    ( do ss <- sequence+--         m <- modifier+--         return (Seq ss m)) `onFail`+--    ( do cs <- choice+--         m <- modifier+--         return (Choice cs m)) `onFail`+--    PEREF(CPPE,cp)+--+--modifier :: HParser Modifier+--modifier =+--    ( tok TokStar >> return Star) `onFail`+--    ( tok TokQuery >> return Query) `onFail`+--    ( tok TokPlus >> return Plus) `onFail`+--    ( return None)+--+--mixed :: HParser Mixed+--mixed = do+--    tok TokBraOpen+--    tok TokHash+--    word "PCDATA"+--    cont+--  where+--    cont = ( tok TokBraClose >> return PCDATA) `onFail`+--           ( do cs <- many ( do tok TokPipe+--                                n <- name+--                                return n)+--                tok TokBraClose+--                tok TokStar+--                return (PCDATAplus cs))+--+--attlistdecl :: HParser AttListDecl+--attlistdecl = do+--    tok TokSpecialOpen+--    tok (TokSpecial ATTLISTx)+--    n <- name `onFail` failP "missing identifier in ATTLIST"+--    ds <- many attdef+--    tok TokAnyClose `onFail` failP "missing > terminating ATTLIST"+--    return (AttListDecl n ds)+--+--attdef :: HParser AttDef+--attdef = do+--    n <- name+--    t <- atttype `onFail` failP "missing attribute type in attlist defn"+--    d <- defaultdecl+--    return (AttDef n t d)+--+--atttype :: HParser AttType+--atttype =+--    ( word "CDATA" >> return StringType) `onFail`+--    ( tokenizedtype >>= return . TokenizedType) `onFail`+--    ( enumeratedtype >>= return . EnumeratedType)+--+--tokenizedtype :: HParser TokenizedType+--tokenizedtype =+--    ( word "ID" >> return ID) `onFail`+--    ( word "IDREF" >> return IDREF) `onFail`+--    ( word "IDREFS" >> return IDREFS) `onFail`+--    ( word "ENTITY" >> return ENTITY) `onFail`+--    ( word "ENTITIES" >> return ENTITIES) `onFail`+--    ( word "NMTOKEN" >> return NMTOKEN) `onFail`+--    ( word "NMTOKENS" >> return NMTOKENS)+--+--enumeratedtype :: HParser EnumeratedType+--enumeratedtype =+--    ( notationtype >>= return . NotationType) `onFail`+--    ( enumeration >>= return . Enumeration)+--+--notationtype :: HParser NotationType+--notationtype = do+--    word "NOTATION"+--    bracket (tok TokBraOpen) (tok TokBraClose)+--            (name `sepby1` (tok TokPipe))+--+--enumeration :: HParser Enumeration+--enumeration =+--    bracket (tok TokBraOpen) (tok TokBraClose)+--            (nmtoken `sepby1` (tok TokPipe))+--+--defaultdecl :: HParser DefaultDecl+--defaultdecl =+--    ( tok TokHash >> word "REQUIRED" >> return REQUIRED) `onFail`+--    ( tok TokHash >> word "IMPLIED" >> return IMPLIED) `onFail`+--    ( do f <- maybe (tok TokHash >> word "FIXED" >> return FIXED)+--         a <- attvalue+--         return (DefaultTo a f))+--+--conditionalsect :: HParser ConditionalSect+--conditionalsect =+--    ( do tok TokSectionOpen+--         tok (TokSection INCLUDEx)+--         tok TokSqOpen `onFail` failP "missing [ after INCLUDE"+--         i <- extsubsetdecl `onFail` failP "missing ExtSubsetDecl in INCLUDE"+--         tok TokSectionClose `onFail` failP "missing ] after INCLUDE"+--         return (IncludeSect i)) `onFail`+--    ( do tok TokSectionOpen+--         tok (TokSection IGNOREx)+--         tok TokSqOpen `onFail` failP "missing [ after IGNORE"+--         i <- many ignoresectcontents+--         tok TokSectionClose `onFail` failP "missing ] after IGNORE"+--         return (IgnoreSect i))+--+--ignoresectcontents :: HParser IgnoreSectContents+--ignoresectcontents = do+--    i <- ignore+--    is <- many (do tok TokSectionOpen+--                   ic <- ignoresectcontents+--                   tok TokSectionClose+--                   ig <- ignore+--                   return (ic,ig))+--    return (IgnoreSectContents i is)+--+--ignore :: HParser Ignore+--ignore = freetext >>= return . Ignore++reference :: HParser Reference+reference = do+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= val)+  where+    val ('#':'x':i) | all isHexDigit i+                    = return . RefChar . fst . head . readHex $ i+    val ('#':i)     | all isDigit i+                    = return . RefChar . fst . head . readDec $ i+    val name        = return . RefEntity $ name++{-+reference :: HParser Reference+reference =+    ( charref >>= return . RefChar) `onFail`+    ( entityref >>= return . RefEntity)++entityref :: HParser EntityRef+entityref = do+    n <- bracket (tok TokAmp) (tok TokSemi) name+    return n++charref :: HParser CharRef+charref = do+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)+  where+    readCharVal ('#':'x':i) = return . fst . head . readHex $ i+    readCharVal ('#':i)     = return . fst . head . readDec $ i+    readCharVal _           = mzero+-}++--pereference :: HParser PEReference+--pereference = do+--    bracket (tok TokPercent) (tok TokSemi) nmtoken+--+--entitydecl :: HParser EntityDecl+--entitydecl =+--    ( gedecl >>= return . EntityGEDecl) `onFail`+--    ( pedecl >>= return . EntityPEDecl)+--+--gedecl :: HParser GEDecl+--gedecl = do+--    tok TokSpecialOpen+--    tok (TokSpecial ENTITYx)+--    n <- name+--    e <- entitydef `onFail` failP "missing entity defn in G ENTITY decl"+--    tok TokAnyClose `onFail` failP "expected > terminating G ENTITY decl"+--    return (GEDecl n e)+--+--pedecl :: HParser PEDecl+--pedecl = do+--    tok TokSpecialOpen+--    tok (TokSpecial ENTITYx)+--    tok TokPercent+--    n <- name+--    e <- pedef `onFail` failP "missing entity defn in P ENTITY decl"+--    tok TokAnyClose `onFail` failP "expected > terminating P ENTITY decl"+--    return (PEDecl n e)+--+--entitydef :: HParser EntityDef+--entitydef =+--    ( entityvalue >>= return . DefEntityValue) `onFail`+--    ( do eid <- externalid+--         ndd <- maybe ndatadecl+--         return (DefExternalID eid ndd))+--+--pedef :: HParser PEDef+--pedef =+--    ( entityvalue >>= return . PEDefEntityValue) `onFail`+--    ( externalid >>= return . PEDefExternalID)++externalid :: HParser ExternalID+externalid =+    ( do word "SYSTEM"+         s <- systemliteral+         return (SYSTEM s)) `onFail`+    ( do word "PUBLIC"+         p <- pubidliteral+         s <- (systemliteral `onFail` return (SystemLiteral ""))+         return (PUBLIC p s))++--ndatadecl :: HParser NDataDecl+--ndatadecl = do+--    word "NDATA"+--    n <- name+--    return (NDATA n)++textdecl :: HParser TextDecl+textdecl = do+    tok TokPIOpen+    (word "xml" `onFail` word "XML")+    v <- maybe versioninfo+    e <- encodingdecl+    tok TokPIClose `onFail` failP "expected ?> terminating text decl"+    return (TextDecl v e)++--extparsedent :: HParser ExtParsedEnt+--extparsedent = do+--    t <- maybe textdecl+--    (_,c) <- (content "")+--    return (ExtParsedEnt t c)+--+--extpe :: HParser ExtPE+--extpe = do+--    t <- maybe textdecl+--    e <- extsubsetdecl+--    return (ExtPE t e)++encodingdecl :: HParser EncodingDecl+encodingdecl = do+    (word "encoding" `onFail` word "ENCODING")+    tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"+    f <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (EncodingDecl f)++--notationdecl :: HParser NotationDecl+--notationdecl = do+--    tok TokSpecialOpen+--    word "NOTATION"+--    n <- name+--    e <- either externalid publicid+--    tok TokAnyClose `onFail` failP "expected > terminating NOTATION decl"+--    return (NOTATION n e)++publicid :: HParser PublicID+publicid = do+    word "PUBLICID"+    p <- pubidliteral+    return (PUBLICID p)++entityvalue :: HParser EntityValue+entityvalue = do+    evs <- bracket (tok TokQuote) (tok TokQuote) (many ev)+    return (EntityValue evs)++ev :: HParser EV+ev =+    ( freetext >>= return . EVString) `onFail`+--  PEREF(EVPERef,ev) `onFail`+    ( reference >>= return . EVRef)++attvalue :: HParser AttValue+attvalue =+  ( do avs <- bracket (tok TokQuote) (tok TokQuote)+                      (many (either freetext reference))+       return (AttValue avs) ) `onFail`+  ( do v <- nmtoken+       s <- (tok TokPercent >> return "%") `onFail` return ""+       return (AttValue [Left (v++s)]) ) `onFail`+  ( do s <- oneOf [ tok TokPlus >> return "+"+                  , tok TokHash >> return "#"+                  ]+       v <- nmtoken+       return (AttValue [Left (s++v)]) ) `onFail`+  failP "Badly formatted attribute value"++systemliteral :: HParser SystemLiteral+systemliteral = do+    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (SystemLiteral s)		-- note: need to fold &...; escapes++pubidliteral :: HParser PubidLiteral+pubidliteral = do+    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (PubidLiteral s)		-- note: need to fold &...; escapes++chardata :: HParser CharData+chardata = freetext -- >>= return . CharData+
src/Text/XML/HaXml/Html/Pretty.hs view
@@ -25,7 +25,7 @@  ---- -document :: Document -> Doc+document :: Document i -> Doc prolog   :: Prolog -> Doc xmldecl  :: XMLDecl -> Doc misc     :: Misc -> Doc@@ -36,9 +36,9 @@ extsubset   :: ExtSubset -> Doc extsubsetdecl :: ExtSubsetDecl -> Doc -element   :: Element -> Doc+element   :: Element i -> Doc attribute :: Attribute -> Doc                     --etc-content   :: Content -> Doc+content   :: Content i -> Doc  ---- @@ -85,9 +85,9 @@     | otherwise        = let (d,c) = carryelem e empty                          in d <> c -isText (CString _ _) = True-isText (CRef _)    = True-isText _           = False+isText (CString _ _ _) = True+isText (CRef _ _)      = True+isText _               = False  carryelem (Elem n as []) c                        = ( c <>@@ -124,18 +124,18 @@         , text ">")   where start = c <> text "<" <> text n <+> fsep (map attribute as) -carrycontent (d,c) (CElem e)   = let (d',c') = carryelem e c in-                                 (d $$ nest 2 d',       c')-carrycontent (d,c) (CString _ s) = (d <> c <> chardata s, empty)-carrycontent (d,c) (CRef r)    = (d <> c <> reference r,empty)-carrycontent (d,c) (CMisc m)   = (d $$ c <> misc m,     empty)+carrycontent (d,c) (CElem e _)     = let (d',c') = carryelem e c in+                                     (d $$ nest 2 d',       c')+carrycontent (d,c) (CString _ s _) = (d <> c <> chardata s, empty)+carrycontent (d,c) (CRef r _)      = (d <> c <> reference r,empty)+carrycontent (d,c) (CMisc m _)     = (d $$ c <> misc m,     empty)  -attribute (n,v)        = text n <> text "=" <> attvalue v-content (CElem e)      = element e-content (CString _ s)  = chardata s-content (CRef r)       = reference r-content (CMisc m)      = misc m+attribute (n,v)          = text n <> text "=" <> attvalue v+content (CElem e _)      = element e+content (CString _ s _)  = chardata s+content (CRef r _)       = reference r+content (CMisc m _)      = misc m  elementdecl (ElementDecl n cs) = text "<!ELEMENT" <+> text n <+>                                  contentspec cs <> text ">"
src/Text/XML/HaXml/Lex.hs view
@@ -18,38 +18,23 @@   -- * Entry points to the lexer     xmlLex         -- :: String -> String -> [Token]   , xmlReLex       -- :: Posn   -> String -> [Token]-  , posInNewCxt    -- :: String -> Posn-  -- * Token and position types+  , reLexEntityValue -- :: (String->Maybe String) -> Posn -> String -> [Token]+  -- * Token types   , Token-  , Posn(..)   , TokenT(..)   , Special(..)   , Section(..)   ) where  import Char+import Text.XML.HaXml.Posn  data Where = InTag String | NotInTag     deriving (Eq)  -- | All tokens are paired up with a source position.---   Lexical errors are passed back through the @Either@ type.-type Token = Either String (Posn, TokenT)---- | Source positions contain a filename, line, column, and an---   inclusion point, which is itself another source position,---   recursively.-data Posn = Pn String !Int !Int (Maybe Posn)-        deriving (Eq)--instance Show Posn where-      showsPrec p (Pn f l c i) = showString f .-                                 showString "  at line " . shows l .-                                 showString " col " . shows c .-                                 ( case i of-                                    Nothing -> id-                                    Just p  -> showString "\n    used by  " .-                                               shows p )+--   Lexical errors are passed back as a special @TokenT@ value.+type Token = (Posn, TokenT)  -- | The basic token type. data TokenT =@@ -84,6 +69,7 @@     | TokName      String	-- ^   begins with letter, no spaces     | TokFreeText  String	-- ^   any character data     | TokNull			-- ^   fake token+    | TokError     String	-- ^   lexical error     deriving (Eq)  data Special =@@ -131,6 +117,7 @@   showsPrec p  (TokName      s)		= showString     s   showsPrec p  (TokFreeText  s)		= showString     s   showsPrec p  TokNull			= showString     "(null)"+  showsPrec p  (TokError     s)		= showString     s  --trim, revtrim :: String -> String --trim    = f . f         where f = reverse . dropWhile isSpace@@ -138,26 +125,10 @@ --revtrim = reverse . dropWhile (=='\n')  -- most recently used defn.  emit :: TokenT -> Posn -> Token-emit tok p = forcep p `seq` Right (p,tok)+emit tok p = forcep p `seq` (p,tok)  lexerror :: String -> Posn -> [Token]-lexerror s p = [Left ("Lexical error in  "++show p++":\n  "++s)]--forcep (Pn f n m i) = m `seq` n--addcol :: Int -> Posn -> Posn-addcol n (Pn f r c i) = Pn f r (c+n) i--newline, tab :: Posn -> Posn-newline (Pn f r c i) = Pn f (r+1) 1 i-tab     (Pn f r c i) = Pn f r (((c`div`8)+1)*8) i--white :: Char -> Posn -> Posn-white ' '  = addcol 1-white '\n' = newline-white '\r' = id-white '\t' = tab-white '\xa0' = addcol 1+lexerror s p = [(p, TokError ("Lexical error:\n  "++s))]  skip :: Int -> Posn -> String -> (Posn->String->[Token]) -> [Token] skip n p s k = k (addcol n p) (drop n s)@@ -204,12 +175,6 @@     | otherwise  = textOrRefUntil close tok (s:acc) pos (addcol 1 p) ss k  ------- | @posInNewCxt name pos@ creates a new source position from an old one.---   It is used when opening a new file (e.g. a DTD inclusion), to denote---   the start of the file @name@, but retain the stacked information that---   it was included from the old @pos@.-posInNewCxt :: String -> Maybe Posn -> Posn-posInNewCxt name pos = Pn name 1 1 pos  -- | The first argument to 'xmlLex' is the filename (used for source positions, --   especially in error messages), and the second is the string content of@@ -227,6 +192,22 @@   where     k n = skip n p s (blank xmlAny []) +-- | 'reLexEntityValue' is used solely within parsing an entityvalue.+--   Normally, a PERef is logically separated from its surroundings by+--   whitespace.  But in an entityvalue, a PERef can be juxtaposed to+--   an identifier, so the expansion forms a new identifier.+--   Thus the need to rescan the whole text for possible PERefs.+reLexEntityValue :: (String->Maybe String) -> Posn -> String -> [Token]+reLexEntityValue lookup p s =+    textOrRefUntil "%" TokNull [] p p (expand s++"%") (xmlAny [])+  where+    expand []       = []+    expand ('%':ss) = let (sym,rest) = break (==';') ss in+                      case lookup sym of+                        Just val -> expand val ++ expand (tail rest)+                        Nothing  -> "%"++sym++";"++ expand (tail rest) -- hmmm+    expand (s:ss)   = s: expand ss+ --xmltop :: Posn -> String -> [Token] --xmltop p [] = [] --xmltop p s@@ -302,12 +283,13 @@       | "INCLUDE"  `prefixes` s  = emit (TokSection INCLUDEx) p:    k w p s 7       | "IGNORE"   `prefixes` s  = emit (TokSection IGNOREx) p:     k w p s 6       | "%"        `prefixes` s  = emit TokPercent p:               k w p s 1-      | otherwise = lexerror ("expected CDATA, IGNORE, or INCLUDE") p+      | otherwise = lexerror ("expected CDATA, IGNORE, or INCLUDE, but got "+                             ++take 7 s) p     accum w p s n =       let p0 = addcol n p in       textUntil "]]>" TokSectionClose "" p0 p0 (drop n s) (blank xmlAny w)     k w p s n =-      skip n p s (xmlAny w)+      skip n p s (xmlAny ({-InTag "<![section[ ... ]]>": -}w))  xmlSpecial w p s     | "DOCTYPE"  `prefixes` s = emit (TokSpecial DOCTYPEx)  p: k 7@@ -316,7 +298,8 @@     | "ENTITY"   `prefixes` s = emit (TokSpecial ENTITYx)   p: k 6     | "NOTATION" `prefixes` s = emit (TokSpecial NOTATIONx) p: k 8     | otherwise = lexerror-                    "expected DOCTYPE, ELEMENT, ENTITY, ATTLIST, or NOTATION" p+                    ("expected DOCTYPE, ELEMENT, ENTITY, ATTLIST, or NOTATION,"+                    ++" but got "++take 7 s) p   where k n = skip n p s (blank xmlAny w)  xmlName p (s:ss) cxt k@@ -330,6 +313,7 @@         | isAlphaNum s || s `elem` ".-_:"                       = gatherName (s:acc) pos (addcol 1 p) ss k         | otherwise   = emit (TokName (reverse acc)) pos: k p (s:ss)+xmlName p [] cxt k = lexerror ("expected a "++cxt++", but got end of input") p  xmlContent acc w pos p [] = if all isSpace acc then []                             else lexerror "unexpected EOF between tags" p
src/Text/XML/HaXml/OneOfN.hs view
@@ -1,88 +1,113 @@ module Text.XML.HaXml.OneOfN where -import Text.XML.HaXml.Xml2Haskell+import Text.XML.HaXml.XmlContent  data OneOf2 a b     = OneOf2 a | TwoOf2 b     deriving (Eq,Show) +instance (HTypeable a,HTypeable b)+    => HTypeable (OneOf2 a b)+  where      toHType m = Defined "OneOf2" [] []+  --         toHType m = Defined "OneOf2" [a,b] []+  --            where a = toHType $ (\ (OneOf2 a)->a) $ m+  --                  b = toHType $ (\ (TwoOf2 b)->b) $ m++ instance (XmlContent a,XmlContent b)     => XmlContent (OneOf2 a b)   where-    fromElem cs =+    parseContents =         (choice OneOf2 $ choice TwoOf2-        $ (\c->(Nothing,c))) cs-    toElem (OneOf2 x) = toElem x-    toElem (TwoOf2 x) = toElem x+        $ fail "OneOf2")+    toContents (OneOf2 x) = toContents x+    toContents (TwoOf2 x) = toContents x  ---- data OneOf3 a b c     = OneOf3 a | TwoOf3 b | ThreeOf3 c     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c)+    => HTypeable (OneOf3 a b c)+  where      toHType m = Defined "OneOf3" [] []+ instance (XmlContent a,XmlContent b,XmlContent c)     => XmlContent (OneOf3 a b c)   where-    fromElem cs =+    parseContents =         (choice OneOf3 $ choice TwoOf3 $ choice ThreeOf3-        $ (\c->(Nothing,c))) cs-    toElem (OneOf3 x) = toElem x-    toElem (TwoOf3 x) = toElem x-    toElem (ThreeOf3 x) = toElem x+        $ fail "OneOf3")+    toContents (OneOf3 x) = toContents x+    toContents (TwoOf3 x) = toContents x+    toContents (ThreeOf3 x) = toContents x  ---- data OneOf4 a b c d     = OneOf4 a | TwoOf4 b | ThreeOf4 c | FourOf4 d     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d)+    => HTypeable (OneOf4 a b c d)+  where      toHType m = Defined "OneOf4" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d)     => XmlContent (OneOf4 a b c d)   where-    fromElem cs =+    parseContents =         (choice OneOf4 $ choice TwoOf4 $ choice ThreeOf4 $ choice FourOf4-        $ (\c->(Nothing,c))) cs-    toElem (OneOf4 x) = toElem x-    toElem (TwoOf4 x) = toElem x-    toElem (ThreeOf4 x) = toElem x-    toElem (FourOf4 x) = toElem x+        $ fail "OneOf4")+    toContents (OneOf4 x) = toContents x+    toContents (TwoOf4 x) = toContents x+    toContents (ThreeOf4 x) = toContents x+    toContents (FourOf4 x) = toContents x  ---- data OneOf5 a b c d e     = OneOf5 a | TwoOf5 b | ThreeOf5 c | FourOf5 d | FiveOf5 e     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e)+    => HTypeable (OneOf5 a b c d e)+  where      toHType m = Defined "OneOf5" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e)     => XmlContent (OneOf5 a b c d e)   where-    fromElem cs =+    parseContents =         (choice OneOf5 $ choice TwoOf5 $ choice ThreeOf5 $ choice FourOf5         $ choice FiveOf5-        $ (\c->(Nothing,c))) cs-    toElem (OneOf5 x) = toElem x-    toElem (TwoOf5 x) = toElem x-    toElem (ThreeOf5 x) = toElem x-    toElem (FourOf5 x) = toElem x-    toElem (FiveOf5 x) = toElem x+        $ fail "OneOf5")+    toContents (OneOf5 x) = toContents x+    toContents (TwoOf5 x) = toContents x+    toContents (ThreeOf5 x) = toContents x+    toContents (FourOf5 x) = toContents x+    toContents (FiveOf5 x) = toContents x  ---- data OneOf6 a b c d e f     = OneOf6 a | TwoOf6 b | ThreeOf6 c | FourOf6 d | FiveOf6 e | SixOf6 f     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f)+    => HTypeable (OneOf6 a b c d e f)+  where      toHType m = Defined "OneOf6" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f)     => XmlContent (OneOf6 a b c d e f)   where-    fromElem cs =+    parseContents =         (choice OneOf6 $ choice TwoOf6 $ choice ThreeOf6 $ choice FourOf6         $ choice FiveOf6 $ choice SixOf6-        $ (\c->(Nothing,c))) cs-    toElem (OneOf6 x) = toElem x-    toElem (TwoOf6 x) = toElem x-    toElem (ThreeOf6 x) = toElem x-    toElem (FourOf6 x) = toElem x-    toElem (FiveOf6 x) = toElem x-    toElem (SixOf6 x) = toElem x+        $ fail "OneOf6")+    toContents (OneOf6 x) = toContents x+    toContents (TwoOf6 x) = toContents x+    toContents (ThreeOf6 x) = toContents x+    toContents (FourOf6 x) = toContents x+    toContents (FiveOf6 x) = toContents x+    toContents (SixOf6 x) = toContents x  ---- data OneOf7 a b c d e f g@@ -90,21 +115,26 @@     | SevenOf7 g     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g)+    => HTypeable (OneOf7 a b c d e f g)+  where      toHType m = Defined "OneOf7" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g)     => XmlContent (OneOf7 a b c d e f g)   where-    fromElem cs =+    parseContents =         (choice OneOf7 $ choice TwoOf7 $ choice ThreeOf7 $ choice FourOf7         $ choice FiveOf7 $ choice SixOf7 $ choice SevenOf7-        $ (\c->(Nothing,c))) cs-    toElem (OneOf7 x) = toElem x-    toElem (TwoOf7 x) = toElem x-    toElem (ThreeOf7 x) = toElem x-    toElem (FourOf7 x) = toElem x-    toElem (FiveOf7 x) = toElem x-    toElem (SixOf7 x) = toElem x-    toElem (SevenOf7 x) = toElem x+        $ fail "OneOf7")+    toContents (OneOf7 x) = toContents x+    toContents (TwoOf7 x) = toContents x+    toContents (ThreeOf7 x) = toContents x+    toContents (FourOf7 x) = toContents x+    toContents (FiveOf7 x) = toContents x+    toContents (SixOf7 x) = toContents x+    toContents (SevenOf7 x) = toContents x  ---- data OneOf8 a b c d e f g h@@ -112,22 +142,27 @@     | SevenOf8 g | EightOf8 h     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h)+    => HTypeable (OneOf8 a b c d e f g h)+  where      toHType m = Defined "OneOf8" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h)     => XmlContent (OneOf8 a b c d e f g h)   where-    fromElem cs =+    parseContents =         (choice OneOf8 $ choice TwoOf8 $ choice ThreeOf8 $ choice FourOf8         $ choice FiveOf8 $ choice SixOf8 $ choice SevenOf8 $ choice EightOf8-        $ (\c->(Nothing,c))) cs-    toElem (OneOf8 x) = toElem x-    toElem (TwoOf8 x) = toElem x-    toElem (ThreeOf8 x) = toElem x-    toElem (FourOf8 x) = toElem x-    toElem (FiveOf8 x) = toElem x-    toElem (SixOf8 x) = toElem x-    toElem (SevenOf8 x) = toElem x-    toElem (EightOf8 x) = toElem x+        $ fail "OneOf8")+    toContents (OneOf8 x) = toContents x+    toContents (TwoOf8 x) = toContents x+    toContents (ThreeOf8 x) = toContents x+    toContents (FourOf8 x) = toContents x+    toContents (FiveOf8 x) = toContents x+    toContents (SixOf8 x) = toContents x+    toContents (SevenOf8 x) = toContents x+    toContents (EightOf8 x) = toContents x  ---- data OneOf9 a b c d e f g h i@@ -135,24 +170,29 @@     | SevenOf9 g | EightOf9 h | NineOf9 i     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i)+    => HTypeable (OneOf9 a b c d e f g h i)+  where      toHType m = Defined "OneOf9" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i)     => XmlContent (OneOf9 a b c d e f g h i)   where-    fromElem cs =+    parseContents =         (choice OneOf9 $ choice TwoOf9 $ choice ThreeOf9 $ choice FourOf9         $ choice FiveOf9 $ choice SixOf9 $ choice SevenOf9 $ choice EightOf9         $ choice NineOf9-        $ (\c->(Nothing,c))) cs-    toElem (OneOf9 x) = toElem x-    toElem (TwoOf9 x) = toElem x-    toElem (ThreeOf9 x) = toElem x-    toElem (FourOf9 x) = toElem x-    toElem (FiveOf9 x) = toElem x-    toElem (SixOf9 x) = toElem x-    toElem (SevenOf9 x) = toElem x-    toElem (EightOf9 x) = toElem x-    toElem (NineOf9 x) = toElem x+        $ fail "OneOf9")+    toContents (OneOf9 x) = toContents x+    toContents (TwoOf9 x) = toContents x+    toContents (ThreeOf9 x) = toContents x+    toContents (FourOf9 x) = toContents x+    toContents (FiveOf9 x) = toContents x+    toContents (SixOf9 x) = toContents x+    toContents (SevenOf9 x) = toContents x+    toContents (EightOf9 x) = toContents x+    toContents (NineOf9 x) = toContents x  ---- data OneOf10 a b c d e f g h i j@@ -160,25 +200,30 @@     | SixOf10 f | SevenOf10 g | EightOf10 h | NineOf10 i | TenOf10 j     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j)+    => HTypeable (OneOf10 a b c d e f g h i j)+  where      toHType m = Defined "OneOf10" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j)     => XmlContent (OneOf10 a b c d e f g h i j)   where-    fromElem cs =+    parseContents =         (choice OneOf10 $ choice TwoOf10 $ choice ThreeOf10 $ choice FourOf10         $ choice FiveOf10 $ choice SixOf10 $ choice SevenOf10         $ choice EightOf10 $ choice NineOf10 $ choice TenOf10-        $ (\c->(Nothing,c))) cs-    toElem (OneOf10 x) = toElem x-    toElem (TwoOf10 x) = toElem x-    toElem (ThreeOf10 x) = toElem x-    toElem (FourOf10 x) = toElem x-    toElem (FiveOf10 x) = toElem x-    toElem (SixOf10 x) = toElem x-    toElem (SevenOf10 x) = toElem x-    toElem (EightOf10 x) = toElem x-    toElem (NineOf10 x) = toElem x-    toElem (TenOf10 x) = toElem x+        $ fail "OneOf10")+    toContents (OneOf10 x) = toContents x+    toContents (TwoOf10 x) = toContents x+    toContents (ThreeOf10 x) = toContents x+    toContents (FourOf10 x) = toContents x+    toContents (FiveOf10 x) = toContents x+    toContents (SixOf10 x) = toContents x+    toContents (SevenOf10 x) = toContents x+    toContents (EightOf10 x) = toContents x+    toContents (NineOf10 x) = toContents x+    toContents (TenOf10 x) = toContents x  ---- data OneOf11 a b c d e f g h i j k@@ -187,28 +232,34 @@     | ElevenOf11 k     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k)+    => HTypeable (OneOf11 a b c d e f g h i j k)+  where      toHType m = Defined "OneOf11" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k)     => XmlContent (OneOf11 a b c d e f g h i j k)   where-    fromElem cs =+    parseContents =         (choice OneOf11 $ choice TwoOf11 $ choice ThreeOf11 $ choice FourOf11         $ choice FiveOf11 $ choice SixOf11 $ choice SevenOf11         $ choice EightOf11 $ choice NineOf11 $ choice TenOf11         $ choice ElevenOf11-        $ (\c->(Nothing,c))) cs-    toElem (OneOf11 x) = toElem x-    toElem (TwoOf11 x) = toElem x-    toElem (ThreeOf11 x) = toElem x-    toElem (FourOf11 x) = toElem x-    toElem (FiveOf11 x) = toElem x-    toElem (SixOf11 x) = toElem x-    toElem (SevenOf11 x) = toElem x-    toElem (EightOf11 x) = toElem x-    toElem (NineOf11 x) = toElem x-    toElem (TenOf11 x) = toElem x-    toElem (ElevenOf11 x) = toElem x+        $ fail "OneOf11")+    toContents (OneOf11 x) = toContents x+    toContents (TwoOf11 x) = toContents x+    toContents (ThreeOf11 x) = toContents x+    toContents (FourOf11 x) = toContents x+    toContents (FiveOf11 x) = toContents x+    toContents (SixOf11 x) = toContents x+    toContents (SevenOf11 x) = toContents x+    toContents (EightOf11 x) = toContents x+    toContents (NineOf11 x) = toContents x+    toContents (TenOf11 x) = toContents x+    toContents (ElevenOf11 x) = toContents x  ---- data OneOf12 a b c d e f g h i j k l@@ -217,29 +268,35 @@     | ElevenOf12 k | TwelveOf12 l     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l)+    => HTypeable (OneOf12 a b c d e f g h i j k l)+  where      toHType m = Defined "OneOf12" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l)     => XmlContent (OneOf12 a b c d e f g h i j k l)   where-    fromElem cs =+    parseContents =         (choice OneOf12 $ choice TwoOf12 $ choice ThreeOf12 $ choice FourOf12         $ choice FiveOf12 $ choice SixOf12 $ choice SevenOf12         $ choice EightOf12 $ choice NineOf12 $ choice TenOf12         $ choice ElevenOf12 $ choice TwelveOf12-        $ (\c->(Nothing,c))) cs-    toElem (OneOf12 x) = toElem x-    toElem (TwoOf12 x) = toElem x-    toElem (ThreeOf12 x) = toElem x-    toElem (FourOf12 x) = toElem x-    toElem (FiveOf12 x) = toElem x-    toElem (SixOf12 x) = toElem x-    toElem (SevenOf12 x) = toElem x-    toElem (EightOf12 x) = toElem x-    toElem (NineOf12 x) = toElem x-    toElem (TenOf12 x) = toElem x-    toElem (ElevenOf12 x) = toElem x-    toElem (TwelveOf12 x) = toElem x+        $ fail "OneOf12")+    toContents (OneOf12 x) = toContents x+    toContents (TwoOf12 x) = toContents x+    toContents (ThreeOf12 x) = toContents x+    toContents (FourOf12 x) = toContents x+    toContents (FiveOf12 x) = toContents x+    toContents (SixOf12 x) = toContents x+    toContents (SevenOf12 x) = toContents x+    toContents (EightOf12 x) = toContents x+    toContents (NineOf12 x) = toContents x+    toContents (TenOf12 x) = toContents x+    toContents (ElevenOf12 x) = toContents x+    toContents (TwelveOf12 x) = toContents x  ---- data OneOf13 a b c d e f g h i j k l m@@ -248,30 +305,36 @@     | ElevenOf13 k | TwelveOf13 l | ThirteenOf13 m     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m)+    => HTypeable (OneOf13 a b c d e f g h i j k l m)+  where      toHType m = Defined "OneOf13" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m)     => XmlContent (OneOf13 a b c d e f g h i j k l m)   where-    fromElem cs =+    parseContents =         (choice OneOf13 $ choice TwoOf13 $ choice ThreeOf13 $ choice FourOf13         $ choice FiveOf13 $ choice SixOf13 $ choice SevenOf13         $ choice EightOf13 $ choice NineOf13 $ choice TenOf13         $ choice ElevenOf13 $ choice TwelveOf13 $ choice ThirteenOf13-        $ (\c->(Nothing,c))) cs-    toElem (OneOf13 x) = toElem x-    toElem (TwoOf13 x) = toElem x-    toElem (ThreeOf13 x) = toElem x-    toElem (FourOf13 x) = toElem x-    toElem (FiveOf13 x) = toElem x-    toElem (SixOf13 x) = toElem x-    toElem (SevenOf13 x) = toElem x-    toElem (EightOf13 x) = toElem x-    toElem (NineOf13 x) = toElem x-    toElem (TenOf13 x) = toElem x-    toElem (ElevenOf13 x) = toElem x-    toElem (TwelveOf13 x) = toElem x-    toElem (ThirteenOf13 x) = toElem x+        $ fail "OneOf13")+    toContents (OneOf13 x) = toContents x+    toContents (TwoOf13 x) = toContents x+    toContents (ThreeOf13 x) = toContents x+    toContents (FourOf13 x) = toContents x+    toContents (FiveOf13 x) = toContents x+    toContents (SixOf13 x) = toContents x+    toContents (SevenOf13 x) = toContents x+    toContents (EightOf13 x) = toContents x+    toContents (NineOf13 x) = toContents x+    toContents (TenOf13 x) = toContents x+    toContents (ElevenOf13 x) = toContents x+    toContents (TwelveOf13 x) = toContents x+    toContents (ThirteenOf13 x) = toContents x  ---- data OneOf14 a b c d e f g h i j k l m n@@ -280,32 +343,38 @@     | ElevenOf14 k | TwelveOf14 l | ThirteenOf14 m | FourteenOf14 n     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m,HTypeable n)+    => HTypeable (OneOf14 a b c d e f g h i j k l m n)+  where      toHType m = Defined "OneOf14" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m,XmlContent n)     => XmlContent (OneOf14 a b c d e f g h i j k l m n)   where-    fromElem cs =+    parseContents =         (choice OneOf14 $ choice TwoOf14 $ choice ThreeOf14 $ choice FourOf14         $ choice FiveOf14 $ choice SixOf14 $ choice SevenOf14         $ choice EightOf14 $ choice NineOf14 $ choice TenOf14         $ choice ElevenOf14 $ choice TwelveOf14 $ choice ThirteenOf14         $ choice FourteenOf14-        $ (\c->(Nothing,c))) cs-    toElem (OneOf14 x) = toElem x-    toElem (TwoOf14 x) = toElem x-    toElem (ThreeOf14 x) = toElem x-    toElem (FourOf14 x) = toElem x-    toElem (FiveOf14 x) = toElem x-    toElem (SixOf14 x) = toElem x-    toElem (SevenOf14 x) = toElem x-    toElem (EightOf14 x) = toElem x-    toElem (NineOf14 x) = toElem x-    toElem (TenOf14 x) = toElem x-    toElem (ElevenOf14 x) = toElem x-    toElem (TwelveOf14 x) = toElem x-    toElem (ThirteenOf14 x) = toElem x-    toElem (FourteenOf14 x) = toElem x+        $ fail "OneOf14")+    toContents (OneOf14 x) = toContents x+    toContents (TwoOf14 x) = toContents x+    toContents (ThreeOf14 x) = toContents x+    toContents (FourOf14 x) = toContents x+    toContents (FiveOf14 x) = toContents x+    toContents (SixOf14 x) = toContents x+    toContents (SevenOf14 x) = toContents x+    toContents (EightOf14 x) = toContents x+    toContents (NineOf14 x) = toContents x+    toContents (TenOf14 x) = toContents x+    toContents (ElevenOf14 x) = toContents x+    toContents (TwelveOf14 x) = toContents x+    toContents (ThirteenOf14 x) = toContents x+    toContents (FourteenOf14 x) = toContents x  ---- data OneOf15 a b c d e f g h i j k l m n o@@ -315,33 +384,39 @@     | FifteenOf15 o     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m,HTypeable n,HTypeable o)+    => HTypeable (OneOf15 a b c d e f g h i j k l m n o)+  where      toHType m = Defined "OneOf15" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m,XmlContent n,XmlContent o)     => XmlContent (OneOf15 a b c d e f g h i j k l m n o)   where-    fromElem cs =+    parseContents =         (choice OneOf15 $ choice TwoOf15 $ choice ThreeOf15 $ choice FourOf15         $ choice FiveOf15 $ choice SixOf15 $ choice SevenOf15         $ choice EightOf15 $ choice NineOf15 $ choice TenOf15         $ choice ElevenOf15 $ choice TwelveOf15 $ choice ThirteenOf15         $ choice FourteenOf15 $ choice FifteenOf15-        $ (\c->(Nothing,c))) cs-    toElem (OneOf15 x) = toElem x-    toElem (TwoOf15 x) = toElem x-    toElem (ThreeOf15 x) = toElem x-    toElem (FourOf15 x) = toElem x-    toElem (FiveOf15 x) = toElem x-    toElem (SixOf15 x) = toElem x-    toElem (SevenOf15 x) = toElem x-    toElem (EightOf15 x) = toElem x-    toElem (NineOf15 x) = toElem x-    toElem (TenOf15 x) = toElem x-    toElem (ElevenOf15 x) = toElem x-    toElem (TwelveOf15 x) = toElem x-    toElem (ThirteenOf15 x) = toElem x-    toElem (FourteenOf15 x) = toElem x-    toElem (FifteenOf15 x) = toElem x+        $ fail "OneOf15")+    toContents (OneOf15 x) = toContents x+    toContents (TwoOf15 x) = toContents x+    toContents (ThreeOf15 x) = toContents x+    toContents (FourOf15 x) = toContents x+    toContents (FiveOf15 x) = toContents x+    toContents (SixOf15 x) = toContents x+    toContents (SevenOf15 x) = toContents x+    toContents (EightOf15 x) = toContents x+    toContents (NineOf15 x) = toContents x+    toContents (TenOf15 x) = toContents x+    toContents (ElevenOf15 x) = toContents x+    toContents (TwelveOf15 x) = toContents x+    toContents (ThirteenOf15 x) = toContents x+    toContents (FourteenOf15 x) = toContents x+    toContents (FifteenOf15 x) = toContents x  ---- data OneOf16 a b c d e f g h i j k l m n o p@@ -351,35 +426,42 @@     | FifteenOf16 o | SixteenOf16 p     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m,HTypeable n,HTypeable o+          ,HTypeable p)+    => HTypeable (OneOf16 a b c d e f g h i j k l m n o p)+  where      toHType m = Defined "OneOf16" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m,XmlContent n,XmlContent o           ,XmlContent p)     => XmlContent (OneOf16 a b c d e f g h i j k l m n o p)   where-    fromElem cs =+    parseContents =         (choice OneOf16 $ choice TwoOf16 $ choice ThreeOf16 $ choice FourOf16         $ choice FiveOf16 $ choice SixOf16 $ choice SevenOf16         $ choice EightOf16 $ choice NineOf16 $ choice TenOf16         $ choice ElevenOf16 $ choice TwelveOf16 $ choice ThirteenOf16         $ choice FourteenOf16 $ choice FifteenOf16 $ choice SixteenOf16-        $ (\c->(Nothing,c))) cs-    toElem (OneOf16 x) = toElem x-    toElem (TwoOf16 x) = toElem x-    toElem (ThreeOf16 x) = toElem x-    toElem (FourOf16 x) = toElem x-    toElem (FiveOf16 x) = toElem x-    toElem (SixOf16 x) = toElem x-    toElem (SevenOf16 x) = toElem x-    toElem (EightOf16 x) = toElem x-    toElem (NineOf16 x) = toElem x-    toElem (TenOf16 x) = toElem x-    toElem (ElevenOf16 x) = toElem x-    toElem (TwelveOf16 x) = toElem x-    toElem (ThirteenOf16 x) = toElem x-    toElem (FourteenOf16 x) = toElem x-    toElem (FifteenOf16 x) = toElem x-    toElem (SixteenOf16 x) = toElem x+        $ fail "OneOf16")+    toContents (OneOf16 x) = toContents x+    toContents (TwoOf16 x) = toContents x+    toContents (ThreeOf16 x) = toContents x+    toContents (FourOf16 x) = toContents x+    toContents (FiveOf16 x) = toContents x+    toContents (SixOf16 x) = toContents x+    toContents (SevenOf16 x) = toContents x+    toContents (EightOf16 x) = toContents x+    toContents (NineOf16 x) = toContents x+    toContents (TenOf16 x) = toContents x+    toContents (ElevenOf16 x) = toContents x+    toContents (TwelveOf16 x) = toContents x+    toContents (ThirteenOf16 x) = toContents x+    toContents (FourteenOf16 x) = toContents x+    toContents (FifteenOf16 x) = toContents x+    toContents (SixteenOf16 x) = toContents x  ---- data OneOf17 a b c d e f g h i j k l m n o p q@@ -389,37 +471,44 @@     | FifteenOf17 o | SixteenOf17 p | SeventeenOf17 q     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m,HTypeable n,HTypeable o+          ,HTypeable p,HTypeable q)+    => HTypeable (OneOf17 a b c d e f g h i j k l m n o p q)+  where      toHType m = Defined "OneOf17" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m,XmlContent n,XmlContent o           ,XmlContent p,XmlContent q)     => XmlContent (OneOf17 a b c d e f g h i j k l m n o p q)   where-    fromElem cs =+    parseContents =         (choice OneOf17 $ choice TwoOf17 $ choice ThreeOf17 $ choice FourOf17         $ choice FiveOf17 $ choice SixOf17 $ choice SevenOf17         $ choice EightOf17 $ choice NineOf17 $ choice TenOf17         $ choice ElevenOf17 $ choice TwelveOf17 $ choice ThirteenOf17         $ choice FourteenOf17 $ choice FifteenOf17 $ choice SixteenOf17         $ choice SeventeenOf17-        $ (\c->(Nothing,c))) cs-    toElem (OneOf17 x) = toElem x-    toElem (TwoOf17 x) = toElem x-    toElem (ThreeOf17 x) = toElem x-    toElem (FourOf17 x) = toElem x-    toElem (FiveOf17 x) = toElem x-    toElem (SixOf17 x) = toElem x-    toElem (SevenOf17 x) = toElem x-    toElem (EightOf17 x) = toElem x-    toElem (NineOf17 x) = toElem x-    toElem (TenOf17 x) = toElem x-    toElem (ElevenOf17 x) = toElem x-    toElem (TwelveOf17 x) = toElem x-    toElem (ThirteenOf17 x) = toElem x-    toElem (FourteenOf17 x) = toElem x-    toElem (FifteenOf17 x) = toElem x-    toElem (SixteenOf17 x) = toElem x-    toElem (SeventeenOf17 x) = toElem x+        $ fail "OneOf17")+    toContents (OneOf17 x) = toContents x+    toContents (TwoOf17 x) = toContents x+    toContents (ThreeOf17 x) = toContents x+    toContents (FourOf17 x) = toContents x+    toContents (FiveOf17 x) = toContents x+    toContents (SixOf17 x) = toContents x+    toContents (SevenOf17 x) = toContents x+    toContents (EightOf17 x) = toContents x+    toContents (NineOf17 x) = toContents x+    toContents (TenOf17 x) = toContents x+    toContents (ElevenOf17 x) = toContents x+    toContents (TwelveOf17 x) = toContents x+    toContents (ThirteenOf17 x) = toContents x+    toContents (FourteenOf17 x) = toContents x+    toContents (FifteenOf17 x) = toContents x+    toContents (SixteenOf17 x) = toContents x+    toContents (SeventeenOf17 x) = toContents x  ---- data OneOf18 a b c d e f g h i j k l m n o p q r@@ -429,38 +518,45 @@     | FifteenOf18 o | SixteenOf18 p | SeventeenOf18 q | EighteenOf18 r     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m,HTypeable n,HTypeable o+          ,HTypeable p,HTypeable q,HTypeable r)+    => HTypeable (OneOf18 a b c d e f g h i j k l m n o p q r)+  where      toHType m = Defined "OneOf18" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m,XmlContent n,XmlContent o           ,XmlContent p,XmlContent q,XmlContent r)     => XmlContent (OneOf18 a b c d e f g h i j k l m n o p q r)   where-    fromElem cs =+    parseContents =         (choice OneOf18 $ choice TwoOf18 $ choice ThreeOf18 $ choice FourOf18         $ choice FiveOf18 $ choice SixOf18 $ choice SevenOf18         $ choice EightOf18 $ choice NineOf18 $ choice TenOf18         $ choice ElevenOf18 $ choice TwelveOf18 $ choice ThirteenOf18         $ choice FourteenOf18 $ choice FifteenOf18 $ choice SixteenOf18         $ choice SeventeenOf18 $ choice EighteenOf18-        $ (\c->(Nothing,c))) cs-    toElem (OneOf18 x) = toElem x-    toElem (TwoOf18 x) = toElem x-    toElem (ThreeOf18 x) = toElem x-    toElem (FourOf18 x) = toElem x-    toElem (FiveOf18 x) = toElem x-    toElem (SixOf18 x) = toElem x-    toElem (SevenOf18 x) = toElem x-    toElem (EightOf18 x) = toElem x-    toElem (NineOf18 x) = toElem x-    toElem (TenOf18 x) = toElem x-    toElem (ElevenOf18 x) = toElem x-    toElem (TwelveOf18 x) = toElem x-    toElem (ThirteenOf18 x) = toElem x-    toElem (FourteenOf18 x) = toElem x-    toElem (FifteenOf18 x) = toElem x-    toElem (SixteenOf18 x) = toElem x-    toElem (SeventeenOf18 x) = toElem x-    toElem (EighteenOf18 x) = toElem x+        $ fail "OneOf18")+    toContents (OneOf18 x) = toContents x+    toContents (TwoOf18 x) = toContents x+    toContents (ThreeOf18 x) = toContents x+    toContents (FourOf18 x) = toContents x+    toContents (FiveOf18 x) = toContents x+    toContents (SixOf18 x) = toContents x+    toContents (SevenOf18 x) = toContents x+    toContents (EightOf18 x) = toContents x+    toContents (NineOf18 x) = toContents x+    toContents (TenOf18 x) = toContents x+    toContents (ElevenOf18 x) = toContents x+    toContents (TwelveOf18 x) = toContents x+    toContents (ThirteenOf18 x) = toContents x+    toContents (FourteenOf18 x) = toContents x+    toContents (FifteenOf18 x) = toContents x+    toContents (SixteenOf18 x) = toContents x+    toContents (SeventeenOf18 x) = toContents x+    toContents (EighteenOf18 x) = toContents x  ---- data OneOf19 a b c d e f g h i j k l m n o p q r s@@ -471,39 +567,46 @@     | NineteenOf19 s     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m,HTypeable n,HTypeable o+          ,HTypeable p,HTypeable q,HTypeable r,HTypeable s)+    => HTypeable (OneOf19 a b c d e f g h i j k l m n o p q r s)+  where      toHType m = Defined "OneOf19" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m,XmlContent n,XmlContent o           ,XmlContent p,XmlContent q,XmlContent r,XmlContent s)     => XmlContent (OneOf19 a b c d e f g h i j k l m n o p q r s)   where-    fromElem cs =+    parseContents =         (choice OneOf19 $ choice TwoOf19 $ choice ThreeOf19 $ choice FourOf19         $ choice FiveOf19 $ choice SixOf19 $ choice SevenOf19         $ choice EightOf19 $ choice NineOf19 $ choice TenOf19         $ choice ElevenOf19 $ choice TwelveOf19 $ choice ThirteenOf19         $ choice FourteenOf19 $ choice FifteenOf19 $ choice SixteenOf19         $ choice SeventeenOf19 $ choice EighteenOf19 $ choice NineteenOf19-        $ (\c->(Nothing,c))) cs-    toElem (OneOf19 x) = toElem x-    toElem (TwoOf19 x) = toElem x-    toElem (ThreeOf19 x) = toElem x-    toElem (FourOf19 x) = toElem x-    toElem (FiveOf19 x) = toElem x-    toElem (SixOf19 x) = toElem x-    toElem (SevenOf19 x) = toElem x-    toElem (EightOf19 x) = toElem x-    toElem (NineOf19 x) = toElem x-    toElem (TenOf19 x) = toElem x-    toElem (ElevenOf19 x) = toElem x-    toElem (TwelveOf19 x) = toElem x-    toElem (ThirteenOf19 x) = toElem x-    toElem (FourteenOf19 x) = toElem x-    toElem (FifteenOf19 x) = toElem x-    toElem (SixteenOf19 x) = toElem x-    toElem (SeventeenOf19 x) = toElem x-    toElem (EighteenOf19 x) = toElem x-    toElem (NineteenOf19 x) = toElem x+        $ fail "OneOf19")+    toContents (OneOf19 x) = toContents x+    toContents (TwoOf19 x) = toContents x+    toContents (ThreeOf19 x) = toContents x+    toContents (FourOf19 x) = toContents x+    toContents (FiveOf19 x) = toContents x+    toContents (SixOf19 x) = toContents x+    toContents (SevenOf19 x) = toContents x+    toContents (EightOf19 x) = toContents x+    toContents (NineOf19 x) = toContents x+    toContents (TenOf19 x) = toContents x+    toContents (ElevenOf19 x) = toContents x+    toContents (TwelveOf19 x) = toContents x+    toContents (ThirteenOf19 x) = toContents x+    toContents (FourteenOf19 x) = toContents x+    toContents (FifteenOf19 x) = toContents x+    toContents (SixteenOf19 x) = toContents x+    toContents (SeventeenOf19 x) = toContents x+    toContents (EighteenOf19 x) = toContents x+    toContents (NineteenOf19 x) = toContents x  ---- data OneOf20 a b c d e f g h i j k l m n o p q r s t@@ -514,13 +617,20 @@     | NineteenOf20 s | TwentyOf20 t     deriving (Eq,Show) +instance (HTypeable a,HTypeable b,HTypeable c,HTypeable d,HTypeable e+          ,HTypeable f,HTypeable g,HTypeable h,HTypeable i,HTypeable j+          ,HTypeable k,HTypeable l,HTypeable m,HTypeable n,HTypeable o+          ,HTypeable p,HTypeable q,HTypeable r,HTypeable s,HTypeable t)+    => HTypeable (OneOf20 a b c d e f g h i j k l m n o p q r s t)+  where      toHType m = Defined "OneOf20" [] []+ instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e           ,XmlContent f,XmlContent g,XmlContent h,XmlContent i,XmlContent j           ,XmlContent k,XmlContent l,XmlContent m,XmlContent n,XmlContent o           ,XmlContent p,XmlContent q,XmlContent r,XmlContent s,XmlContent t)     => XmlContent (OneOf20 a b c d e f g h i j k l m n o p q r s t)   where-    fromElem cs =+    parseContents =         (choice OneOf20 $ choice TwoOf20 $ choice ThreeOf20 $ choice FourOf20         $ choice FiveOf20 $ choice SixOf20 $ choice SevenOf20         $ choice EightOf20 $ choice NineOf20 $ choice TenOf20@@ -528,26 +638,26 @@         $ choice FourteenOf20 $ choice FifteenOf20 $ choice SixteenOf20         $ choice SeventeenOf20 $ choice EighteenOf20 $ choice NineteenOf20         $ choice TwentyOf20-        $ (\c->(Nothing,c))) cs-    toElem (OneOf20 x) = toElem x-    toElem (TwoOf20 x) = toElem x-    toElem (ThreeOf20 x) = toElem x-    toElem (FourOf20 x) = toElem x-    toElem (FiveOf20 x) = toElem x-    toElem (SixOf20 x) = toElem x-    toElem (SevenOf20 x) = toElem x-    toElem (EightOf20 x) = toElem x-    toElem (NineOf20 x) = toElem x-    toElem (TenOf20 x) = toElem x-    toElem (ElevenOf20 x) = toElem x-    toElem (TwelveOf20 x) = toElem x-    toElem (ThirteenOf20 x) = toElem x-    toElem (FourteenOf20 x) = toElem x-    toElem (FifteenOf20 x) = toElem x-    toElem (SixteenOf20 x) = toElem x-    toElem (SeventeenOf20 x) = toElem x-    toElem (EighteenOf20 x) = toElem x-    toElem (NineteenOf20 x) = toElem x-    toElem (TwentyOf20 x) = toElem x+        $ fail "OneOf20")+    toContents (OneOf20 x) = toContents x+    toContents (TwoOf20 x) = toContents x+    toContents (ThreeOf20 x) = toContents x+    toContents (FourOf20 x) = toContents x+    toContents (FiveOf20 x) = toContents x+    toContents (SixOf20 x) = toContents x+    toContents (SevenOf20 x) = toContents x+    toContents (EightOf20 x) = toContents x+    toContents (NineOf20 x) = toContents x+    toContents (TenOf20 x) = toContents x+    toContents (ElevenOf20 x) = toContents x+    toContents (TwelveOf20 x) = toContents x+    toContents (ThirteenOf20 x) = toContents x+    toContents (FourteenOf20 x) = toContents x+    toContents (FifteenOf20 x) = toContents x+    toContents (SixteenOf20 x) = toContents x+    toContents (SeventeenOf20 x) = toContents x+    toContents (EighteenOf20 x) = toContents x+    toContents (NineteenOf20 x) = toContents x+    toContents (TwentyOf20 x) = toContents x  ----
src/Text/XML/HaXml/Parse.hs view
@@ -1,3 +1,4 @@+{-# OPTIONS -cpp #-} -- | A non-validating XML parser.  For the input grammar, see --   <http://www.w3.org/TR/REC-xml>. module Text.XML.HaXml.Parse@@ -6,6 +7,18 @@     xmlParse, xmlParse'   -- * Parse just a DTD   , dtdParse, dtdParse'+  -- * Parse a partial document+  , xmlParseWith+  -- * Individual parsers for use with /xmlParseWith/ and module SAX+  , document, element, content+  , comment, cdsect, chardata+  , reference, doctypedecl+  , processinginstruction+  , elemtag, name, tok+  , elemOpenTag, elemCloseTag+  , emptySTs, XParser+  -- * These general utility functions don't belong here+  , fst3, snd3, thd3   ) where  -- An XML parser, written using a slightly extended version of the@@ -25,8 +38,9 @@ import Numeric (readDec,readHex)  import Text.XML.HaXml.Types+import Text.XML.HaXml.Posn import Text.XML.HaXml.Lex-import Text.ParserCombinators.HuttonMeijerWallace+import Text.ParserCombinators.Poly.NoLeak.State   #if ( defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 502 ) || \@@ -61,13 +75,13 @@ -- | To parse a whole document, @xmlParse file content@ takes a filename --   (for generating error reports) and the string content of that file. --   A parse error causes program failure, with message to stderr.-xmlParse :: String -> String -> Document+xmlParse :: String -> String -> Document Posn  -- | To parse a whole document, @xmlParse' file content@ takes a filename --   (for generating error reports) and the string content of that file. --   Any parse error message is passed back to the caller through the --   @Either@ type.-xmlParse' :: String -> String -> Either String Document+xmlParse' :: String -> String -> Either String (Document Posn)  -- | To parse just a DTD, @dtdParse file content@ takes a filename --   (for generating error reports) and the string content of that@@ -84,28 +98,26 @@ xmlParse  name  = Prelude.either error id . xmlParse' name dtdParse  name  = Prelude.either error id . dtdParse' name -xmlParse' name  = sanitycheck . papply' (toEOF document) emptySTs . xmlLex name-dtdParse' name  = sanitycheck . papply' justDTD  emptySTs . xmlLex name+xmlParse' name  = fst3 . runParser (toEOF document) emptySTs . xmlLex name+dtdParse' name  = fst3 . runParser justDTD  emptySTs . xmlLex name -{--sanitycheck :: Show p => [(a,s,[(p,t)])] -> a-sanitycheck [] = error "***Error at line 0: document not XML?"-sanitycheck ((x,_,[]):_) = x-sanitycheck ((x,_,s@((n,_):_)):xs) =-  x `debug` ("***Warning at "++show n++": data beyond end of parsed document")--}+toEOF = id	-- there are other possible implementations... -sanitycheck :: Show p => Either String [(a,s,[Either String (p,t)])]-                         -> Either String a-sanitycheck (Left err)          = Left err-sanitycheck (Right [])          = Left "***Error, no parse: document not XML?"-sanitycheck (Right ((x,_,_):_)) = Right x+-- | To parse a partial document, e.g. from an XML-based stream protocol,+--   where you may later want to get more document elements from the same+--   stream.  Arguments are: a parser for the item you want, and the+--   already-lexed input to parse from.  Returns the item you wanted+--   (or an error message), plus the remainder of the input.+xmlParseWith :: XParser a -> [(Posn,TokenT)]+                -> (Either String a, [(Posn,TokenT)])+xmlParseWith p = (\(v,_,s)->(v,s)) . runParser p emptySTs   ---- Symbol table stuff ----  type SymTabs = (SymTab PEDef, SymTab EntityDef) +-- | Some empty symbol tables for GE and PE references. emptySTs :: SymTabs emptySTs = (emptyST, emptyST) @@ -124,9 +136,13 @@     flatten (EVString s)          = s     flatten (EVRef (RefEntity r)) = "&" ++r++";"     flatten (EVRef (RefChar r))   = "&#"++show r++";"+ -- flatten (EVPERef n)           = "%" ++n++";"   ---- Misc ----+fst3 :: (a,b,c) -> a+snd3 :: (a,b,c) -> b+thd3 :: (a,b,c) -> c  fst3 (a,_,_) = a snd3 (_,a,_) = a@@ -134,82 +150,115 @@   ---- Auxiliary Parsing Functions -----type XParser a = Parser SymTabs (Posn,TokenT) String a +-- | XParser is just a specialisation of the PolyState parser.+type XParser a = Parser SymTabs (Posn,TokenT) a++-- | Return the next token from the input only if it matches the given token.+tok :: TokenT -> XParser TokenT+tok t = do (p,t') <- next+           case t' of TokError _    -> report failBad (show t) p t'+                      _ | t'==t     -> return t+                        | otherwise -> report fail (show t) p t'+nottok :: [TokenT] -> XParser TokenT+nottok ts = do (p,t) <- next+               if t`elem`ts then report fail ("no "++show t) p t+                            else return t++-- | Return just a name, e.g. element name, attribute name. name :: XParser Name-name = do {(p,TokName s) <- item; return s}+name = do (p,tok) <- next+          case tok of+            TokName s  -> return s+            TokError _ -> report failBad "a name" p tok+            _          -> report fail "a name" p tok  string, freetext :: XParser String-string   = do {(p,TokName s) <- item; return s}-freetext = do {(p,TokFreeText s) <- item; return s}+string   = do (p,t) <- next+              case t of TokName s -> return s+                        _         -> report fail "text" p t+freetext = do (p,t) <- next+              case t of TokFreeText s -> return s+                        _             -> report fail "text" p t  maybe :: XParser a -> XParser (Maybe a) maybe p =-    ( p >>= return . Just) ++++    ( p >>= return . Just) `onFail`     ( return Nothing)  either :: XParser a -> XParser b -> XParser (Either a b) either p q =-    ( p >>= return . Left) ++++    ( p >>= return . Left) `onFail`     ( q >>= return . Right)  word :: String -> XParser ()-word s = P (\st inp-> case inp of {-               (Left err: _) -> Left err;-               (Right (p,TokName n):ts) -> if s==n then Right [((),st,ts)]-                                                   else Right [];-               (Right (p,TokFreeText n):ts) -> if s==n then Right [((),st,ts)]-                                                       else Right [];-               ts -> Right [] } )+word s = do { x <- next+            ; case x of+                (p,TokName n)     | s==n -> return ()+                (p,TokFreeText n) | s==n -> return ()+                (p,t@(TokError _)) -> report failBad (show s) p t+                (p,t) -> report fail (show s) p t+            } -posn :: XParser Posn-posn = P (\st inp-> case inp of {-                     (Left err:_)    -> Left  err;-                     (Right (p,_):_) -> Right [(p,st,inp)];-                     []              -> Right [] } )+posn = do { x@(p,_) <- next+          ; reparse [x]+          ; return p+          }  nmtoken :: XParser NmToken-nmtoken = (string +++ freetext)+nmtoken = (string `onFail` freetext) +failP, failBadP :: String -> XParser a+failP msg = do { p <- posn; fail (msg++"\n    at "++show p) }+failBadP msg = do { p <- posn; failBad (msg++"\n    at "++show p) } +report :: (String->XParser a) -> String -> Posn -> TokenT -> XParser a+report fail exp p t = fail ("Expected "++exp++" but found "++show t+                           ++"\n  in "++show p)++adjustErrP :: XParser a -> (String->String) -> XParser a+p `adjustErrP` f = p `onFail` do pn <- posn+                                 (p `adjustErr` f) `adjustErr` (++show pn)+ peRef :: XParser a -> XParser a peRef p =-    p +++-    ( do pn <- posn-         n <- pereference-         tr <- stquery (lookupPE n) `debug` ("Looking up %"++n)-         case tr of-           (Just (PEDefEntityValue ev)) ->+    p `onFail`+    do pn <- posn+       n <- pereference+       tr <- stQuery (lookupPE n) `debug` ("Looking up %"++n)+       case tr of+           Just (PEDefEntityValue ev) ->                       do reparse (xmlReLex (posInNewCxt ("macro %"++n++";")                                                         (Just pn))                                            (flattenEV ev))                                `debug` ("  defn:  "++flattenEV ev)                          peRef p-           (Just (PEDefExternalID (PUBLIC _ (SystemLiteral f)))) ->+           Just (PEDefExternalID (PUBLIC _ (SystemLiteral f))) ->                       do let val = unsafePerformIO (readFile f)                          reparse (xmlReLex (posInNewCxt ("file "++f)                                                         (Just pn)) val)                                `debug` ("  reading from file "++f)                          peRef p-           (Just (PEDefExternalID (SYSTEM (SystemLiteral f)))) ->+           Just (PEDefExternalID (SYSTEM (SystemLiteral f))) ->                       do let val = unsafePerformIO (readFile f)                          reparse (xmlReLex (posInNewCxt ("file "++f)                                                         (Just pn)) val)                                `debug` ("  reading from file "++f)                          peRef p-           Nothing -> mzero `elserror` "PEReference use before definition" )+           Nothing -> fail ("PEReference use before definition: "++"%"++n++";"+                           ++"\n    at "++show pn)  blank :: XParser a -> XParser a blank p =-    p +++-    ( do n <- pereference-         tr <- stquery (lookupPE n) `debug` ("Looking up %"++n++" (is blank?)")-         case tr of-           (Just (PEDefEntityValue ev))+    p `onFail`+    do n <- pereference+       tr <- stQuery (lookupPE n) `debug` ("Looking up %"++n++" (is blank?)")+       case tr of+           Just (PEDefEntityValue ev)                     | all isSpace (flattenEV ev)  ->                             do blank p `debug` "Empty macro definition"-           (Just _) -> mzero-           Nothing  -> mzero `elserror` "PEReference use before definition" )+           Just _  -> failP ("expected a blank PERef macro: "++"%"++n++";")+           Nothing -> failP ("PEReference use before definition: "++"%"++n++";")   @@ -217,96 +266,112 @@  justDTD :: XParser (Maybe DocTypeDecl) justDTD =-  ( do (ExtSubset _ ds) <- extsubset `debug` "Trying external subset"-       if null ds then mzero+  do (ExtSubset _ ds) <- extsubset `debug` "Trying external subset"+     if null ds then fail "empty"          else return (Just (DTD "extsubset" Nothing (concatMap extract ds)))-  ) +++-  ( do (Prolog _ _ dtd _) <- prolog-       return dtd )+  `onFail`+  do (Prolog _ _ dtd _) <- prolog+     return dtd  where extract (ExtMarkupDecl m) = [m]        extract (ExtConditionalSect (IncludeSect i)) = concatMap extract i        extract (ExtConditionalSect (IgnoreSect i)) = [] -document :: XParser Document+-- | Return an entire XML document including prolog and trailing junk.+document :: XParser (Document Posn) document = do-    p <- prolog `elserror` "unrecognisable XML prolog"-    e <- element `elserror` "no toplevel document element"+    p <- prolog `adjustErr` ("unrecognisable XML prolog\n"++)+    e <- element     ms <- many misc-    (_,ge) <- stget+    (_,ge) <- stGet     return (Document p ge e ms) +-- | Return an XML comment. comment :: XParser Comment comment = do-    bracket (tok TokCommentOpen) freetext (tok TokCommentClose)+    bracket (tok TokCommentOpen) (tok TokCommentClose) freetext+--  tok TokCommentOpen+--  commit $ do+--    c <- freetext+--    tok TokCommentClose+--    return c +-- | Parse a processing instruction. processinginstruction :: XParser ProcessingInstruction processinginstruction = do     tok TokPIOpen-    n <- string  `elserror` "processing instruction has no target"-    f <- freetext-    tok TokPIClose `elserror` "missing ?>"-    return (n, f)+    commit $ do+      n <- string  `onFail` failP "processing instruction has no target"+      f <- freetext+      tok TokPIClose `onFail` failP ("missing ?> in <?"++n)+      return (n, f)  cdsect :: XParser CDSect cdsect = do     tok TokSectionOpen-    bracket (tok (TokSection CDATAx)) chardata (tok TokSectionClose)+    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata  prolog :: XParser Prolog prolog = do-    x <- maybe xmldecl-    m1 <- many misc+    x   <- maybe xmldecl+    m1  <- many misc     dtd <- maybe doctypedecl-    m2 <- many misc+    m2  <- many misc     return (Prolog x m1 dtd m2)  xmldecl :: XParser XMLDecl xmldecl = do     tok TokPIOpen-    (word "xml" +++ word "XML")+    (word "xml" `onFail` word "XML")     p <- posn     s <- freetext-    tok TokPIClose `elserror` "missing ?> in <?xml ...?>"-    raise ((papply' aux emptySTs . xmlReLex p) s)+    tok TokPIClose `onFail` failBadP "missing ?> in <?xml ...?>"+    raise ((runParser aux emptySTs . xmlReLex p) s)   where     aux = do-      v <- versioninfo  `elserror` "missing XML version info"-      e <- maybe encodingdecl-      s <- maybe sddecl-      return (XMLDecl v e s)-    raise (Left err) = mzero `elserror` err-    raise (Right ok) = (return . fst3 . head) ok+        v <- versioninfo  `onFail` failP "missing XML version info"+        e <- maybe encodingdecl+        s <- maybe sddecl+        return (XMLDecl v e s)+    raise (Left err, _, _) = failP err+    raise (Right ok, _, _) = return ok  versioninfo :: XParser VersionInfo versioninfo = do-    (word "version" +++ word "VERSION")+    (word "version" `onFail` word "VERSION")     tok TokEqual-    bracket (tok TokQuote) freetext (tok TokQuote)+    bracket (tok TokQuote) (tok TokQuote) freetext  misc :: XParser Misc misc =-    ( comment >>= return . Comment) +++-    ( processinginstruction >>= return . PI)+    oneOf' [ ("<!--comment-->",  comment >>= return . Comment)+           , ("<?PI?>",          processinginstruction >>= return . PI)+           ] +-- | Return a DOCTYPE decl, indicating a DTD. doctypedecl :: XParser DocTypeDecl doctypedecl = do     tok TokSpecialOpen     tok (TokSpecial DOCTYPEx)-    n <- name-    eid <- maybe externalid-    es <- maybe (bracket (tok TokSqOpen)-                         (many (peRef markupdecl))-                         (tok TokSqClose))-    blank (tok TokAnyClose)  `elserror` "missing > in DOCTYPE decl"-    return (DTD n eid (case es of { Nothing -> []; Just e -> e }))+    commit $ do+      n   <- name+      eid <- maybe externalid+      es  <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)+                            (many (peRef markupdecl)))+      blank (tok TokAnyClose)  `onFail` failP "missing > in DOCTYPE decl"+      return (DTD n eid (case es of { Nothing -> []; Just e -> e })) +-- | Return a DTD markup decl, e.g. ELEMENT, ATTLIST, etc markupdecl :: XParser MarkupDecl markupdecl =-    ( elementdecl >>= return . Element) +++-    ( attlistdecl >>= return . AttList) +++-    ( entitydecl >>= return . Entity) +++-    ( notationdecl >>= return . Notation) +++-    ( misc >>= return . MarkupMisc)+  oneOf' [ ("ELEMENT",  elementdecl  >>= return . Element)+         , ("ATTLIST",  attlistdecl  >>= return . AttList)+         , ("ENTITY",   entitydecl   >>= return . Entity)+         , ("NOTATION", notationdecl >>= return . Notation)+         , ("misc",     misc         >>= return . MarkupMisc)+         ]+    `adjustErrP`+          ("when looking for a markup decl,\n"++)+ --       (\  (ELEMENT, ATTLIST, ENTITY, NOTATION, <!--comment-->, or <?PI?>")  extsubset :: XParser ExtSubset extsubset = do@@ -316,111 +381,169 @@  extsubsetdecl :: XParser ExtSubsetDecl extsubsetdecl =-    ( markupdecl >>= return . ExtMarkupDecl) ++++    ( markupdecl >>= return . ExtMarkupDecl) `onFail`     ( conditionalsect >>= return . ExtConditionalSect)  sddecl :: XParser SDDecl sddecl = do-    (word "standalone" +++ word "STANDALONE")-    tok TokEqual `elserror` "missing = in 'standalone' decl"-    bracket (tok TokQuote)-            ( (word "yes" >> return True) +++-              (word "no" >> return False) `elserror`-              "'standalone' decl requires 'yes' or 'no' value" )-            (tok TokQuote)+    (word "standalone" `onFail` word "STANDALONE")+    commit $ do+      tok TokEqual `onFail` failP "missing = in 'standalone' decl"+      bracket (tok TokQuote) (tok TokQuote)+              ( (word "yes" >> return True) `onFail`+                (word "no" >> return False) `onFail`+                failP "'standalone' decl requires 'yes' or 'no' value" ) -element :: XParser Element+{-+element :: XParser (Element Posn) element = do     tok TokAnyOpen     (ElemTag n as) <- elemtag-    (( do tok TokEndClose-          return (Elem n as [])) +++-     ( do tok TokAnyClose-          cs <- many content-          p <- posn-          m <- bracket (tok TokEndOpen) name (tok TokAnyClose)-          checkmatch p n m-          return (Elem n as cs))-     `elserror` "missing > or /> in element tag")+    oneOf' [ ("self-closing tag <"++n++"/>"+             ,  do tok TokEndClose+                   return (Elem n as []))+           , ("after open tag <"++n++">"+             ,  do tok TokAnyClose+                   cs <- many content+                   p  <- posn+                   m  <- bracket (tok TokEndOpen) (tok TokAnyClose) name+                   checkmatch p n m+                   return (Elem n as cs))+           ] `adjustErr` (("in element tag "++n++",\n")++)+-} +-- | Return a complete element including all its inner content.+element :: XParser (Element Posn)+element = do+    tok TokAnyOpen+    (ElemTag n as) <- elemtag+    ( do tok TokEndClose+         commit (return (Elem n as []))+        `onFail`+      do tok TokAnyClose+         commit $ do+           return (Elem n as) `apply`+                 manyFinally content+                             (do p <- posn+                                 m <- bracket (tok TokEndOpen)+                                              (tok TokAnyClose) name+                                 checkmatch p n m)+      ) `adjustErrBad` (("in element tag "++n++",\n")++)+ checkmatch :: Posn -> Name -> Name -> XParser () checkmatch p n m =   if n == m then return ()-  else mzero `elserror` ("tag <"++n++"> terminated by </"++m++">")+  else failBadP ("tag <"++n++"> terminated by </"++m++">") +-- | Parse only the parts between angle brackets in an element tag. elemtag :: XParser ElemTag elemtag = do-    n <- name `elserror` "malformed element tag"+    n  <- name `adjustErrBad` ("malformed element tag\n"++)     as <- many attribute     return (ElemTag n as) +-- | For use with stream parsers - returns the complete opening element tag.+elemOpenTag :: XParser ElemTag+elemOpenTag = do+    tok TokAnyOpen+    e <- elemtag+    tok TokAnyClose+    return e++-- | For use with stream parsers - accepts a closing tag, provided it+--   matches the given element name.+elemCloseTag :: Name -> XParser ()+elemCloseTag n = do+    tok TokEndOpen+    p <- posn+    m <- name+    tok TokAnyClose+    checkmatch p n m+ attribute :: XParser Attribute attribute = do-    n <- name-    tok TokEqual `elserror` "missing = in attribute"-    v <- attvalue `elserror` "missing attvalue"+    n <- name `adjustErr` ("malformed attribute name\n"++)+    tok TokEqual `onFail` failBadP "missing = in attribute"+    v <- attvalue `onFail` failBadP "missing attvalue"     return (n,v) -content :: XParser Content+-- | Return a content particle, e.g. text, element, reference, etc+content :: XParser (Content Posn) content =-    ( element >>= return . CElem) +++-    ( chardata >>= return . CString False) +++-    ( reference >>= return . CRef) +++-    ( cdsect >>= return . CString True) +++-    ( misc >>= return . CMisc)+  do { p  <- posn+     ; c' <- content'+     ; return (c' p)+     }+  where+     content' = oneOf' [ ("element",   element   >>= return . CElem)+                       , ("chardata",  chardata  >>= return . CString False)+                       , ("reference", reference >>= return . CRef)+                       , ("CDATA",     cdsect    >>= return . CString True)+                       , ("misc",      misc      >>= return . CMisc)+                       ]+                  `adjustErrP` ("when looking for a content item,\n"++)+-- (\    (element, text, reference, CDATA section, <!--comment-->, or <?PI?>")  elementdecl :: XParser ElementDecl elementdecl = do     tok TokSpecialOpen     tok (TokSpecial ELEMENTx)-    n <- peRef name `elserror` "missing identifier in ELEMENT decl"-    c <- peRef contentspec `elserror` "missing content spec in ELEMENT decl"-    blank (tok TokAnyClose) `elserror`+    n <- peRef name `adjustErrBad` ("expecting identifier in ELEMENT decl\n"++)+    c <- peRef contentspec+             `adjustErrBad` (("in content spec of ELEMENT decl: "++n++"\n")++)+    blank (tok TokAnyClose) `onFail` failBadP        ("expected > terminating ELEMENT decl"        ++"\n    element name was "++show n-       ++"\n    contentspec was "++(\(ContentSpec p)-> show p)c)+       ++"\n    contentspec was "++(\ (ContentSpec p)-> show p) c)     return (ElementDecl n c)  contentspec :: XParser ContentSpec contentspec =-    ( peRef (word "EMPTY") >> return EMPTY) +++-    ( peRef (word "ANY") >> return ANY) +++-    ( peRef mixed >>= return . Mixed) +++-    ( peRef cp >>= return . ContentSpec)+    oneOf' [ ("EMPTY",  peRef (word "EMPTY") >> return EMPTY)+           , ("ANY",    peRef (word "ANY") >> return ANY)+           , ("mixed",  peRef mixed >>= return . Mixed)+           , ("simple", peRef cp >>= return . ContentSpec)+           ]+ --   `adjustErr` ("when looking for content spec,\n"++)+ --   `adjustErr` (++"\nLooking for content spec (EMPTY, ANY, mixed, etc)")  choice :: XParser [CP] choice = do     bracket (tok TokBraOpen `debug` "Trying choice")-            (peRef cp `sepby1` blank (tok TokPipe))             (blank (tok TokBraClose `debug` "Succeeded with choice"))+            (peRef cp `sepBy1` blank (tok TokPipe))  sequence :: XParser [CP]-sequence = do-    bracket (tok TokBraOpen `debug` "Trying sequence")-            (peRef cp `sepby1` blank (tok TokComma))-            (blank (tok TokBraClose `debug` "Succeeded with sequence"))+sequence = do	-- bracket is inappropriate because of inner failBad+ -- bracket (tok TokBraOpen `debug` "Trying sequence")+ --         (blank (tok TokBraClose `debug` "Succeeded with sequence"))+ --         (peRef cp `sepBy1` blank (tok TokComma))+    tok TokBraOpen `debug` "Trying sequence"+    cps <- peRef cp `sepBy1` blank (tok TokComma)+    blank (tok TokBraClose `debug` "Succeeded with sequence")+    return cps  cp :: XParser CP-cp =-    ( do n <- name-         m <- modifier-         let c = TagName n m-         return c `debug` ("ContentSpec: name "++show c)) +++-    ( do ss <- sequence-         m <- modifier-         let c = Seq ss m-         return c `debug` ("ContentSpec: sequence "++show c)) +++-    ( do cs <- choice-         m <- modifier-         let c = Choice cs m-         return c `debug` ("ContentSpec: choice "++show c))+cp = oneOf [ ( do n <- name+                  m <- modifier+                  let c = TagName n m+                  return c `debug` ("ContentSpec: name "++show c))+           , ( do ss <- sequence+                  m <- modifier+                  let c = Seq ss m+                  return c `debug` ("ContentSpec: sequence "++show c))+           , ( do cs <- choice+                  m <- modifier+                  let c = Choice cs m+                  return c `debug` ("ContentSpec: choice "++show c))+           ] `adjustErr` (++"\nwhen looking for a content particle")  modifier :: XParser Modifier-modifier =-    ( tok TokStar >> return Star) +++-    ( tok TokQuery >> return Query) +++-    ( tok TokPlus >> return Plus) +++-    ( return None)+modifier = oneOf [ ( tok TokStar >> return Star )+                 , ( tok TokQuery >> return Query )+                 , ( tok TokPlus >> return Plus )+                 , ( return None )+                 ]  -- just for debugging instance Show CP where@@ -441,94 +564,120 @@     tok TokBraOpen     peRef (do tok TokHash               word "PCDATA")-    cont-  where-    cont = ( do cs <- many (peRef (do tok TokPipe-                                      peRef name))-                blank (tok TokBraClose >> tok TokStar)-                return (PCDATAplus cs)) +++-           ( blank (tok TokBraClose >> tok TokStar) >> return PCDATA) +++-           ( blank (tok TokBraClose) >> return PCDATA)+    commit $+      oneOf [ ( do cs <- many (peRef (do tok TokPipe+                                         peRef name))+                   blank (tok TokBraClose >> tok TokStar)+                   return (PCDATAplus cs))+            , ( blank (tok TokBraClose >> tok TokStar) >> return PCDATA)+            , ( blank (tok TokBraClose) >> return PCDATA)+            ]+        `adjustErrP` (++"\nLooking for mixed content spec (#PCDATA | ...)*\n")  attlistdecl :: XParser AttListDecl attlistdecl = do     tok TokSpecialOpen     tok (TokSpecial ATTLISTx)-    n <- peRef name `elserror` "missing identifier in ATTLIST"-    ds <- peRef (many (peRef attdef))-    blank (tok TokAnyClose) `elserror` "missing > terminating ATTLIST"+    n <- peRef name `adjustErrBad` ("expecting identifier in ATTLIST\n"++)+    ds <- peRef (many1 (peRef attdef))+    blank (tok TokAnyClose) `onFail` failBadP "missing > terminating ATTLIST"     return (AttListDecl n ds)  attdef :: XParser AttDef attdef =-  do n <- peRef name-     t <- peRef atttype `elserror` "missing attribute type in attlist defn"-     d <- peRef defaultdecl+  do n <- peRef name `adjustErr` ("expecting attribute name\n"++)+     t <- peRef atttype `adjustErr` (("within attlist defn: "++n++",\n")++)+     d <- peRef defaultdecl `adjustErr` (("in attlist defn: "++n++",\n")++)      return (AttDef n t d)  atttype :: XParser AttType atttype =-    ( word "CDATA" >> return StringType) +++-    ( tokenizedtype >>= return . TokenizedType) +++-    ( enumeratedtype >>= return . EnumeratedType)+    oneOf' [ ("CDATA",      word "CDATA" >> return StringType)+           , ("tokenized",  tokenizedtype >>= return . TokenizedType)+           , ("enumerated", enumeratedtype >>= return . EnumeratedType)+           ]+      `adjustErr` ("looking for ATTTYPE,\n"++)+ --   `adjustErr` (++"\nLooking for ATTTYPE (CDATA, tokenized, or enumerated")  tokenizedtype :: XParser TokenizedType tokenizedtype =-    ( word "ID" >> return ID) +++-    ( word "IDREF" >> return IDREF) +++-    ( word "IDREFS" >> return IDREFS) +++-    ( word "ENTITY" >> return ENTITY) +++-    ( word "ENTITIES" >> return ENTITIES) +++-    ( word "NMTOKEN" >> return NMTOKEN) +++-    ( word "NMTOKENS" >> return NMTOKENS)+    oneOf [ ( word "ID" >> return ID)+          , ( word "IDREF" >> return IDREF)+          , ( word "IDREFS" >> return IDREFS)+          , ( word "ENTITY" >> return ENTITY)+          , ( word "ENTITIES" >> return ENTITIES)+          , ( word "NMTOKEN" >> return NMTOKEN)+          , ( word "NMTOKENS" >> return NMTOKENS)+          ] `onFail`+    do { t <- next+       ; failP ("Expected one of"+               ++" (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)"+               ++"\nbut got "++show t)+       }+-- `adjustErr` (++"\nLooking for a tokenized type:\n\ +-- \    (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)")  enumeratedtype :: XParser EnumeratedType enumeratedtype =-    ( notationtype >>= return . NotationType) +++-    ( enumeration >>= return . Enumeration)+    oneOf' [ ("NOTATION",   notationtype >>= return . NotationType)+           , ("enumerated", enumeration >>= return . Enumeration)+           ]+      `adjustErr` ("looking for an enumerated or NOTATION type,\n"++)  notationtype :: XParser NotationType notationtype = do     word "NOTATION"-    bracket (tok TokBraOpen)-            (peRef name `sepby1` peRef (tok TokPipe))-            (blank (tok TokBraClose))+    bracket (tok TokBraOpen) (blank (tok TokBraClose))+            (peRef name `sepBy1` peRef (tok TokPipe))  enumeration :: XParser Enumeration enumeration =-    bracket (tok TokBraOpen)-            (peRef nmtoken `sepby1` peRef ((tok TokPipe)))-            (blank (tok TokBraClose))+    bracket (tok TokBraOpen) (blank (tok TokBraClose))+            (peRef nmtoken `sepBy1` blank (peRef (tok TokPipe)))  defaultdecl :: XParser DefaultDecl defaultdecl =-    ( tok TokHash >> word "REQUIRED" >> return REQUIRED) +++-    ( tok TokHash >> word "IMPLIED" >> return IMPLIED) +++-    ( do f <- maybe (tok TokHash >> word "FIXED" >> return FIXED)-         a <- peRef attvalue-         return (DefaultTo a f))+    oneOf' [ ("REQUIRED",  tok TokHash >> word "REQUIRED" >> return REQUIRED)+           , ("IMPLIED",   tok TokHash >> word "IMPLIED" >> return IMPLIED)+           , ("FIXED",     do f <- maybe (tok TokHash >> word "FIXED"+                                                      >> return FIXED)+                              a <- peRef attvalue+                              return (DefaultTo a f) )+           ]+        `adjustErr` ("looking for an attribute default decl,\n"++)+--      `adjustErr` (++"\nLooking for an attribute default decl:\n\ +-- \    (REQUIRED, IMPLIED, FIXED)")  conditionalsect :: XParser ConditionalSect-conditionalsect =-    ( do tok TokSectionOpen-         peRef (tok (TokSection INCLUDEx))-         tok TokSqOpen `elserror` "missing [ after INCLUDE"-         i <- many (peRef extsubsetdecl)-         tok TokSectionClose `elserror` "missing ]]> for INCLUDE section"-         return (IncludeSect i)) +++-    ( do tok TokSectionOpen-         peRef (tok (TokSection IGNOREx))-         tok TokSqOpen `elserror` "missing [ after IGNORE"-         i <- many newIgnore  -- many ignoresectcontents-         tok TokSectionClose `elserror` "missing ]]> for IGNORE section"-         return (IgnoreSect []))+conditionalsect = oneOf'+    [ ( "INCLUDE"+      , do tok TokSectionOpen+           peRef (tok (TokSection INCLUDEx))+           p <- posn+           tok TokSqOpen `onFail` failBadP "missing [ after INCLUDE"+           i <- many (peRef extsubsetdecl)+           tok TokSectionClose+                   `onFail` failBadP ("missing ]]> for INCLUDE section"+                                     ++"\n    begun at "++show p)+           return (IncludeSect i))+    , ( "IGNORE"+      , do tok TokSectionOpen+           peRef (tok (TokSection IGNOREx))+           p <- posn+           tok TokSqOpen `onFail` failBadP "missing [ after IGNORE"+           i <- many newIgnore  -- many ignoresectcontents+           tok TokSectionClose+                   `onFail` failBadP ("missing ]]> for IGNORE section"+                                     ++"\n    begun at "++show p)+           return (IgnoreSect []))+    ] `adjustErr` ("in a conditional section,\n"++)  newIgnore :: XParser Ignore newIgnore =     ( do tok TokSectionOpen          many newIgnore `debug` "IGNORING conditional section"          tok TokSectionClose-         return Ignore `debug` "end of IGNORED conditional section") ++++         return Ignore `debug` "end of IGNORED conditional section") `onFail`     ( do t <- nottok [TokSectionOpen,TokSectionClose]          return Ignore  `debug` ("ignoring: "++show t)) @@ -549,9 +698,10 @@   return Ignore  `debug` ("ignored all of: "++show is) ---- +-- | Return either a general entity reference, or a character reference. reference :: XParser Reference reference = do-    bracket (tok TokAmp) (freetext >>= val) (tok TokSemi)+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= val)   where     val ('#':'x':i) | all isHexDigit i                     = return . RefChar . fst . head . readHex $ i@@ -561,16 +711,16 @@  {- -- following is incorrect reference =-    ( charref >>= return . RefChar) ++++    ( charref >>= return . RefChar) `onFail`     ( entityref >>= return . RefEntity)  entityref :: XParser EntityRef entityref = do-    bracket (tok TokAmp) name (tok TokSemi)+    bracket (tok TokAmp) (tok TokSemi) name  charref :: XParser CharRef charref = do-    bracket (tok TokAmp) (freetext >>= readCharVal) (tok TokSemi)+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)   where     readCharVal ('#':'x':i) = return . fst . head . readHex $ i     readCharVal ('#':i)     = return . fst . head . readDec $ i@@ -579,11 +729,11 @@  pereference :: XParser PEReference pereference = do-    bracket (tok TokPercent) nmtoken (tok TokSemi)+    bracket (tok TokPercent) (tok TokSemi) nmtoken  entitydecl :: XParser EntityDecl entitydecl =-    ( gedecl >>= return . EntityGEDecl) ++++    ( gedecl >>= return . EntityGEDecl) `onFail`     ( pedecl >>= return . EntityPEDecl)  gedecl :: XParser GEDecl@@ -591,9 +741,9 @@     tok TokSpecialOpen     tok (TokSpecial ENTITYx)     n <- name-    e <- entitydef `elserror` "missing entity defn in G ENTITY decl"-    tok TokAnyClose `elserror` "expected > terminating G ENTITY decl"-    stupd (addGE n e)+    e <- entitydef `adjustErrBad` (("in general entity defn "++n++",\n")++)+    tok TokAnyClose `onFail` failBadP ("expected > terminating G ENTITY decl "++n)+    stUpdate (addGE n e) `debug` ("added GE defn &"++n++";")     return (GEDecl n e)  pedecl :: XParser PEDecl@@ -602,32 +752,36 @@     tok (TokSpecial ENTITYx)     tok TokPercent     n <- name-    e <- pedef `elserror` "missing entity defn in P ENTITY decl"-    tok TokAnyClose `elserror` "expected > terminating P ENTITY decl"-    stupd (addPE n e)+    e <- pedef `adjustErrBad` (("in parameter entity defn "++n++",\n")++)+    tok TokAnyClose `onFail` failBadP ("expected > terminating P ENTITY decl "++n)+    stUpdate (addPE n e) `debug` ("added PE defn %"++n++";\n"++show e)     return (PEDecl n e)  entitydef :: XParser EntityDef entitydef =-    ( entityvalue >>= return . DefEntityValue) +++-    ( do eid <- externalid-         ndd <- maybe ndatadecl-         return (DefExternalID eid ndd))+    oneOf' [ ("entityvalue", entityvalue >>= return . DefEntityValue)+           , ("external",    do eid <- externalid+                                ndd <- maybe ndatadecl+                                return (DefExternalID eid ndd))+           ]  pedef :: XParser PEDef pedef =-    ( entityvalue >>= return . PEDefEntityValue) +++-    ( externalid  >>= return . PEDefExternalID)+    oneOf' [ ("entityvalue", entityvalue >>= return . PEDefEntityValue)+           , ("externalid",  externalid  >>= return . PEDefExternalID)+           ]  externalid :: XParser ExternalID externalid =-    ( do word "SYSTEM"-         s <- systemliteral-         return (SYSTEM s)) +++-    ( do word "PUBLIC"-         p <- pubidliteral-         s <- systemliteral-         return (PUBLIC p s))+    oneOf' [ ("SYSTEM", do word "SYSTEM"+                           s <- systemliteral+                           return (SYSTEM s) )+           , ("PUBLIC", do word "PUBLIC"+                           p <- pubidliteral+                           s <- systemliteral+                           return (PUBLIC p s) )+           ]+      `adjustErr` ("looking for an external id,\n"++)  ndatadecl :: XParser NDataDecl ndatadecl = do@@ -638,13 +792,13 @@ textdecl :: XParser TextDecl textdecl = do     tok TokPIOpen-    (word "xml" +++ word "XML")+    (word "xml" `onFail` word "XML")     v <- maybe versioninfo     e <- encodingdecl-    tok TokPIClose `elserror` "expected ?> terminating text decl"+    tok TokPIClose `onFail` failP "expected ?> terminating text decl"     return (TextDecl v e) -extparsedent :: XParser ExtParsedEnt+extparsedent :: XParser (ExtParsedEnt Posn) extparsedent = do     t <- maybe textdecl     c <- content@@ -658,9 +812,9 @@  encodingdecl :: XParser EncodingDecl encodingdecl = do-    (word "encoding" +++ word "ENCODING")-    tok TokEqual `elserror` "expected = in 'encoding' decl"-    f <- bracket (tok TokQuote) freetext (tok TokQuote)+    (word "encoding" `onFail` word "ENCODING")+    tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"+    f <- bracket (tok TokQuote) (tok TokQuote) freetext     return (EncodingDecl f)  notationdecl :: XParser NotationDecl@@ -669,7 +823,7 @@     tok (TokSpecial NOTATIONx)     n <- name     e <- either externalid publicid-    tok TokAnyClose `elserror` "expected > terminating NOTATION decl"+    tok TokAnyClose `onFail` failBadP ("expected > terminating NOTATION decl "++n)     return (NOTATION n e)  publicid :: XParser PublicID@@ -680,34 +834,46 @@  entityvalue :: XParser EntityValue entityvalue = do- -- evs <- bracket (tok TokQuote) (many (peRef ev)) (tok TokQuote)+ -- evs <- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))     tok TokQuote-    evs <- many (peRef ev)-    tok TokQuote `elserror` "expected quote to terminate entityvalue"-    return (EntityValue evs)+    pn <- posn+    evs <- many ev+    tok TokQuote `onFail` failBadP "expected quote to terminate entityvalue"+    -- quoted text must be rescanned for possible PERefs+    st <- stGet+    Prelude.either failBad (return . EntityValue) . fst3 $+                (runParser (many ev) st+                         (reLexEntityValue (\s-> stringify (lookupPE s st))+                                           pn+                                           (flattenEV (EntityValue evs))))+  where+    stringify (Just (PEDefEntityValue ev)) = Just (flattenEV ev)+    stringify _ = Nothing  ev :: XParser EV ev =-    ( (string+++freetext) >>= return . EVString) +++-    ( reference >>= return . EVRef)+    oneOf' [ ("string",    (string`onFail`freetext) >>= return . EVString)+           , ("reference", reference >>= return . EVRef)+           ]+      `adjustErr` ("looking for entity value,\n"++)  attvalue :: XParser AttValue attvalue = do-    avs <- bracket (tok TokQuote)+    avs <- bracket (tok TokQuote) (tok TokQuote)                    (many (either freetext reference))-                   (tok TokQuote)     return (AttValue avs)  systemliteral :: XParser SystemLiteral systemliteral = do-    s <- bracket (tok TokQuote) freetext (tok TokQuote)-    return (SystemLiteral s)            -- note: need to fold &...; escapes+    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (SystemLiteral s)            -- note: refs &...; not permitted  pubidliteral :: XParser PubidLiteral pubidliteral = do-    s <- bracket (tok TokQuote) freetext (tok TokQuote)-    return (PubidLiteral s)             -- note: need to fold &...; escapes+    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (PubidLiteral s)             -- note: freetext is too liberal here +-- | Return parsed freetext (i.e. until the next markup) chardata :: XParser CharData chardata = freetext 
+ src/Text/XML/HaXml/ParseLazy.hs view
@@ -0,0 +1,888 @@+-- | A non-validating XML parser.  For the input grammar, see+--   <http://www.w3.org/TR/REC-xml>.+module Text.XML.HaXml.ParseLazy+  (+  -- * Parse a whole document+    xmlParse  -- , xmlParse'+  -- * Parse just a DTD+  , dtdParse  -- , dtdParse'+  -- * Parse a partial document+  , xmlParseWith+  -- * Individual parsers for use with /xmlParseWith/ and module SAX+  , document, element, content+  , comment, chardata+  , reference, doctypedecl+  , processinginstruction+  , elemtag, name, tok+  , elemOpenTag, elemCloseTag+  , emptySTs, XParser+  -- * These general utility functions don't belong here+  , fst3, snd3, thd3+  ) where++-- An XML parser, written using a slightly extended version of the+-- Hutton/Meijer parser combinators.  The input is tokenised internally+-- by the lexer xmlLex.  Whilst parsing, we gather a symbol+-- table of entity references.  PERefs must be defined before use, so we+-- expand their uses as we encounter them, forcing the remainder of the+-- input to be re-lexed and re-parsed.  GERefs are simply stored for+-- later retrieval.++import Prelude hiding (either,maybe,sequence,catch)+import qualified Prelude (either)+import Maybe hiding (maybe)+import List (intersperse)       -- debugging only+import Char (isSpace,isDigit,isHexDigit)+import Monad hiding (sequence)+import Numeric (readDec,readHex)+--import Control.Exception (catch)++import Text.XML.HaXml.Types+import Text.XML.HaXml.Posn+import Text.XML.HaXml.Lex+import Text.ParserCombinators.Poly.NoLeak.StateLazy+++#if ( defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 502 ) || \+    ( defined(__NHC__) && __NHC__ > 114 ) || defined(__HUGS__)+import System.IO.Unsafe (unsafePerformIO)+#elif defined(__GLASGOW_HASKELL__)+import IOExts (unsafePerformIO)+#elif defined(__NHC__)+import IOExtras (unsafePerformIO)+#elif defined(__HBC__)+import UnsafePerformIO+#endif++--  #define DEBUG++#if defined(DEBUG)+#  if ( defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 502 ) || \+      ( defined(__NHC__) && __NHC__ > 114 ) || defined(__HUGS__)+import Debug.Trace(trace)+#  elif defined(__GLASGOW_HASKELL__)+import IOExts(trace)+#  elif defined(__NHC__) || defined(__HBC__)+import NonStdTrace+#  endif+debug :: a -> String -> a+v `debug` s = trace s v+#else+v `debug` s = v+#endif+++-- | To parse a whole document, @xmlParse file content@ takes a filename+--   (for generating error reports) and the string content of that file.+--   A parse error causes program failure, with message to stderr.+xmlParse :: String -> String -> Document Posn++{-+-- | To parse a whole document, @xmlParse' file content@ takes a filename+--   (for generating error reports) and the string content of that file.+--   Any parse error message is passed back to the caller through the+--   @Either@ type.+xmlParse' :: String -> String -> Either String (Document Posn)++-- | To parse just a DTD, @dtdParse file content@ takes a filename+--   (for generating error reports) and the string content of that+--   file.  If no DTD was found, you get @Nothing@ rather than an error.+--   However, if a DTD is found but contains errors, the program crashes.+dtdParse  :: String -> String -> Maybe DocTypeDecl++-- | To parse just a DTD, @dtdParse' file content@ takes a filename+--   (for generating error reports) and the string content of that+--   file.  If no DTD was found, you get @Right Nothing@.+--   If a DTD was found but contains errors, you get a @Left message@.+dtdParse' :: String -> String -> Either String (Maybe DocTypeDecl)++xmlParse' name inp = xmlParse name inp `catch` (Left . show)+dtdParse' name inp = dtdParse name inp `catch` (Left . show)+-}++xmlParse  name  = fst3 . runParser (toEOF document) emptySTs . xmlLex name+dtdParse  name  = fst3 . runParser justDTD  emptySTs . xmlLex name+++toEOF = id	-- there are other possible implementations...++-- | To parse a partial document, e.g. from an XML-based stream protocol,+--   where you may later want to get more document elements from the same+--   stream.  Arguments are: a parser for the item you want, and the+--   already-lexed input to parse from.  Returns the item you wanted+--   (or an error message), plus the remainder of the input.+xmlParseWith :: XParser a -> [(Posn,TokenT)]+                -> (Either String a, [(Posn,TokenT)])+xmlParseWith p = (\(v,_,s)->(Right v,s)) . runParser p emptySTs+++---- Symbol table stuff ----++type SymTabs = (SymTab PEDef, SymTab EntityDef)++-- | Some empty symbol tables for GE and PE references.+emptySTs :: SymTabs+emptySTs = (emptyST, emptyST)++addPE :: String -> PEDef -> SymTabs -> SymTabs+addPE n v (pe,ge) = (addST n v pe, ge)++addGE :: String -> EntityDef -> SymTabs -> SymTabs+addGE n v (pe,ge) = let newge = addST n v ge in newge `seq` (pe, newge)++lookupPE :: String -> SymTabs -> Maybe PEDef+lookupPE s (pe,ge) = lookupST s pe++flattenEV :: EntityValue -> String+flattenEV (EntityValue evs) = concatMap flatten evs+  where+    flatten (EVString s)          = s+    flatten (EVRef (RefEntity r)) = "&" ++r++";"+    flatten (EVRef (RefChar r))   = "&#"++show r++";"+ -- flatten (EVPERef n)           = "%" ++n++";"+++---- Misc ----+fst3 :: (a,b,c) -> a+snd3 :: (a,b,c) -> b+thd3 :: (a,b,c) -> c++fst3 (a,_,_) = a+snd3 (_,a,_) = a+thd3 (_,_,a) = a+++---- Auxiliary Parsing Functions ----++-- | XParser is just a specialisation of the PolyStateLazy parser.+type XParser a = Parser SymTabs (Posn,TokenT) a++-- | Return the next token from the input only if it matches the given token.+tok :: TokenT -> XParser TokenT+tok t = do (p,t') <- next+           case t' of TokError _    -> report failBad (show t) p t'+                      _ | t'==t     -> return t+                        | otherwise -> report fail (show t) p t'+nottok :: [TokenT] -> XParser TokenT+nottok ts = do (p,t) <- next+               if t`elem`ts then report fail ("no "++show t) p t+                            else return t++-- | Return just a name, e.g. element name, attribute name.+name :: XParser Name+name = do (p,tok) <- next+          case tok of+            TokName s  -> return s+            TokError _ -> report failBad "a name" p tok+            _          -> report fail "a name" p tok++string, freetext :: XParser String+string   = do (p,t) <- next+              case t of TokName s -> return s+                        _         -> report fail "text" p t+freetext = do (p,t) <- next+              case t of TokFreeText s -> return s+                        _             -> report fail "text" p t++maybe :: XParser a -> XParser (Maybe a)+maybe p =+    ( p >>= return . Just) `onFail`+    ( return Nothing)++either :: XParser a -> XParser b -> XParser (Either a b)+either p q =+    ( p >>= return . Left) `onFail`+    ( q >>= return . Right)++word :: String -> XParser ()+word s = do { x <- next+            ; case x of+                (p,TokName n)     | s==n -> return ()+                (p,TokFreeText n) | s==n -> return ()+                (p,t@(TokError _)) -> report failBad (show s) p t+                (p,t) -> report fail (show s) p t+            }++posn = do { x@(p,_) <- next+          ; reparse [x]+          ; return p+          }++nmtoken :: XParser NmToken+nmtoken = (string `onFail` freetext)++failP, failBadP :: String -> XParser a+failP msg = do { p <- posn; fail (msg++"\n    at "++show p) }+failBadP msg = do { p <- posn; failBad (msg++"\n    at "++show p) }++report :: (String->XParser a) -> String -> Posn -> TokenT -> XParser a+report fail exp p t = fail ("Expected "++exp++" but found "++show t+                           ++"\n  in "++show p)++adjustErrP :: XParser a -> (String->String) -> XParser a+p `adjustErrP` f = p `onFail` do pn <- posn+                                 (p `adjustErr` f) `adjustErr` (++show pn)++peRef :: XParser a -> XParser a+peRef p =+    p `onFail`+    do pn <- posn+       n <- pereference+       tr <- stQuery (lookupPE n) `debug` ("Looking up %"++n)+       case tr of+           Just (PEDefEntityValue ev) ->+                      do reparse (xmlReLex (posInNewCxt ("macro %"++n++";")+                                                        (Just pn))+                                           (flattenEV ev))+                               `debug` ("  defn:  "++flattenEV ev)+                         peRef p+           Just (PEDefExternalID (PUBLIC _ (SystemLiteral f))) ->+                      do let val = unsafePerformIO (readFile f)+                         reparse (xmlReLex (posInNewCxt ("file "++f)+                                                        (Just pn)) val)+                               `debug` ("  reading from file "++f)+                         peRef p+           Just (PEDefExternalID (SYSTEM (SystemLiteral f))) ->+                      do let val = unsafePerformIO (readFile f)+                         reparse (xmlReLex (posInNewCxt ("file "++f)+                                                        (Just pn)) val)+                               `debug` ("  reading from file "++f)+                         peRef p+           Nothing -> fail ("PEReference use before definition: "++"%"++n++";"+                           ++"\n    at "++show pn)++blank :: XParser a -> XParser a+blank p =+    p `onFail`+    do n <- pereference+       tr <- stQuery (lookupPE n) `debug` ("Looking up %"++n++" (is blank?)")+       case tr of+           Just (PEDefEntityValue ev)+                    | all isSpace (flattenEV ev)  ->+                            do blank p `debug` "Empty macro definition"+           Just _  -> failP ("expected a blank PERef macro: "++"%"++n++";")+           Nothing -> failP ("PEReference use before definition: "++"%"++n++";")++++---- XML Parsing Functions ----++justDTD :: XParser (Maybe DocTypeDecl)+justDTD =+  do (ExtSubset _ ds) <- extsubset `debug` "Trying external subset"+     if null ds then fail "empty"+         else return (Just (DTD "extsubset" Nothing (concatMap extract ds)))+  `onFail`+  do (Prolog _ _ dtd _) <- prolog+     return dtd+ where extract (ExtMarkupDecl m) = [m]+       extract (ExtConditionalSect (IncludeSect i)) = concatMap extract i+       extract (ExtConditionalSect (IgnoreSect i)) = []++-- | Return an entire XML document including prolog and trailing junk.+document :: XParser (Document Posn)+document = do+ -- p <- prolog `adjustErr` ("unrecognisable XML prolog\n"++)+ -- e <- element+ -- ms <- many misc+ -- (_,ge) <- stGet+ -- return (Document p ge e ms)+    return Document `apply` (prolog `adjustErr`+                                    ("unrecognisable XML prolog\n"++))+                    `apply` (fmap snd stGet)+                    `apply` element+                    `apply` many misc++-- | Return an XML comment.+comment :: XParser Comment+comment = do+    bracket (tok TokCommentOpen) (tok TokCommentClose) freetext+--  tok TokCommentOpen+--  commit $ do+--    c <- freetext+--    tok TokCommentClose+--    return c++-- | Parse a processing instruction.+processinginstruction :: XParser ProcessingInstruction+processinginstruction = do+    tok TokPIOpen+    commit $ do+      n <- string  `onFail` failP "processing instruction has no target"+      f <- freetext+      tok TokPIClose `onFail` failP ("missing ?> in <?"++n)+      return (n, f)++cdsect :: XParser CDSect+cdsect = do+    tok TokSectionOpen+    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata++prolog :: XParser Prolog+prolog = do+    x   <- maybe xmldecl+    m1  <- many misc+    dtd <- maybe doctypedecl+    m2  <- many misc+    return (Prolog x m1 dtd m2)++xmldecl :: XParser XMLDecl+xmldecl = do+    tok TokPIOpen+    (word "xml" `onFail` word "XML")+    p <- posn+    s <- freetext+    tok TokPIClose `onFail` failBadP "missing ?> in <?xml ...?>"+ -- raise ((runParser aux emptySTs . xmlReLex p) s)+    return (fst3 ((runParser aux emptySTs . xmlReLex p) s))+  where+    aux = do+        v <- versioninfo  `onFail` failP "missing XML version info"+        e <- maybe encodingdecl+        s <- maybe sddecl+        return (XMLDecl v e s)+ -- raise (Left err, _, _) = failP err+ -- raise (Right ok, _, _) = return ok++versioninfo :: XParser VersionInfo+versioninfo = do+    (word "version" `onFail` word "VERSION")+    tok TokEqual+    bracket (tok TokQuote) (tok TokQuote) freetext++misc :: XParser Misc+misc =+    oneOf' [ ("<!--comment-->",  comment >>= return . Comment)+           , ("<?PI?>",          processinginstruction >>= return . PI)+           ]++-- | Return a DOCTYPE decl, indicating a DTD.+doctypedecl :: XParser DocTypeDecl+doctypedecl = do+    tok TokSpecialOpen+    tok (TokSpecial DOCTYPEx)+    commit $ do+      n   <- name+      eid <- maybe externalid+      es  <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)+                            (many (peRef markupdecl)))+      blank (tok TokAnyClose)  `onFail` failP "missing > in DOCTYPE decl"+      return (DTD n eid (case es of { Nothing -> []; Just e -> e }))++-- | Return a DTD markup decl, e.g. ELEMENT, ATTLIST, etc+markupdecl :: XParser MarkupDecl+markupdecl =+  oneOf' [ ("ELEMENT",  elementdecl  >>= return . Element)+         , ("ATTLIST",  attlistdecl  >>= return . AttList)+         , ("ENTITY",   entitydecl   >>= return . Entity)+         , ("NOTATION", notationdecl >>= return . Notation)+         , ("misc",     misc         >>= return . MarkupMisc)+         ]+    `adjustErrP`+          ("when looking for a markup decl,\n"++)+ --       (\  (ELEMENT, ATTLIST, ENTITY, NOTATION, <!--comment-->, or <?PI?>")++extsubset :: XParser ExtSubset+extsubset = do+    td <- maybe textdecl+    ds <- many (peRef extsubsetdecl)+    return (ExtSubset td ds)++extsubsetdecl :: XParser ExtSubsetDecl+extsubsetdecl =+    ( markupdecl >>= return . ExtMarkupDecl) `onFail`+    ( conditionalsect >>= return . ExtConditionalSect)++sddecl :: XParser SDDecl+sddecl = do+    (word "standalone" `onFail` word "STANDALONE")+    commit $ do+      tok TokEqual `onFail` failP "missing = in 'standalone' decl"+      bracket (tok TokQuote) (tok TokQuote)+              ( (word "yes" >> return True) `onFail`+                (word "no" >> return False) `onFail`+                failP "'standalone' decl requires 'yes' or 'no' value" )++{-+element :: XParser (Element Posn)+element = do+    tok TokAnyOpen+    (ElemTag n as) <- elemtag+    oneOf' [ ("self-closing tag <"++n++"/>"+             ,  do tok TokEndClose+                   return (Elem n as []))+           , ("after open tag <"++n++">"+             ,  do tok TokAnyClose+                   cs <- many content+                   p  <- posn+                   m  <- bracket (tok TokEndOpen) (tok TokAnyClose) name+                   checkmatch p n m+                   return (Elem n as cs))+           ] `adjustErr` (("in element tag "++n++",\n")++)+-}++-- | Return a complete element including all its inner content.+element :: XParser (Element Posn)+element = do+    tok TokAnyOpen+    (ElemTag n as) <- elemtag+    return (Elem n as) `apply`+        ( do tok TokEndClose+             return []+          `onFail`+          do tok TokAnyClose+             commit $ manyFinally content+                                  (do p <- posn+                                      m <- bracket (tok TokEndOpen)+                                                   (tok TokAnyClose) name+                                      checkmatch p n m)+          ) `adjustErrBad` (("in element tag "++n++",\n")++)++checkmatch :: Posn -> Name -> Name -> XParser ()+checkmatch p n m =+  if n == m then return ()+  else failBadP ("tag <"++n++"> terminated by </"++m++">")++-- | Parse only the parts between angle brackets in an element tag.+elemtag :: XParser ElemTag+elemtag = do+    n  <- name `adjustErrBad` ("malformed element tag\n"++)+    as <- many attribute+    return (ElemTag n as)++-- | For use with stream parsers - returns the complete opening element tag.+elemOpenTag :: XParser ElemTag+elemOpenTag = do+    tok TokAnyOpen+    e <- elemtag+    tok TokAnyClose+    return e++-- | For use with stream parsers - accepts a closing tag, provided it+--   matches the given element name.+elemCloseTag :: Name -> XParser ()+elemCloseTag n = do+    tok TokEndOpen+    p <- posn+    m <- name+    tok TokAnyClose+    checkmatch p n m++attribute :: XParser Attribute+attribute = do+    n <- name `adjustErr` ("malformed attribute name\n"++)+    tok TokEqual `onFail` failBadP "missing = in attribute"+    v <- attvalue `onFail` failBadP "missing attvalue"+    return (n,v)++-- | Return a content particle, e.g. text, element, reference, etc+content :: XParser (Content Posn)+content =+  do { p  <- posn+     ; c' <- content'+     ; return (c' p)+     }+  where+     content' = oneOf' [ ("element",   element   >>= return . CElem)+                       , ("chardata",  chardata  >>= return . CString False)+                       , ("reference", reference >>= return . CRef)+                       , ("CDATA",     cdsect    >>= return . CString True)+                       , ("misc",      misc      >>= return . CMisc)+                       ]+                  `adjustErrP` ("when looking for a content item,\n"++)+-- (\    (element, text, reference, CDATA section, <!--comment-->, or <?PI?>")++elementdecl :: XParser ElementDecl+elementdecl = do+    tok TokSpecialOpen+    tok (TokSpecial ELEMENTx)+    n <- peRef name `adjustErrBad` ("expecting identifier in ELEMENT decl\n"++)+    c <- peRef contentspec+             `adjustErrBad` (("in content spec of ELEMENT decl: "++n++"\n")++)+    blank (tok TokAnyClose) `onFail` failBadP+       ("expected > terminating ELEMENT decl"+       ++"\n    element name was "++show n+       ++"\n    contentspec was "++(\ (ContentSpec p)-> show p) c)+    return (ElementDecl n c)++contentspec :: XParser ContentSpec+contentspec =+    oneOf' [ ("EMPTY",  peRef (word "EMPTY") >> return EMPTY)+           , ("ANY",    peRef (word "ANY") >> return ANY)+           , ("mixed",  peRef mixed >>= return . Mixed)+           , ("simple", peRef cp >>= return . ContentSpec)+           ]+ --   `adjustErr` ("when looking for content spec,\n"++)+ --   `adjustErr` (++"\nLooking for content spec (EMPTY, ANY, mixed, etc)")++choice :: XParser [CP]+choice = do+    bracket (tok TokBraOpen `debug` "Trying choice")+            (blank (tok TokBraClose `debug` "Succeeded with choice"))+            (peRef cp `sepBy1` blank (tok TokPipe))++sequence :: XParser [CP]+sequence = do	-- bracket is inappropriate because of inner failBad+ -- bracket (tok TokBraOpen `debug` "Trying sequence")+ --         (blank (tok TokBraClose `debug` "Succeeded with sequence"))+ --         (peRef cp `sepBy1` blank (tok TokComma))+    tok TokBraOpen `debug` "Trying sequence"+    cps <- peRef cp `sepBy1` blank (tok TokComma)+    blank (tok TokBraClose `debug` "Succeeded with sequence")+    return cps++cp :: XParser CP+cp = oneOf [ ( do n <- name+                  m <- modifier+                  let c = TagName n m+                  return c `debug` ("ContentSpec: name "++show c))+           , ( do ss <- sequence+                  m <- modifier+                  let c = Seq ss m+                  return c `debug` ("ContentSpec: sequence "++show c))+           , ( do cs <- choice+                  m <- modifier+                  let c = Choice cs m+                  return c `debug` ("ContentSpec: choice "++show c))+           ] `adjustErr` (++"\nwhen looking for a content particle")++modifier :: XParser Modifier+modifier = oneOf [ ( tok TokStar >> return Star )+                 , ( tok TokQuery >> return Query )+                 , ( tok TokPlus >> return Plus )+                 , ( return None )+                 ]++-- just for debugging+instance Show CP where+    show (TagName n m) = n++show m+    show (Choice cps m) = '(': concat (intersperse "|" (map show cps))+                          ++")"++show m+    show (Seq cps m) = '(': concat (intersperse "," (map show cps))+                          ++")"++show m+instance Show Modifier where+    show None = ""+    show Query = "?"+    show Star = "*"+    show Plus = "+"+----++mixed :: XParser Mixed+mixed = do+    tok TokBraOpen+    peRef (do tok TokHash+              word "PCDATA")+    commit $+      oneOf [ ( do cs <- many (peRef (do tok TokPipe+                                         peRef name))+                   blank (tok TokBraClose >> tok TokStar)+                   return (PCDATAplus cs))+            , ( blank (tok TokBraClose >> tok TokStar) >> return PCDATA)+            , ( blank (tok TokBraClose) >> return PCDATA)+            ]+        `adjustErrP` (++"\nLooking for mixed content spec (#PCDATA | ...)*\n")++attlistdecl :: XParser AttListDecl+attlistdecl = do+    tok TokSpecialOpen+    tok (TokSpecial ATTLISTx)+    n <- peRef name `adjustErrBad` ("expecting identifier in ATTLIST\n"++)+    ds <- peRef (many1 (peRef attdef))+    blank (tok TokAnyClose) `onFail` failBadP "missing > terminating ATTLIST"+    return (AttListDecl n ds)++attdef :: XParser AttDef+attdef =+  do n <- peRef name `adjustErr` ("expecting attribute name\n"++)+     t <- peRef atttype `adjustErr` (("within attlist defn: "++n++",\n")++)+     d <- peRef defaultdecl `adjustErr` (("in attlist defn: "++n++",\n")++)+     return (AttDef n t d)++atttype :: XParser AttType+atttype =+    oneOf' [ ("CDATA",      word "CDATA" >> return StringType)+           , ("tokenized",  tokenizedtype >>= return . TokenizedType)+           , ("enumerated", enumeratedtype >>= return . EnumeratedType)+           ]+      `adjustErr` ("looking for ATTTYPE,\n"++)+ --   `adjustErr` (++"\nLooking for ATTTYPE (CDATA, tokenized, or enumerated")++tokenizedtype :: XParser TokenizedType+tokenizedtype =+    oneOf [ ( word "ID" >> return ID)+          , ( word "IDREF" >> return IDREF)+          , ( word "IDREFS" >> return IDREFS)+          , ( word "ENTITY" >> return ENTITY)+          , ( word "ENTITIES" >> return ENTITIES)+          , ( word "NMTOKEN" >> return NMTOKEN)+          , ( word "NMTOKENS" >> return NMTOKENS)+          ] `onFail`+    do { t <- next+       ; failP ("Expected one of"+               ++" (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)"+               ++"\nbut got "++show t)+       }+-- `adjustErr` (++"\nLooking for a tokenized type:\n\ +-- \    (ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS)")++enumeratedtype :: XParser EnumeratedType+enumeratedtype =+    oneOf' [ ("NOTATION",   notationtype >>= return . NotationType)+           , ("enumerated", enumeration >>= return . Enumeration)+           ]+      `adjustErr` ("looking for an enumerated or NOTATION type,\n"++)++notationtype :: XParser NotationType+notationtype = do+    word "NOTATION"+    bracket (tok TokBraOpen) (blank (tok TokBraClose))+            (peRef name `sepBy1` peRef (tok TokPipe))++enumeration :: XParser Enumeration+enumeration =+    bracket (tok TokBraOpen) (blank (tok TokBraClose))+            (peRef nmtoken `sepBy1` blank (peRef (tok TokPipe)))++defaultdecl :: XParser DefaultDecl+defaultdecl =+    oneOf' [ ("REQUIRED",  tok TokHash >> word "REQUIRED" >> return REQUIRED)+           , ("IMPLIED",   tok TokHash >> word "IMPLIED" >> return IMPLIED)+           , ("FIXED",     do f <- maybe (tok TokHash >> word "FIXED"+                                                      >> return FIXED)+                              a <- peRef attvalue+                              return (DefaultTo a f) )+           ]+        `adjustErr` ("looking for an attribute default decl,\n"++)+--      `adjustErr` (++"\nLooking for an attribute default decl:\n\ +-- \    (REQUIRED, IMPLIED, FIXED)")++conditionalsect :: XParser ConditionalSect+conditionalsect = oneOf'+    [ ( "INCLUDE"+      , do tok TokSectionOpen+           peRef (tok (TokSection INCLUDEx))+           p <- posn+           tok TokSqOpen `onFail` failBadP "missing [ after INCLUDE"+           i <- many (peRef extsubsetdecl)+           tok TokSectionClose+                   `onFail` failBadP ("missing ]]> for INCLUDE section"+                                     ++"\n    begun at "++show p)+           return (IncludeSect i))+    , ( "IGNORE"+      , do tok TokSectionOpen+           peRef (tok (TokSection IGNOREx))+           p <- posn+           tok TokSqOpen `onFail` failBadP "missing [ after IGNORE"+           i <- many newIgnore  -- many ignoresectcontents+           tok TokSectionClose+                   `onFail` failBadP ("missing ]]> for IGNORE section"+                                     ++"\n    begun at "++show p)+           return (IgnoreSect []))+    ] `adjustErr` ("in a conditional section,\n"++)++newIgnore :: XParser Ignore+newIgnore =+    ( do tok TokSectionOpen+         many newIgnore `debug` "IGNORING conditional section"+         tok TokSectionClose+         return Ignore `debug` "end of IGNORED conditional section") `onFail`+    ( do t <- nottok [TokSectionOpen,TokSectionClose]+         return Ignore  `debug` ("ignoring: "++show t))++--- obsolete?+ignoresectcontents :: XParser IgnoreSectContents+ignoresectcontents = do+    i <- ignore+    is <- many (do tok TokSectionOpen+                   ic <- ignoresectcontents+                   tok TokSectionClose+                   ig <- ignore+                   return (ic,ig))+    return (IgnoreSectContents i is)++ignore :: XParser Ignore+ignore = do+  is <- many1 (nottok [TokSectionOpen,TokSectionClose])+  return Ignore  `debug` ("ignored all of: "++show is)+----++-- | Return either a general entity reference, or a character reference.+reference :: XParser Reference+reference = do+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= val)+  where+    val ('#':'x':i) | all isHexDigit i+                    = return . RefChar . fst . head . readHex $ i+    val ('#':i)     | all isDigit i+                    = return . RefChar . fst . head . readDec $ i+    val name        = return . RefEntity $ name++{- -- following is incorrect+reference =+    ( charref >>= return . RefChar) `onFail`+    ( entityref >>= return . RefEntity)++entityref :: XParser EntityRef+entityref = do+    bracket (tok TokAmp) (tok TokSemi) name++charref :: XParser CharRef+charref = do+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)+  where+    readCharVal ('#':'x':i) = return . fst . head . readHex $ i+    readCharVal ('#':i)     = return . fst . head . readDec $ i+    readCharVal _           = mzero+-}++pereference :: XParser PEReference+pereference = do+    bracket (tok TokPercent) (tok TokSemi) nmtoken++entitydecl :: XParser EntityDecl+entitydecl =+    ( gedecl >>= return . EntityGEDecl) `onFail`+    ( pedecl >>= return . EntityPEDecl)++gedecl :: XParser GEDecl+gedecl = do+    tok TokSpecialOpen+    tok (TokSpecial ENTITYx)+    n <- name+    e <- entitydef `adjustErrBad` (("in general entity defn "++n++",\n")++)+    tok TokAnyClose `onFail` failBadP ("expected > terminating G ENTITY decl "++n)+    stUpdate (addGE n e) `debug` ("added GE defn &"++n++";")+    return (GEDecl n e)++pedecl :: XParser PEDecl+pedecl = do+    tok TokSpecialOpen+    tok (TokSpecial ENTITYx)+    tok TokPercent+    n <- name+    e <- pedef `adjustErrBad` (("in parameter entity defn "++n++",\n")++)+    tok TokAnyClose `onFail` failBadP ("expected > terminating P ENTITY decl "++n)+    stUpdate (addPE n e) `debug` ("added PE defn %"++n++";\n"++show e)+    return (PEDecl n e)++entitydef :: XParser EntityDef+entitydef =+    oneOf' [ ("entityvalue", entityvalue >>= return . DefEntityValue)+           , ("external",    do eid <- externalid+                                ndd <- maybe ndatadecl+                                return (DefExternalID eid ndd))+           ]++pedef :: XParser PEDef+pedef =+    oneOf' [ ("entityvalue", entityvalue >>= return . PEDefEntityValue)+           , ("externalid",  externalid  >>= return . PEDefExternalID)+           ]++externalid :: XParser ExternalID+externalid =+    oneOf' [ ("SYSTEM", do word "SYSTEM"+                           s <- systemliteral+                           return (SYSTEM s) )+           , ("PUBLIC", do word "PUBLIC"+                           p <- pubidliteral+                           s <- systemliteral+                           return (PUBLIC p s) )+           ]+      `adjustErr` ("looking for an external id,\n"++)++ndatadecl :: XParser NDataDecl+ndatadecl = do+    word "NDATA"+    n <- name+    return (NDATA n)++textdecl :: XParser TextDecl+textdecl = do+    tok TokPIOpen+    (word "xml" `onFail` word "XML")+    v <- maybe versioninfo+    e <- encodingdecl+    tok TokPIClose `onFail` failP "expected ?> terminating text decl"+    return (TextDecl v e)++extparsedent :: XParser (ExtParsedEnt Posn)+extparsedent = do+    t <- maybe textdecl+    c <- content+    return (ExtParsedEnt t c)++extpe :: XParser ExtPE+extpe = do+    t <- maybe textdecl+    e <- many (peRef extsubsetdecl)+    return (ExtPE t e)++encodingdecl :: XParser EncodingDecl+encodingdecl = do+    (word "encoding" `onFail` word "ENCODING")+    tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"+    f <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (EncodingDecl f)++notationdecl :: XParser NotationDecl+notationdecl = do+    tok TokSpecialOpen+    tok (TokSpecial NOTATIONx)+    n <- name+    e <- either externalid publicid+    tok TokAnyClose `onFail` failBadP ("expected > terminating NOTATION decl "++n)+    return (NOTATION n e)++publicid :: XParser PublicID+publicid = do+    word "PUBLIC"+    p <- pubidliteral+    return (PUBLICID p)++entityvalue :: XParser EntityValue+entityvalue = do+ -- evs <- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))+    tok TokQuote+    pn <- posn+    evs <- many ev+    tok TokQuote `onFail` failBadP "expected quote to terminate entityvalue"+    -- quoted text must be rescanned for possible PERefs+    st <- stGet+ -- Prelude.either failBad (return . EntityValue) . fst3 $+    return . EntityValue . fst3 $+                (runParser (many ev) st+                         (reLexEntityValue (\s-> stringify (lookupPE s st))+                                           pn+                                           (flattenEV (EntityValue evs))))+  where+    stringify (Just (PEDefEntityValue ev)) = Just (flattenEV ev)+    stringify _ = Nothing++ev :: XParser EV+ev =+    oneOf' [ ("string",    (string`onFail`freetext) >>= return . EVString)+           , ("reference", reference >>= return . EVRef)+           ]+      `adjustErr` ("looking for entity value,\n"++)++attvalue :: XParser AttValue+attvalue = do+    avs <- bracket (tok TokQuote) (tok TokQuote)+                   (many (either freetext reference))+    return (AttValue avs)++systemliteral :: XParser SystemLiteral+systemliteral = do+    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (SystemLiteral s)            -- note: refs &...; not permitted++pubidliteral :: XParser PubidLiteral+pubidliteral = do+    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    return (PubidLiteral s)             -- note: freetext is too liberal here++-- | Return parsed freetext (i.e. until the next markup)+chardata :: XParser CharData+chardata = freetext+
+ src/Text/XML/HaXml/Posn.hs view
@@ -0,0 +1,75 @@+-- | Define a position datatype for giving locations in error messages.+module Text.XML.HaXml.Posn+  (+  -- * Position type+    Posn()+  -- ** Constructors of a new position+  , posInNewCxt    -- :: String -> Maybe Posn -> Posn+  , noPos          -- :: Posn+  -- ** Strictifier+  , forcep+  -- ** Modifiers+  , addcol, newline, tab, white+  -- ** Accessors+  , posnFilename, posnLine, posnColumn+  ) where++import Char++-- | Source positions contain a filename, line, column, and an+--   inclusion point, which is itself another source position,+--   recursively.+data Posn = Pn String !Int !Int (Maybe Posn)+        deriving (Eq)++posnFilename :: Posn -> FilePath+posnFilename (Pn f _ _ _) = f++posnLine, posnColumn :: Posn -> Int+posnLine   (Pn _ x _ _) = x+posnColumn (Pn _ _ x _) = x++-- | Dummy value for generated data, where a true source position does+--   not exist.+noPos :: Posn+noPos = Pn "no recorded position" 0 0 Nothing++-- | @posInNewCxt name pos@ creates a new source position from an old one.+--   It is used when opening a new file (e.g. a DTD inclusion), to denote+--   the start of the file @name@, but retain the stacked information that+--   it was included from the old @pos@.+posInNewCxt :: String -> Maybe Posn -> Posn+posInNewCxt name pos = Pn name 1 1 pos++instance Show Posn where+      showsPrec p (Pn f l c i) = showString f .+                                 showString "  at line " . shows l .+                                 showString " col " . shows c .+                                 ( case i of+                                    Nothing -> id+                                    Just p  -> showString "\n    used by  " .+                                               shows p )++-- | Just used to strictify the internal values of a position, to avoid+--   space leaks.+forcep :: Posn -> Int+forcep (Pn f n m i) = m `seq` n++-- | Add n character positions to the given position.+addcol :: Int -> Posn -> Posn+addcol n (Pn f r c i) = Pn f r (c+n) i++-- | Add a newline or tab to the given position.+newline, tab :: Posn -> Posn+newline (Pn f r c i) = Pn f (r+1) 1 i+tab     (Pn f r c i) = Pn f r (((c`div`8)+1)*8) i++-- | Add the given whitespace char to the given position.+--   Precondition: @white c | isSpace c = True@+white :: Char -> Posn -> Posn+white ' '  = addcol 1+white '\n' = newline+white '\r' = id+white '\t' = tab+white '\xa0' = addcol 1+
src/Text/XML/HaXml/Pretty.hs view
@@ -1,6 +1,6 @@ -- | This is a pretty-printer for turning the internal representation --   of generic structured XML documents into the Doc type (which can---   later be rendered using Text.ParserCombinators.HughesPJ.render).+--   later be rendered using Text.PrettyPrint.HughesPJ.render). --   Essentially there is one pp function for each type in --   Text.Xml.HaXml.Types, so you can pretty-print as much or as little --   of the document as you wish.@@ -38,7 +38,7 @@  ---- -document :: Document -> Doc+document :: Document i -> Doc prolog   :: Prolog -> Doc xmldecl  :: XMLDecl -> Doc misc     :: Misc -> Doc@@ -50,9 +50,9 @@ extsubsetdecl :: ExtSubsetDecl -> Doc cp          :: CP -> Doc -element   :: Element -> Doc+element   :: Element i -> Doc attribute :: Attribute -> Doc                     --etc-content   :: Content -> Doc+content   :: Content i -> Doc  ---- @@ -65,8 +65,8 @@                              maybe encodingdecl e <+>                              maybe sddecl sd <+>                              text "?>"-misc (Comment s)           = text "<!--" <+> text s <+> text "-->"-misc (PI (n,s))            = text "<?" <> text n <+> text s <+> text "?>"+misc (Comment s)           = text "<!--" <> text s <> text "-->"+misc (PI (n,s))            = text "<?" <> text n <+> text s <> text "?>" sddecl sd   | sd           = text "standalone='yes'"             | otherwise    = text "standalone='no'" doctypedecl (DTD n eid ds) = if null ds then @@ -99,9 +99,9 @@     | otherwise        = let (d,c) = carryelem e empty                          in d <> c -isText (CString _ _) = True-isText (CRef _)    = True-isText _           = False+isText (CString _ _ _) = True+isText (CRef _ _)      = True+isText _               = False  carryelem (Elem n as []) c                        = ( c <>@@ -116,11 +116,11 @@                             nest 2 (vcat cs0) <> --- $$                             d0 <> text "</" <> text n                           , text ">")-carrycontent (CElem e) c   = carryelem e c-carrycontent (CString False s) c = (c <> chardata s, empty)-carrycontent (CString True  s) c = (c <> cdsect s, empty)-carrycontent (CRef r) c    = (c <> reference r, empty)-carrycontent (CMisc m) c   = (c <> misc m, empty)+carrycontent (CElem e _) c   = carryelem e c+carrycontent (CString False s _) c = (c <> chardata s, empty)+carrycontent (CString True  s _) c = (c <> cdsect s, empty)+carrycontent (CRef r _) c    = (c <> reference r, empty)+carrycontent (CMisc m _) c   = (c <> misc m, empty)  carryscan :: (a->c->(b,c)) -> [a] -> c -> ([b],c) carryscan f []     c = ([],c)@@ -146,12 +146,12 @@ --carrycontent (d,c) (CMisc m)   = (d $$ c <> misc m,     empty)  -attribute (n,v)        = text n <> text "=" <> attvalue v-content (CElem e)      = element e-content (CString False s) = chardata s-content (CString True s)  = cdsect s-content (CRef r)       = reference r-content (CMisc m)      = misc m+attribute (n,v)             = text n <> text "=" <> attvalue v+content (CElem e _)         = element e+content (CString False s _) = chardata s+content (CString True s _)  = cdsect s+content (CRef r _)          = reference r+content (CMisc m _)         = misc m  elementdecl (ElementDecl n cs) = text "<!ELEMENT" <+> text n <+>                                  contentspec cs <> text ">"@@ -160,7 +160,7 @@ contentspec (Mixed m)          = mixed m contentspec (ContentSpec c)    = cp c --contentspec (ContentPE p cs)   = peref p-cp (TagName n m)       = text n <> modifier m+cp (TagName n m)       = parens (text n) <> modifier m cp (Choice cs m)       = parens (hcat (intersperse (text "|") (map cp cs))) <>                            modifier m cp (Seq cs m)          = parens (hcat (intersperse (text ",") (map cp cs))) <>@@ -214,7 +214,7 @@ entitydecl (EntityPEDecl d)    = pedecl d gedecl (GEDecl n ed)           = text "<!ENTITY" <+> text n <+> entitydef ed <>                                  text ">"-pedecl (PEDecl n pd)           = text "<!ENTITY %" <> text n <+> pedef pd <>+pedecl (PEDecl n pd)           = text "<!ENTITY %" <+> text n <+> pedef pd <>                                  text ">" entitydef (DefEntityValue ev)  = entityvalue ev entitydef (DefExternalID i nd) = externalid i <+> maybe ndatadecl nd@@ -225,14 +225,14 @@                                  systemliteral sl ndatadecl (NDATA n)            = text "NDATA" <+> text n textdecl (TextDecl vi ed)      = text "<?xml" <+> maybe text vi <+>-                                 encodingdecl ed <> text "?>"+                                 encodingdecl ed <+> text "?>" extparsedent (ExtParsedEnt t c)= maybe textdecl t <+> content c extpe (ExtPE t esd)            = maybe textdecl t <+>                                  vcat (map extsubsetdecl esd) notationdecl (NOTATION n e)    = text "<!NOTATION" <+> text n <+>                                  either externalid publicid e <>                                  text ">"-publicid (PUBLICID p)          = text "PUBLICID" <+> pubidliteral p+publicid (PUBLICID p)          = text "PUBLIC" <+> pubidliteral p encodingdecl (EncodingDecl s)  = text "encoding='" <> text s <> text "'" nmtoken s                      = text s attvalue (AttValue esr)        = text "\"" <>
+ src/Text/XML/HaXml/SAX.hs view
@@ -0,0 +1,93 @@+-- | A streaming XML parser, using a method known as SAX. SAX isn't really a+--   standard, but an implementation, so it's just an \"SAX-like\" parser.+--   This module allows you parse an XML document without having to evaluate+--   it as a whole. This is needed for protocols like jabber, which use xml+--   streams for communication.++module Text.XML.HaXml.SAX+	( SaxElement(..)+	, saxParse+	) where++import Text.XML.HaXml.Types+import Text.XML.HaXml.Parse+import Text.XML.HaXml.Lex+import Text.ParserCombinators.PolyState++data SaxElement+	= SaxDocTypeDecl DocTypeDecl+		-- ^ A doctype declaration occured(\<!DOCTYPE\>)+	| SaxProcessingInstruction ProcessingInstruction+		-- ^ A processing instruction occured (\<??\>)+	| SaxComment String		-- ^ A comment occured (\<!-- --\>)+	| SaxElementOpen Name [Attribute] -- ^ An element was opened (\<\>)+	| SaxElementClose Name		-- ^ An element was closed (\<\/\>)+	| SaxElementTag Name [Attribute]+		-- ^ An element without content occured (\<\/\>)+	| SaxCharData CharData		-- ^ Some string data occured+	| SaxReference Reference	-- ^ A reference occured++-- | @saxParse file content@ takes a filename and the string content of that+--   file and generates a stream of @SaxElement@s. If an error occurs, the+--   parsing stops and a string is returned using the @Maybe@ type.+saxParse :: String -- ^ The filename+	 -> String -- ^ The content of the file+	 -> ([SaxElement],Maybe String)+		-- ^ A tuple of the parsed elements and @Nothing@, if no+		--   error occured, or @Just@ @String@ if an error occured.+saxParse file content = parseStream sax emptySTs+                                    (xmlLex file content)++parseStream :: Parser s t a -> s -> [t] -> ([a], Maybe String)+parseStream _ _ [] = ([],Nothing)+parseStream p state toks = case runParser p state toks of+	(Left err, _, _) -> ([],Just err)+	(Right res, nstate, rest) -> (res:moreres, err)+            where (moreres,err) = parseStream p nstate rest++sax :: XParser SaxElement+sax = oneOf [ saxelementopen+            , saxelementclose+            , saxprocessinginstruction+            , saxcomment+            , saxdoctypedecl+            , saxreference+            , saxchardata+            ]+	`adjustErr` (++("\nLooking for a SAX event:\n"+               ++"  elem-open, elem-close, PI, comment, DTD, ref, or chardata"))++saxelementopen :: XParser SaxElement+saxelementopen = do+	tok TokAnyOpen+	(ElemTag n as) <- elemtag+	(( do tok TokEndClose+	      return (SaxElementTag n as)) `onFail`+	 ( do tok TokAnyClose+	      return (SaxElementOpen n as))+	 `onFail` fail "missing > or /> in element tag")++saxelementclose :: XParser SaxElement+saxelementclose = do+	tok TokEndOpen+	n <- name+	tok TokAnyClose+	return (SaxElementClose n)++saxcomment :: XParser SaxElement+saxcomment = comment >>= return . SaxComment++saxchardata :: XParser SaxElement+saxchardata = +  (cdsect >>= return . SaxCharData)+  `onFail`+  (chardata >>= return . SaxCharData)++saxreference :: XParser SaxElement+saxreference = reference >>= return . SaxReference	++saxdoctypedecl :: XParser SaxElement+saxdoctypedecl = doctypedecl >>= return . SaxDocTypeDecl++saxprocessinginstruction :: XParser SaxElement+saxprocessinginstruction = fmap SaxProcessingInstruction processinginstruction
+ src/Text/XML/HaXml/ShowXmlLazy.hs view
@@ -0,0 +1,279 @@++module Text.XML.HaXml.ShowXmlLazy (showXmlLazy) where++import Text.XML.HaXml.Types+import Text.XML.HaXml.TypeMapping++import qualified Text.XML.HaXml.XmlContent as X+import Prelude hiding (maybe,either)+import Maybe hiding (maybe)+import Data.List++-- | Convert a fully-typed XML document to a string (without DTD).                                         +showXmlLazy :: X.XmlContent a => Bool -> a -> String+showXmlLazy dtd x =+    case X.toContents x of+      [CElem _ _] -> document $ toXmlLazy dtd x+      _ -> ""+++-- | Convert a fully-typed XML document to a string (with or without DTD).                                 +toXmlLazy :: X.XmlContent a => Bool -> a -> Document ()+toXmlLazy dtd value =+    let ht = toHType value in+    Document (Prolog (Just (XMLDecl "1.0" Nothing Nothing))+                     [] (if dtd then Just (toDTD ht) else Nothing) [])+             emptyST+             ( case (ht, X.toContents value) of+                 (Tuple _, cs)       -> Elem (showHType ht "") [] cs+                 (Defined _ _ _, cs) -> Elem (showHType ht "-XML") [] cs+                 (_, [CElem e ()])   -> e )+             []+++++type Doc = String+empty = ""+($$) a b = a ++ "\n" ++ b+vcat a = foldr ($$) [] a+hcat = concat+(<>) = (++)+(<+>) a b = a ++ " " ++ b+fsep = vcat+text string = string+parens string = "("++string++")"+nest _ string = string++++either f g (Left x)  = f x+either f g (Right x) = g x++maybe f Nothing  = empty+maybe f (Just x) = f x++--peref p   = text "%" <> text p <> text ";"++----++document :: Document i -> Doc+prolog   :: Prolog -> Doc+xmldecl  :: XMLDecl -> Doc+misc     :: Misc -> Doc+sddecl   :: Bool -> Doc++doctypedecl :: DocTypeDecl -> Doc+markupdecl  :: MarkupDecl -> Doc+extsubset   :: ExtSubset -> Doc+extsubsetdecl :: ExtSubsetDecl -> Doc+cp          :: CP -> Doc++element   :: Element i -> Doc+attribute :: Attribute -> Doc                     --etc+content   :: Content i -> Doc++----++document (Document p _ e m)= prolog p $$ element e $$ vcat (map misc m)+prolog (Prolog x m1 dtd m2)= maybe xmldecl x $$+                             vcat (map misc m1) $$+                             maybe doctypedecl dtd $$+                             vcat (map misc m2)+xmldecl (XMLDecl v e sd)   = text "<?xml version='" <> text v <> text "'" <+>+                             maybe encodingdecl e <+>+                             maybe sddecl sd <+>+                             text "?>"+misc (Comment s)           = text "<!--" <+> text s <+> text "-->"+misc (PI (n,s))            = text "<?" <> text n <+> text s <+> text "?>"+sddecl sd   | sd           = text "standalone='yes'"+            | otherwise    = text "standalone='no'"+doctypedecl (DTD n eid ds) = if null ds then +                                  hd <> text ">"+                             else hd <+> text " [" $$+                                  vcat (map markupdecl ds) $$ text "]>"+                           where hd = text "<!DOCTYPE" <+> text n <+>+                                      maybe externalid eid+markupdecl (Element e)     = elementdecl e+markupdecl (AttList a)     = attlistdecl a+markupdecl (Entity e)      = entitydecl e+markupdecl (Notation n)    = notationdecl n+markupdecl (MarkupMisc m)  = misc m+--markupdecl (MarkupPE p m)  = peref p+extsubset (ExtSubset t ds) = maybe textdecl t $$+                             vcat (map extsubsetdecl ds)+extsubsetdecl (ExtMarkupDecl m)      = markupdecl m+extsubsetdecl (ExtConditionalSect c) = conditionalsect c+--extsubsetdecl (ExtPEReference p e)   = peref p++element (Elem n as []) = text "<" <> text n <+>+                         fsep (map attribute as) <> text "/>"+element e@(Elem n as cs)+--  | any isText cs    = text "<" <> text n <+> fsep (map attribute as) <>+--                       text ">" <> hcat (map content cs) <>+--                       text "</" <> text n <> text ">"+    | isText (head cs) = text "<" <> text n <+> fsep (map attribute as) <>+                         text ">" <> hcat (map content cs) <>+                         text "</" <> text n <> text ">"+    | otherwise        = let (d,c) = carryelem e empty+                         in d <> c++isText (CString _ _ _) = True+isText (CRef _ _)      = True+isText _               = False++carryelem (Elem n as []) c+                       = ( c <>+                           text "<" <> text n <+> fsep (map attribute as)+                         , text "/>")+carryelem e@(Elem n as cs) c+--  | any isText cs    =  ( c <> element e, empty)+    | otherwise        =  let (cs0,d0) = carryscan carrycontent cs (text ">")+                          in+                          ( c <>+                            text "<" <> text n <+> fsep (map attribute as) $$+                            nest 2 (vcat cs0) <> --- $$+                            d0 <> text "</" <> text n+                          , text ">")+carrycontent (CElem e _) c   = carryelem e c+carrycontent (CString False s _) c = (c <> chardata s, empty)+carrycontent (CString True  s _) c = (c <> cdsect s, empty)+carrycontent (CRef r _) c    = (c <> reference r, empty)+carrycontent (CMisc m _) c   = (c <> misc m, empty)++carryscan :: (a->c->(b,c)) -> [a] -> c -> ([b],c)+carryscan f []     c = ([],c)+carryscan f (a:as) c = let (b, c0) = f a c+                           (bs,c1) = carryscan f as c0+                       in (b:bs, c1)++--carryelem e@(Elem n as cs) c+--  | isText (head cs) =+--        ( start <>+--          text ">" <> hcat (map content cs) <> text "</" <> text n+--        , text ">")+--  | otherwise =+--        let (d,c0) = foldl carrycontent (start, text ">") cs in+--        ( d <> c0 <> text "</" <> text n+--        , text ">")+--  where start = c <> text "<" <> text n <+> fsep (map attribute as)+--+--carrycontent (d,c) (CElem e)   = let (d',c') = carryelem e c in+--                                 (d $$ nest 2 d',       c')+--carrycontent (d,c) (CString _ s) = (d <> c <> chardata s, empty)+--carrycontent (d,c) (CRef r)    = (d <> c <> reference r,empty)+--carrycontent (d,c) (CMisc m)   = (d $$ c <> misc m,     empty)+++attribute (n,v)             = text n <> text "=" <> attvalue v+content (CElem e _)         = element e+content (CString False s _) = chardata s+content (CString True s _)  = cdsect s+content (CRef r _)          = reference r+content (CMisc m _)         = misc m++elementdecl (ElementDecl n cs) = text "<!ELEMENT" <+> text n <+>+                                 contentspec cs <> text ">"+contentspec EMPTY              = text "EMPTY"+contentspec ANY                = text "ANY"+contentspec (Mixed m)          = mixed m+contentspec (ContentSpec c)    = cp c+--contentspec (ContentPE p cs)   = peref p+cp (TagName n m)       = text n <> modifier m+cp (Choice cs m)       = parens (hcat (intersperse (text "|") (map cp cs))) <>+                           modifier m+cp (Seq cs m)          = parens (hcat (intersperse (text ",") (map cp cs))) <>+                           modifier m+--cp (CPPE p c)          = peref p+modifier None          = empty+modifier Query         = text "?"+modifier Star          = text "*"+modifier Plus          = text "+"+mixed  PCDATA          = text "(#PCDATA)"+mixed (PCDATAplus ns)  = text "(#PCDATA |" <+>+                         hcat (intersperse (text "|") (map text ns)) <>+                         text ")*"++attlistdecl (AttListDecl n ds) = text "<!ATTLIST" <+> text n <+>+                                 fsep (map attdef ds) <> text ">"+attdef (AttDef n t d)          = text n <+> atttype t <+> defaultdecl d+atttype  StringType            = text "CDATA"+atttype (TokenizedType t)      = tokenizedtype t+atttype (EnumeratedType t)     = enumeratedtype t+tokenizedtype ID               = text "ID"+tokenizedtype IDREF            = text "IDREF"+tokenizedtype IDREFS           = text "IDREFS"+tokenizedtype ENTITY           = text "ENTITY"+tokenizedtype ENTITIES         = text "ENTITIES"+tokenizedtype NMTOKEN          = text "NMTOKEN"+tokenizedtype NMTOKENS         = text "NMTOKENS"+enumeratedtype (NotationType n)= notationtype n+enumeratedtype (Enumeration e) = enumeration e+notationtype ns                = text "NOTATION" <+>+                                 parens (hcat (intersperse (text "|") (map text ns)))+enumeration ns                 = parens (hcat (intersperse (text "|") (map nmtoken ns)))+defaultdecl  REQUIRED          = text "#REQUIRED"+defaultdecl  IMPLIED           = text "#IMPLIED"+defaultdecl (DefaultTo a f)    = maybe (const (text "#FIXED")) f <+> attvalue a+conditionalsect (IncludeSect i)= text "<![INCLUDE [" <+>+                                 vcat (map extsubsetdecl i) <+> text "]]>"+conditionalsect (IgnoreSect i) = text "<![IGNORE [" <+>+                                 fsep (map ignoresectcontents i) <+> text "]]>"+ignore (Ignore)                = empty+ignoresectcontents (IgnoreSectContents i is)+                               = ignore i <+> vcat (map internal is)+                          where internal (ics,i) = text "<![[" <+>+                                                   ignoresectcontents ics <+>+                                                   text "]]>" <+> ignore i+reference (RefEntity er)       = entityref er+reference (RefChar cr)         = charref cr+entityref n                    = text "&" <> text n <> text ";"+charref c                      = text "&#" <> text (show c) <> text ";"+entitydecl (EntityGEDecl d)    = gedecl d+entitydecl (EntityPEDecl d)    = pedecl d+gedecl (GEDecl n ed)           = text "<!ENTITY" <+> text n <+> entitydef ed <>+                                 text ">"+pedecl (PEDecl n pd)           = text "<!ENTITY %" <> text n <+> pedef pd <>+                                 text ">"+entitydef (DefEntityValue ev)  = entityvalue ev+entitydef (DefExternalID i nd) = externalid i <+> maybe ndatadecl nd+pedef (PEDefEntityValue ev)    = entityvalue ev+pedef (PEDefExternalID eid)    = externalid eid+externalid (SYSTEM sl)         = text "SYSTEM" <+> systemliteral sl+externalid (PUBLIC i sl)       = text "PUBLIC" <+> pubidliteral i <+>+                                 systemliteral sl+ndatadecl (NDATA n)            = text "NDATA" <+> text n+textdecl (TextDecl vi ed)      = text "<?xml" <+> maybe text vi <+>+                                 encodingdecl ed <> text "?>"+extparsedent (ExtParsedEnt t c)= maybe textdecl t <+> content c+extpe (ExtPE t esd)            = maybe textdecl t <+>+                                 vcat (map extsubsetdecl esd)+notationdecl (NOTATION n e)    = text "<!NOTATION" <+> text n <+>+                                 either externalid publicid e <>+                                 text ">"+publicid (PUBLICID p)          = text "PUBLICID" <+> pubidliteral p+encodingdecl (EncodingDecl s)  = text "encoding='" <> text s <> text "'"+nmtoken s                      = text s+attvalue (AttValue esr)        = text "\"" <>+                                 hcat (map (either text reference) esr) <>+                                 text "\""+entityvalue (EntityValue evs)+  | containsDoubleQuote evs    = text "'"  <> hcat (map ev evs) <> text "'"+  | otherwise                  = text "\"" <> hcat (map ev evs) <> text "\""+ev (EVString s)                = text s+--ev (EVPERef p e)               = peref p+ev (EVRef r)                   = reference r+pubidliteral (PubidLiteral s)+    | '"' `elem` s             = text "'" <> text s <> text "'"+    | otherwise                = text "\"" <> text s <> text "\""+systemliteral (SystemLiteral s)+    | '"' `elem` s             = text "'" <> text s <> text "'"+    | otherwise                = text "\"" <> text s <> text "\""+chardata s                     = {-if all isSpace s then empty else-} text s+cdsect c                       = text "<![CDATA[" <> chardata c <> text "]]>"++----+containsDoubleQuote evs = any csq evs+    where csq (EVString s) = '"' `elem` s+          csq _            = False+
+ src/Text/XML/HaXml/TypeMapping.hs view
@@ -0,0 +1,213 @@+module Text.XML.HaXml.TypeMapping+  (+  -- * A class to get an explicit type representation for any value+    HTypeable(..)	-- sole method, toHType+  -- * Explicit representation of Haskell datatype information+  , HType(..)		-- instance of Eq, Show+  , Constr(..)		-- instance of Eq, Show+  -- * Helper functions to extract type info as strings+  , showHType		-- :: HType -> ShowS+  , showConstr		-- :: Int -> HType -> String+  -- * Conversion from Haskell datatype to DTD+  , toDTD+  ) where++import Text.XML.HaXml.Types+import Data.List (partition, intersperse)+import Text.PrettyPrint.HughesPJ (render)+import qualified Text.XML.HaXml.Pretty as PP+++------------------------------------------------------------------------+        -- idea: in DrIFT,+        --      named field == primitive type, becomes an attribute+        --      named field == single-constructor type, renames the tag+        --      named field == multi-constructor type, as normal+        -- if prefix of all named fields is roughly typename, delete it++-- | @HTypeable@ promises that we can create an explicit representation of+--   of the type of any value.+class HTypeable a where+    toHType :: a -> HType++-- | A concrete representation of any Haskell type.+data HType =+      Maybe HType+    | List HType+    | Tuple [HType]+    | Prim String String        -- ^ separate Haskell name and XML name+    | String+    | Defined String [HType] [Constr]+	-- ^ A user-defined type has a name, a sequence of type variables,+	--   and a set of constructors.  (The variables might already be+	--   instantiated to actual types.)+    deriving (Show)++instance Eq HType where+    (Maybe x)  == (Maybe y)  =  x==y+    (List x)   == (List y)   =  x==y+    (Tuple xs) == (Tuple ys) =  xs==ys+    (Prim x _) == (Prim y _) =  x==y+    String     == String     =  True+    (Defined n xs _) == (Defined m ys _)  =  n==m 	-- && xs==ys+    _          == _          =  False++-- | A concrete representation of any user-defined Haskell constructor.+--   The constructor has a name, and a sequence of component types.  The+--   first sequence of types represents the minimum set of free type+--   variables occurring in the (second) list of real component types.+--   If there are fieldnames, they are contained in the final list, and+--   correspond one-to-one with the component types.+--   The Synonym alternative is for where the type-mapping from Haskell to+--   XML is user-defined rather than automatic.  There, one might wish to+--   rename an existing XML type, without the addition of a constructor\/tag.+data Constr = Constr String [HType] [HType] -- (Maybe [String])+            | Synonym HType+    deriving (Eq,Show)++-- | Project the n'th constructor from an HType and convert it to a string+--   suitable for an XML tagname.+showConstr :: Int -> HType -> String+showConstr n (Defined _ _ cs) = flatConstr (cs!!n) ""+showConstr n _ = error "no constructors for builtin types"++------------------------------------------------------------------------+-- Some instances+instance HTypeable Bool where+    toHType   _    = Prim "Bool" "bool"+instance HTypeable Int where+    toHType   _    = Prim "Int" "int"+instance HTypeable Integer where+    toHType   _    = Prim "Integer" "integer"+instance HTypeable Float where+    toHType   _    = Prim "Float" "float"+instance HTypeable Double where+    toHType   _    = Prim "Double" "double"+instance HTypeable Char where+    toHType   _    = Prim "Char" "char"++instance HTypeable () where+    toHType _      = Prim "unit" "unit"+instance (HTypeable a, HTypeable b) => HTypeable (a,b) where+    toHType p      = Tuple [toHType a, toHType b]+                   where  (a,b) = p+instance (HTypeable a, HTypeable b, HTypeable c) => HTypeable (a,b,c) where+    toHType p      = Tuple [toHType a, toHType b, toHType c]+                   where  (a,b,c) = p+instance (HTypeable a) => HTypeable (Maybe a) where+    toHType m      = Maybe (toHType x)   where   (Just x) = m+instance (HTypeable a, HTypeable b) => HTypeable (Either a b) where+    toHType m      = Defined "Either" [hx, hy]+                         [ Constr "Left" [hx] [hx] {-Nothing-}+                         , Constr "Right" [hy] [hy] {-Nothing-}]+                   where (Left x)  = m+                         (Right y) = m+                         hx = toHType x+                         hy = toHType y++instance HTypeable a => HTypeable [a] where+    toHType xs     = case toHType x of (Prim "Char" _) -> String+                                       _ -> List (toHType x)+                   where  (x:_) = xs++------------------------------------------------------------------------++-- | 'toDTD' converts a concrete representation of the Haskell type of+--   a value (obtained by the method 'toHType') into a real DocTypeDecl.+--   It ensures that PERefs are defined before they are used, and that no+--   element or attribute-list is declared more than once.+toDTD :: HType -> DocTypeDecl+toDTD ht =+  DTD (toplevel ht) Nothing (macrosFirst (reverse (h2d True [] [] [ht])))+  where+    macrosFirst :: [MarkupDecl] -> [MarkupDecl]+    macrosFirst decls = concat [p, p'] where (p, p') = partition f decls+                                             f (Entity _) = True+                                             f _ = False+    toplevel ht@(Defined _ _ _) = showHType ht "-XML"+    toplevel ht@_               = showHType ht ""+    c0 = False+    h2d :: Bool -> [HType] -> [Constr] -> [HType] -> [MarkupDecl]+    -- toplevel?   history    history   remainingwork     result+    h2d c history chist []       = []+    h2d c history chist (ht:hts) =+      if ht `elem` history then h2d c0 history chist hts+      else+        case ht of+          Maybe ht0  -> declelem ht: h2d c0 (ht:history) chist (ht0:hts)+          List ht0   -> declelem ht: h2d c0 (ht:history) chist (ht0:hts)+          Tuple hts0 -> (c ? (declelem ht:))+                                     (h2d c0 history chist (hts0++hts))+          Prim s t   -> declprim ht ++ h2d c0 (ht:history) chist hts+          String     -> declstring:    h2d c0 (ht:history) chist hts+          Defined s _ cs ->+               let hts0 = concatMap grab cs in+               (c ? (decltopelem ht:)) (declmacro ht chist)+               ++ h2d c0 (ht:history) (cs++chist) (hts0++hts)+    declelem ht =+      Element (ElementDecl (showHType ht "") (ContentSpec (outerHtExpr ht)))+    decltopelem ht =    -- hack to avoid peref at toplevel+      Element (ElementDecl (showHType ht "-XML") (ContentSpec (innerHtExpr ht None)))+    declmacro ht@(Defined _ _ cs) chist =+      Entity (EntityPEDecl (PEDecl (showHType ht "") (PEDefEntityValue ev))):+      concatMap (declConstr chist) cs+      where ev = EntityValue [EVString (render (PP.cp (outerHtExpr ht)))]+    declConstr chist c@(Constr s fv hts)+      | c `notElem` chist =+          [Element (ElementDecl (flatConstr c "") (ContentSpec (constrHtExpr c)))]+      | otherwise = [] +    declConstr _ (Synonym ht) = []+    declprim (Prim s t) =+      [ Element (ElementDecl t EMPTY)+      , AttList (AttListDecl t [AttDef "value" StringType REQUIRED])]+    declstring =+      Element (ElementDecl "string" (Mixed PCDATA))+    grab (Constr _ _ hts) = hts+    grab (Synonym ht) = [ht]++(?) :: Bool -> (a->a) -> (a->a)+b ? f | b     = f+      | not b = id++-- Flatten an HType to a String suitable for an XML tagname.+showHType :: HType -> ShowS+showHType (Maybe ht)  = showString "maybe-" . showHType ht+showHType (List ht)   = showString "list-" . showHType ht+showHType (Tuple hts) = showString "tuple" . shows (length hts)+                        . showChar '-'+                        . foldr1 (.) (intersperse (showChar '-')+                                                  (map showHType hts))+showHType (Prim s t)  = showString t+showHType String      = showString "string"+showHType (Defined s fv _)+                      = showString s . ((length fv > 0) ? (showChar '-'))+                        . foldr (.) id (intersperse (showChar '-')+                                                    (map showHType fv))++flatConstr :: Constr -> ShowS+flatConstr (Constr s fv _)+        = showString s . ((length fv > 0) ? (showChar '-'))+          . foldr (.) id (intersperse (showChar '-') (map showHType fv))+flatConstr (Synonym ht) = id++outerHtExpr :: HType -> CP+outerHtExpr (Maybe ht)      = innerHtExpr ht Query+outerHtExpr (List ht)       = innerHtExpr ht Star+outerHtExpr (Defined s fv cs) =+    Choice (map (\c->TagName (flatConstr c "") None) cs) None+outerHtExpr ht              = innerHtExpr ht None++innerHtExpr :: HType -> Modifier -> CP+innerHtExpr (Prim s t)  m = TagName t m+innerHtExpr (Tuple hts) m = Seq (map (\c-> innerHtExpr c None) hts) m+innerHtExpr ht@(Defined s hts cs) m = -- CPPE (showHType ht "") (outerHtExpr ht)+                                      TagName ('%': showHType ht ";") m+                                                        --  ***HACK!!!***+innerHtExpr ht m = TagName (showHType ht "") m++constrHtExpr :: Constr -> CP+constrHtExpr (Constr s fv [])  = TagName "EMPTY" None   --  ***HACK!!!***+constrHtExpr (Constr s fv hts) = innerHtExpr (Tuple hts) None+constrHtExpr (Synonym ht)      = outerHtExpr ht++------------------------------------------------------------------------
src/Text/XML/HaXml/Types.hs view
@@ -32,6 +32,7 @@   , Content(..)   , Attribute   , AttValue(..)+  , info    -- ** Administrative parts of the document   , Prolog(..)@@ -128,7 +129,7 @@  -- | The symbol table stored in a document holds all its general entity --   reference definitions.-data Document = Document Prolog (SymTab EntityDef) Element [Misc]+data Document i = Document Prolog (SymTab EntityDef) (Element i) [Misc] data Prolog   = Prolog (Maybe XMLDecl) [Misc] (Maybe DocTypeDecl) [Misc] data XMLDecl  = XMLDecl VersionInfo (Maybe EncodingDecl) (Maybe SDDecl)  data Misc     = Comment Comment@@ -152,15 +153,30 @@ data ExtSubsetDecl = ExtMarkupDecl MarkupDecl                    | ExtConditionalSect ConditionalSect -data Element   = Elem Name [Attribute] [Content]+data Element i = Elem Name [Attribute] [Content i] data ElemTag   = ElemTag Name [Attribute]	-- ^ intermediate for parsing type Attribute = (Name, AttValue)-data Content   = CElem Element-               | CString Bool CharData+data Content i = CElem (Element i) i+               | CString Bool CharData i 			-- ^ bool is whether whitespace is significant-               | CRef Reference-               | CMisc Misc+               | CRef Reference i+               | CMisc Misc i +info (CElem _ i) = i+info (CString _ _ i) = i+info (CRef _ i) = i+info (CMisc _ i) = i++instance Functor Document where+  fmap f (Document p st e ms) = Document p st (fmap f e) ms+instance Functor Element where+  fmap f (Elem t as cs) = Elem t as (map (fmap f) cs)+instance Functor Content where+  fmap f (CElem e i)     = CElem (fmap f e) (f i)+  fmap f (CString b s i) = CString b s (f i)+  fmap f (CRef r i)      = CRef r (f i)+  fmap f (CMisc m i)     = CMisc m (f i)+ data ElementDecl = ElementDecl Name ContentSpec data ContentSpec = EMPTY                  | ANY@@ -206,7 +222,7 @@  data Reference    = RefEntity EntityRef                   | RefChar CharRef -                  deriving Eq+                  deriving (Eq, Show) type EntityRef    = Name  type CharRef      = Int type PEReference  = Name @@ -218,13 +234,13 @@ data EntityDef    = DefEntityValue EntityValue                   | DefExternalID ExternalID (Maybe NDataDecl)  data PEDef        = PEDefEntityValue EntityValue-                  | PEDefExternalID ExternalID +                  | PEDefExternalID ExternalID deriving (Show) data ExternalID   = SYSTEM SystemLiteral-                  | PUBLIC PubidLiteral SystemLiteral +                  | PUBLIC PubidLiteral SystemLiteral deriving (Show) newtype NDataDecl = NDATA Name    data TextDecl     = TextDecl (Maybe VersionInfo) EncodingDecl -data ExtParsedEnt = ExtParsedEnt (Maybe TextDecl) Content +data ExtParsedEnt i = ExtParsedEnt (Maybe TextDecl) (Content i) data ExtPE        = ExtPE (Maybe TextDecl) [ExtSubsetDecl]  data NotationDecl    = NOTATION Name (Either ExternalID PublicID) @@ -238,12 +254,19 @@  data AttValue    = AttValue [Either String Reference]                  deriving Eq-data EntityValue = EntityValue [EV] +instance Show AttValue where+  show (AttValue v) = concatMap decode v+    where+      decode (Left  v)               = v+      decode (Right (RefEntity ent)) = "&"++ent++";"+      decode (Right (RefChar cref))  = "&"++show cref++";"++data EntityValue = EntityValue [EV] deriving (Show) data EV = EVString String  --  -- | EVPERef PEReference-        | EVRef Reference -newtype PubidLiteral  = PubidLiteral String -newtype SystemLiteral = SystemLiteral String +        | EVRef Reference  deriving (Show)+newtype PubidLiteral  = PubidLiteral String deriving (Show)+newtype SystemLiteral = SystemLiteral String deriving (Show) type CharData         = String  type CDSect           = CharData 
src/Text/XML/HaXml/Validate.hs view
@@ -6,7 +6,7 @@  import Text.XML.HaXml.Types import Text.XML.HaXml.Combinators (multi,tag,iffind,literal,none,o)-import Text.XML.HaXml.Xml2Haskell (attr2str)+import Text.XML.HaXml.XmlContent (attr2str) import Maybe (fromMaybe,isNothing,fromJust) import List (intersperse,nub,(\\)) import Char (isSpace)@@ -70,7 +70,7 @@ --   If you have several documents to validate against a single DTD, --   then you will gain efficiency by freezing-in the DTD through partial --   application, e.g. @checkMyDTD = validate myDTD@.-validate :: DocTypeDecl -> Element -> [String]+validate :: DocTypeDecl -> Element i -> [String] validate dtd' elem = root dtd' elem ++ partialValidate dtd' elem   where     root (DTD name _ _) (Elem name' _ _) =@@ -79,7 +79,7 @@  -- | 'partialValidate' is like validate, except that it does not check that --   the element type matches that of the DTD's root element.-partialValidate :: DocTypeDecl -> Element -> [String]+partialValidate :: DocTypeDecl -> Element i -> [String] partialValidate dtd' elem = valid elem ++ checkIDs elem   where     dtd = simplifyDTD dtd'@@ -101,7 +101,7 @@         -- are its children in a permissible sequence?         ++ checkContentSpec name (fromMaybe ANY spec) contents         -- now recursively check the element children-        ++ concatMap valid [ elem | CElem elem <- contents ]+        ++ concatMap valid [ elem | CElem elem _ <- contents ]      checkAttr elem (attr, val) =         let typ = lookupFM (attributes dtd) (elem,attr)@@ -139,19 +139,19 @@                       _  -> errs++["Element <"++elem++"> contains extra "                                   ++"elements beyond its content spec."]) -    checkMixed elem permitted (CElem (Elem name _ _))+    checkMixed elem permitted (CElem (Elem name _ _) _)         | not (name `Prelude.elem` permitted) =             ["Element <"++elem++"> contains an element <"++name              ++"> but should not."]     checkMixed elem permitted _ = [] -    flatten (CElem (Elem name _ _): cs) = name: flatten cs-    flatten (_: cs)                     = flatten cs-    flatten []                          = []+    flatten (CElem (Elem name _ _) _: cs) = name: flatten cs+    flatten (_: cs)                       = flatten cs+    flatten []                            = [] -    excludeText elem (CElem _: cs) = excludeText elem cs-    excludeText elem (CMisc _: cs) = excludeText elem cs-    excludeText elem (CString _ s: cs) | all isSpace s = excludeText elem cs+    excludeText elem (CElem _ _: cs) = excludeText elem cs+    excludeText elem (CMisc _ _: cs) = excludeText elem cs+    excludeText elem (CString _ s _: cs) | all isSpace s = excludeText elem cs     excludeText elem (_:  cs) =         ["Element <"++elem++"> contains text/references but should not."]     excludeText elem [] = []@@ -233,12 +233,12 @@               ([],ns) cps      checkIDs elem =-        let celem = CElem elem+        let celem = CElem elem undefined             showAttr a = iffind a literal none             idElems = concatMap (\(name,at)-> multi (showAttr at `o` tag name)                                                     celem)                                 (ids dtd)-            badIds  = duplicates (map (\(CString _ s)->s) idElems)+            badIds  = duplicates (map (\(CString _ s _)->s) idElems)         in not (null badIds) `gives`                ("These attribute values of type ID are not unique: "                 ++concat (intersperse "," badIds)++".")
src/Text/XML/HaXml/Verbatim.hs view
@@ -63,13 +63,13 @@     verbatim (Left v)  = verbatim v     verbatim (Right v) = verbatim v -instance Verbatim Content where-    verbatim (CElem c)     = verbatim c-    verbatim (CString _ c) = c-    verbatim (CRef c)      = verbatim c-    verbatim (CMisc _)     = error "NYI: verbatim not defined for CMisc"+instance Verbatim (Content i) where+    verbatim (CElem c _)     = verbatim c+    verbatim (CString _ c _) = c+    verbatim (CRef c _)      = verbatim c+    verbatim (CMisc _ _)     = error "NYI: verbatim not defined for CMisc" -instance Verbatim Element where+instance Verbatim (Element i) where     verbatim (Elem nam att [])   = "<" ++ nam ++ (concat . (map verbAttr)) att                                    ++ "/>"     verbatim (Elem nam att cont) = "<" ++ nam ++ (concat . (map verbAttr)) att
src/Text/XML/HaXml/Wrappers.hs view
@@ -10,6 +10,7 @@  import Text.XML.HaXml.Types       (Document(..),Content(..)) import Text.XML.HaXml.Combinators (CFilter)+import Text.XML.HaXml.Posn        (Posn,posInNewCxt) import Text.XML.HaXml.Parse       (xmlParse) import Text.XML.HaXml.Html.Parse  (htmlParse) import Text.XML.HaXml.Pretty as PP(document)@@ -28,7 +29,7 @@     1 -> return (args!!0, "-")     2 -> return (args!!0, args!!1)     _ -> do prog <- getProgName-            putStrLn ("Usage: "++prog++" [xmlfile] [outfile]")+            putStrLn ("Usage: "++prog++" [infile] [outfile]")             exitFailure  @@ -40,7 +41,7 @@ -- --   If the input filename ends with .html or .htm, it is parsed using --   the error-correcting HTML parser rather than the strict XML parser.-processXmlWith :: CFilter -> IO ()+processXmlWith :: CFilter Posn -> IO () processXmlWith f = do   (inf,outf) <- fix2Args   input      <- if inf=="-" then getContents else readFile inf@@ -48,14 +49,13 @@   parse      <- if ".html" `isSuffixOf` inf || ".htm" `isSuffixOf` inf                 then return (htmlParse inf)                 else return (xmlParse inf)-  ( hPutStrLn o . render . PP.document . onContent f . parse) input+  ( hPutStrLn o . render . PP.document . onContent inf f . parse ) input   hFlush o    where-    onContent :: CFilter -> Document -> Document-    onContent filter (Document p s e m) =-        case filter (CElem e) of-            [CElem e'] -> Document p s e' m-            []         -> error "produced no output"-            _          -> error "produced more than one output"-+    onContent :: FilePath -> (CFilter Posn) -> Document Posn -> Document Posn+    onContent file filter (Document p s e m) =+        case filter (CElem e (posInNewCxt file Nothing)) of+            [CElem e' _] -> Document p s e' m+            []           -> error "produced no output"+            _            -> error "produced more than one output"
− src/Text/XML/HaXml/Xml2Haskell.hs
@@ -1,465 +0,0 @@--- | This module provides the 'XmlContent' class and 'readXml' and 'writeXml'---   functions that you will need if you generate a module of Haskell---   datatype definitions from an XML DTD.  Use the DtdToHaskell---   program to generate both datatypes and instances of this class,---   then import this module to read and write values to and from XML files.--module Text.XML.HaXml.Xml2Haskell-  ( -- * Reading and writing XML data into a typed Haskell representation.-    readXml,  showXml-  , hGetXml,  hPutXml-  , fReadXml, fWriteXml-  -- * The enabling classes.-  , XmlContent(..)-  , XmlAttributes(..)-  , XmlAttrType(..)-  -- * Parsing and printing helper functions-  , choice, definite, many, fromText, toText-  , List1(..), ANYContent(..)-  , maybeToAttr, defaultToAttr-  , definiteA, defaultA, possibleA, fromAttrToStr, toAttrFrStr-  , Defaultable(..)-  , str2attr, attr2str-  -- * Re-exports-  , Element(..), Content(..)	-- from Text.Xml.HaXml.Types-  , catMaybes			-- from Maybe-  ) where--import IO-import Maybe (catMaybes)-import Char  (chr)-import Text.PrettyPrint.HughesPJ (render)-import Text.XML.HaXml.Types-import Text.XML.HaXml.Pretty (document)-import Text.XML.HaXml.Parse  (xmlParse)----- | Read an XML document from a file and convert it to a fully-typed---   Haskell value.-fReadXml  :: XmlContent a => FilePath -> IO a-fReadXml fp = do-    f <- ( if fp=="-" then return stdin-           else openFile fp ReadMode )-    x <- hGetContents f-    let (Document _ _ y _) = xmlParse fp x-    return (maybe (error "XML value not found") id (fst (fromElem [CElem y])))---- | Write a fully-typed Haskell value to the given file as an XML---   document.-fWriteXml :: XmlContent a => FilePath -> a -> IO ()-fWriteXml fp x = do-    f <- ( if fp=="-" then return stdout-           else openFile fp WriteMode )-    hPutXml f x-    hClose f---- | Read a fully-typed XML document from a string.-readXml :: XmlContent a => String -> Maybe a-readXml s =-    let (Document _ _ y _) = xmlParse "string input" s in-    fst (fromElem [CElem y])--- | Convert a fully-typed XML document to a string.-showXml :: XmlContent a => a -> String-showXml x =-    case toElem x of-      [CElem y] ->-          (render . document) $-             Document (Prolog (Just (XMLDecl "1.0" Nothing Nothing))-                              [] Nothing [])-                      emptyST y []-      _ -> ""---- | Read a fully-typed XML document from a file handle.-hGetXml :: XmlContent a => Handle -> IO a-hGetXml h = do-    x <- hGetContents h-    let (Document _ _ y _) = xmlParse "file handle" x-    return (maybe (error "XML value not found") id (fst (fromElem [CElem y])))--- | Write a fully-typed XML document to a file handle.-hPutXml :: XmlContent a => Handle -> a -> IO ()-hPutXml h x = do-    ( hPutStrLn h . render . document-      . (\y-> Document (Prolog Nothing [] Nothing []) emptyST y [])-      . deCont . toElem) x-  where-    deCont [CElem x] = x-    deCont [] = error "no XML content generated"-    deCont _  = error "too much XML content generated"------- Conversion operations on generated types -------- | The XmlContent class promises that an XML content element can be---   converted to and from a Haskell value.-class XmlContent a where-    fromElem :: [Content] -> (Maybe a,[Content])-    toElem   :: a -> [Content]--- | The XmlAttributes class promises that a list of XML tag attributes---   can be converted to and from a Haskell value.-class XmlAttributes a where-    fromAttrs :: [Attribute] -> a-    toAttrs   :: a -> [Attribute]--- | The XmlAttrType class promises that an attribute taking an XML enumerated---   type can be converted to and from a Haskell value.-class XmlAttrType a where-    fromAttrToTyp :: String -> Attribute -> Maybe a-    toAttrFrTyp   :: String -> a -> Maybe Attribute-------- Useful variants of "fromElem" ------choice :: XmlContent a-        => (a -> b)                             -- constructor-        -> ([Content]->(Maybe b,[Content]))     -- continuation-        -> [Content] -> (Maybe b,[Content])-choice cons other input =-    case fromElem input of-      (Just x, rest) -> (Just (cons x), rest)-      (Nothing,rest) -> other input---definite :: ([Content]->(Maybe a,[Content])) -> String -> String ->-             [Content] -> (a,[Content])-definite from inner tag cs =-    let (m,cs0) = from cs-    in case m of-         Nothing -> error ("content error: expected "++inner++" inside <"-                           ++tag++"> element\n")-         (Just a)-> (a,cs0)--many :: ([Content]->(Maybe a,[Content])) -> [Content] -> ([a], [Content])-many from [] = ([],[])-many from cs =-    let (m,cs0) = from cs-    in case m of-         Nothing -> ([],cs0)-         (Just a)-> let (as,cs1) = many from cs0-                    in (a:as, cs1)--fromText :: [Content] -> (Maybe String, [Content])-fromText c =-  case c of-    (CString _ s: cs)        -> more s cs-    (CRef (RefChar s): cs)   -> more ("&#"++show s++";") cs-    (CRef (RefEntity s): cs) -> more ('&':s++";") cs-    (CMisc _: cs)            -> more "" cs-    []                       -> (Just "",[])-    _                        -> (Nothing,c)-  where more s cs = case fromText cs of-                        (Nothing, _)   -> (Just s, cs)-                        (Just s', cs') -> (Just (s++s'), cs')--toText :: String -> [Content]-toText s = [CString False s]------ Useful auxiliaries for "fromAttributes" -------- | If an attribute is defaultable, then it either takes the default---   value (which is omitted from the output), or a non-default value---   (which obviously must be printed).-data Defaultable a  = Default a    | NonDefault a    deriving (Eq,Show)--searchMaybe :: (a -> Maybe b) -> [a] -> Maybe b-searchMaybe f [] = Nothing-searchMaybe f (x:xs) =-    let fx = f x in-    case fx of-      Nothing  -> searchMaybe f xs-      (Just _) -> fx--maybeToAttr :: (String->a->Maybe Attribute) -> String -> Maybe a-               -> Maybe Attribute-maybeToAttr to n Nothing  = Nothing-maybeToAttr to n (Just v) = to n v--defaultToAttr :: (String->a->Maybe Attribute) -> String -> Defaultable a-                 -> Maybe Attribute-defaultToAttr to n (Default v)  = Nothing-defaultToAttr to n (NonDefault v) = to n v--definiteA :: (String->Attribute->Maybe a) -> String -> String-             -> [Attribute] -> a-definiteA from tag at as =-    case searchMaybe (from at) as of-      Nothing  -> error ("missing attribute "++at++" in tag <"++tag++">")-      (Just a) -> a--defaultA :: (String->Attribute->Maybe a) -> a -> String-            -> [Attribute] -> Defaultable a-defaultA from def at as =-    case searchMaybe (from at) as of-      Nothing  -> Default def-      (Just a) -> NonDefault a--possibleA :: (String->Attribute->Maybe a) -> String -> [Attribute] -> Maybe a-possibleA from at as = searchMaybe (from at) as--fromAttrToStr :: String -> Attribute -> Maybe String-fromAttrToStr n (n0,v)-        | n == n0   = Just (attr2str v)-        | otherwise = Nothing--toAttrFrStr   :: String -> String -> Maybe Attribute-toAttrFrStr n v = Just (n, str2attr v)--str2attr :: String -> AttValue-str2attr s =-    let f s = -          let (l,r) = span (\c-> not (elem c "\"&<>'")) s-          in if null r then [Left l]-             else Left l: Right (g (head r)): f (tail r)-        g '"'  = RefEntity "quot"-        g '&'  = RefEntity "amp"-        g '<'  = RefEntity "lt"-        g '>'  = RefEntity "gt"-        g '\'' = RefEntity "apos"-    in AttValue (f s)--attr2str :: AttValue -> String		-- really needs symbol table-attr2str (AttValue xs) =-    let f (Left s) = s-        f (Right (RefChar i))        = [chr i]-        f (Right (RefEntity "quot")) = "\""-        f (Right (RefEntity "amp"))  = "&"-        f (Right (RefEntity "lt"))   = "<"-        f (Right (RefEntity "gt"))   = ">"-        f (Right (RefEntity "apos")) = "'"-        f (Right _)                  = "*"  -- Ooops, ST needed here.-    in concatMap f xs-        ------ New types -----{--data OneOf2 a b-data OneOf3 a b c-data OneOf4 a b c d-    ... etc are now defined (with instances) in module OneOfN.--}---- | A type corresponding to XML's ANY contentspec---data ANYContent = forall a . XmlContent a => ANYContent a-data ANYContent = ANYContent  deriving (Eq,Show)----- | The List1 type represents lists with at least one element.---   It is required for DTD content models that use + as a modifier.-data List1 a = NonEmpty [a]  deriving (Eq, Show)------- Needed instances ------instance (XmlContent a, XmlContent b) => XmlContent (a,b) where-    fromElem c0 =-        case (\(a,ca)->-               (\(b,cb)->-                 (a,b,cb))-               (fromElem ca))-             (fromElem c0) of-        (Just x, Just y, cn) -> (Just (x,y), cn)-        (_,_,_) -> (Nothing,c0)-    toElem (x,y) = toElem x ++ toElem y--instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a,b,c) where-    fromElem c0 =-        case (\(a,ca)->-               (\(b,cb)->-                 (\(c,cc)->-                   (a,b,c,cc))-                 (fromElem cb))-               (fromElem ca))-             (fromElem c0) of-        (Just x, Just y, Just z,cn) -> (Just (x,y,z), cn)-        (_,_,_,_) -> (Nothing,c0)-    toElem (x,y,z) = toElem x ++ toElem y ++ toElem z--instance (XmlContent a) => XmlContent [a] where-    fromElem c0 = (\(a,cn)-> (Just a,cn)) (many fromElem c0)-    toElem xs = concatMap toElem xs--instance (XmlContent a) => XmlContent (Maybe a) where-    fromElem c0 =-        case fromElem c0 of-        (Just x, cn) -> (Just (Just x), cn)-        (Nothing,cn) -> (Just Nothing, cn)-    toElem (Just x) = toElem x-    toElem Nothing  = []	-- this clause not actually required--instance (XmlContent a) => XmlContent (List1 a) where-    fromElem c0 =-        case many fromElem c0 of-        ([], _)  -> (Nothing, c0)-        (xs, cn) -> (Just (NonEmpty xs), cn)-    toElem (NonEmpty xs) = concatMap toElem xs--instance XmlContent ANYContent where-    fromElem c0 = (Just ANYContent, [])-    toElem ANYContent = []--{--instance (XmlContent a, XmlContent b) => XmlContent (OneOf2 a b) where-    fromElem c0 =-        case fromElem c0 of-        (Just x, cn) -> (Just (OneOfTwo x), cn)-        (Nothing,cn) ->-            case fromElem c0 of-            (Just y, cn) -> (Just (TwoOfTwo y), cn)-            (Nothing,cn) -> (Nothing, c0)-    toElem (OneOfTwo x) = toElem x-    toElem (TwoOfTwo y) = toElem y--instance (XmlContent a, XmlContent b, XmlContent c) =>-         XmlContent (OneOf3 a b c) where-    fromElem c0 =-        case fromElem c0 of-        (Just x, cn) -> (Just (OneOfThree x), cn)-        (Nothing,cn) ->-            case fromElem c0 of-            (Just y, cn) -> (Just (TwoOfThree y), cn)-            (Nothing,cn) ->-                case fromElem c0 of-                (Just z, cn) -> (Just (ThreeOfThree z), cn)-                (Nothing,cn) -> (Nothing, c0)-    toElem (OneOfThree x)   = toElem x-    toElem (TwoOfThree y)   = toElem y-    toElem (ThreeOfThree z) = toElem z--instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d) =>-         XmlContent (OneOf4 a b c d) where-    fromElem c0 =-        case fromElem c0 of-        (Just x, cn) -> (Just (OneOfFour x), cn)-        (Nothing,cn) ->-            case fromElem c0 of-            (Just y, cn) -> (Just (TwoOfFour y), cn)-            (Nothing,cn) ->-                case fromElem c0 of-                (Just z, cn) -> (Just (ThreeOfFour z), cn)-                (Nothing,cn) ->-                    case fromElem c0 of-                    (Just t, cn) -> (Just (FourOfFour t), cn)-                    (Nothing,cn) -> (Nothing, c0)-    toElem (OneOfFour x)   = toElem x-    toElem (TwoOfFour y)   = toElem y-    toElem (ThreeOfFour z) = toElem z-    toElem (FourOfFour t)  = toElem t--}---{------ Example instances (e.g. generated with DtdToHaskell) ------data X = X Y-instance XmlContent X where-    fromElem (CElem (Elem "x" as cs): rest) =-        let y = (\(a,c0)-> a) (definite fromElem "x" cs)-        in (Just (X y), rest)-    fromElem rest = (Nothing,rest)-    toElem (X y) = [CElem (Elem "x" [] (toElem y))]--data X = X [Y]-instance XmlContent X where-    fromElem (CElem (Elem "x" as cs): rest) =-        let ys = (\(a,c0)-> a) (many fromElem cs)-        in (Just (X ys), rest)-    fromElem rest = (Nothing, rest)-    toElem (X ys) = [CElem (Elem "x" [] (concatMap toElem ys))]--data X = X (Maybe Y)-instance XmlContent X where-    fromElem (CElem (Elem "x" as cs): rest) =-        let my = (\(a,c0)-> a) (fromElem cs)-        in (Just (X my), rest)-    fromElem rest = (Nothing, rest)-    toElem (X my) = [CElem (Elem "x" [] (maybe [] toElem my))]--data X = X [Y] (Maybe Z) T-instance XmlContent X where-    fromElem (CElem (Elem "x" as cs): rest) =-        let (ys,z,t) = (\(a,c0)->-                         (\(b,c1)->-                           (\(c,c2)-> (a,b,c))-                           (definite fromElem c1))-                         (fromElem c0))-                       (many fromElem cs)-        in (Just (X ys z t), rest)-    fromElem rest = (Nothing, rest)-    toElem (X ys z t) = [CElem (Elem "x" [] (concatMap toElem ys ++-                                             maybe [] toElem z ++-                                             toElem t))]---- <!ELEMENT x ((p?,q) | (t?,u*) | (r+,s))*>-data X = X [X_]-data X_ = X_P_Q (Maybe P) Q-        | X_T_U (Maybe T) [U]-        | X_R_S [R] S-instance XmlContent X_ where-    fromElem c0 =-        case (\(a,ca)->-               (\(b,cb)->-                 (a,b,cb))-               (fromElem ca))-             (fromElem c0) of-        (Nothing,Nothing,_) ->-            case (\(a,ca)->-                   (\(b,cb)->-                     (a,b,cb))-                   (fromElem ca))-                 (many fromElem c0) of-            (Nothing,[],_) ->-                case (\(a,ca)->-                       (\(b,cb)->-                         (a,b,cb))-                       (many fromElem ca))-                     (fromElem c0) of-                ([],Nothing,rest) -> (Nothing, rest)-                (a, Just b, rest) -> (Just (X_R_S a b), rest)-            (a, b, rest) -> (Just (X_T_U a b), rest)-        (a, Just b, rest) -> (Just (X_P_Q a b), rest)-    toElem (X_P_Q mp q)  = maybe [] toElem mp ++ toElem q-    toElem (X_R_S mt us) = maybe [] toElem rs ++ concatMap toElem s-    toElem (X_R_S rs s)  = concatMap toElem rs ++ toElem s------- Example instances with attributes ------instance XmlAttributes Match_Attrs where-    fromAttrs as =-        Match_Attrs             -- note: defaults can be handled with fromMaybe-          { opposition = definiteA fromStrAttr "match" "opposition" as-          , date       = definiteA fromStrAttr "match" "date" as-          , location   = definiteA fromAttr)    "match" "location" as-          , ourgoals   = possibleA fromStrAttr "ourgoals" as-          , theirgoals = possibleA fromStrAttr "theirgoals" as-          , status     = definiteA fromStrAttr "match" "status" as-          }-    toAttrs v = catMaybes-          [ toAttrFrStr        "opposition"  (opposition v)-          , toAttrFrStr        "date"              (date v)-          , toAttrFrTyp        "location"      (location v)-          , maybeA toAttrFrStr "ourgoals"      (ourgoals v)-          , maybeA toAttrFrStr "theirgoals"  (theirgoals v)-          , toAttrFrTyp        "status"          (status v)-          ]-instance XmlAttrType Location where-    fromAttrToTyp n (n0,v)-        | n == n0   = translate (attr2str v)-        | otherwise = Nothing-        where translate "VarsityCentre" = Just VarsityCentre-              translate "KingsManor"    = Just KingsManor-              translate _               = Nothing-    toAttrFrTyp n VarsityCentre = Just (n, str2attr "VarsityCentre")-    toAttrFrTyp n KingsManor    = Just (n, str2attr "KingsManor")-instance XmlAttrType Status where-    fromAttrToTyp n (n0,v)-        | n == n0   = translate (attr2str v)-        | otherwise = Nothing-        where translate "planned"     = Just Planned-              translate "played"      = Just Played-              translate "rescheduled" = Just Rescheduled-              translate _             = Nothing-    toAttrFrTyp n Planned     = Just (n, str2attr "planned")-    toAttrFrTyp n Played      = Just (n, str2attr "played")-    toAttrFrTyp n Rescheduled = Just (n, str2attr "rescheduled")- --}
+ src/Text/XML/HaXml/XmlContent.hs view
@@ -0,0 +1,636 @@+{-# OPTIONS -fglasgow-exts #-}+-- | The class 'XmlContent' is a kind of replacement for Read and Show:+--   it provides conversions between a generic XML tree representation+--   and your own more specialised typeful Haskell data trees.+--+--   If you are starting with a set of Haskell datatypes, use DrIFT to+--   derive instances of this class for you:+--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT+--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+--   to generate both the Haskell types and the corresponding instances.+--+--   This unified class interface replaces two previous (somewhat similar)+--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have+--   separate classes depending on how you originally defined your datatypes.++--   The methods 'toContents' and 'parseContents' convert a value to and from+--   a generic internal representation of an XML document /without/ a DTD.+--   The functions 'toXml' and 'fromXml' convert a value to and from a generic+--   internal representation of an XML document /including/ a DTD.+--   The functions 'readXml' and 'showXml' convert to and from Strings.+--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from+--   the given filenames.+--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from+--   the given file handles.+--   (See the type signatures.)+--  ++module Text.XML.HaXml.XmlContent+  ( -- * Re-export the relevant set of generic XML document type definitions+    Document(..)+  , Element(..)+  , ElemTag(..)+  , Content(..)+  , Attribute(..)+  , AttValue(..)+  , Prolog(..)+  , Reference(..)+  -- * The enabling classes, that define parsing\/unparsing between Haskell+  --   datatypes and a generic XML representation.+  , XmlContent(..)+  , XmlAttributes(..)+  , XmlAttrType(..)+  -- ** Auxiliaries for writing parsers in the XmlContent class+  , module Text.ParserCombinators.Poly+  , XMLParser+  , content, posnElement, element, interior, inElement, text, attributes+  , posnElementWith, elementWith, inElementWith+  , choice, definite -- ???+  -- ** Auxiliaries for generating in the XmlContent class+  , mkElem, mkElemC, mkAttr+  , toText, toCData+  -- ** Auxiliaries for the attribute-related classes+  , maybeToAttr, defaultToAttr+  , definiteA, defaultA, possibleA, fromAttrToStr, toAttrFrStr+  , Defaultable(..)+  , str2attr, attr2str, attval+  , catMaybes	-- re-exported from Maybe+  -- * Whole-document conversion functions+  , toXml, fromXml+  , readXml, showXml, fpsShowXml+  , fReadXml, fWriteXml, fpsWriteXml+  , hGetXml,  hPutXml, fpsHPutXml+  -- * Explicit representation of Haskell datatype information+  --   (for conversion to a DTD)+  , module Text.XML.HaXml.TypeMapping+  -- * Types useful for some content models+  , List1(..)+  , ANYContent(..)+  ) where++import IO+import Maybe (catMaybes)+import Char  (chr, ord, isSpace)+import List  (intersperse, isPrefixOf, isSuffixOf, partition)++import Text.PrettyPrint.HughesPJ (render)+import qualified Text.XML.HaXml.Pretty as PP++import Text.XML.HaXml.Types+import Text.XML.HaXml.TypeMapping+import Text.XML.HaXml.Posn     (Posn, posInNewCxt)+import Text.XML.HaXml.Pretty   (document)+import Text.XML.HaXml.Parse    (xmlParse, fst3)+import Text.XML.HaXml.Verbatim (Verbatim(verbatim))+import qualified Text.XML.HaXml.ByteStringPP as FPS (document)+import qualified Data.ByteString.Lazy.Char8 as FPS++import Text.ParserCombinators.Poly++--  #define DEBUG++#if defined(DEBUG)+import Debug.Trace(trace)+debug :: a -> String -> a+v `debug` s = trace s v+#else+v `debug` s = v+#endif+++------------------------------------------------------------------------+-- | Read a single attribute called "value".+attval :: (Read a) => Element i -> a+attval (Elem _ [("value",v@(AttValue _))] []) = read (show v)++-- | Generate a single attribute.+mkAttr :: String -> String -> Attribute+mkAttr n v = (n, AttValue [Left v])++-- | Generate an element with no attributes, named for its HType.+mkElem :: XmlContent a => a -> [Content ()] -> Content ()+mkElem x cs  = CElem (Elem (showHType (toHType x) "") [] cs) ()++-- | Generate an element with no attributes, named directly.+mkElemC :: String -> [Content ()] -> Content ()+mkElemC x cs = CElem (Elem x [] cs) ()++-- | Turn a simple string into XML text. +toText :: String -> [Content ()]+toText s = [CString False s ()]++-- | Turn a string into an XML CDATA section.+--   (i.e. special characters like '&' are preserved without interpretation.)+toCData :: String -> [Content ()]+toCData s = [CString True s ()]+------------------------------------------------------------------------++	-- probably want to write DTD separately from value, and have+	-- easy ways to combine DTD + value into a document, or write+	-- them to separate files.++-- | Read an XML document from a file and convert it to a fully-typed+--   Haskell value.+fReadXml  :: XmlContent a => FilePath -> IO a+fReadXml fp = do+    f <- ( if fp=="-" then return stdin+           else openFile fp ReadMode )+    x <- hGetContents f +    let (Document _ _ y _) = xmlParse fp x+        y' = CElem y (posInNewCxt fp Nothing)+    either fail return (fst (runParser parseContents [y']))++-- | Write a fully-typed Haskell value to the given file as an XML+--   document.+fWriteXml :: XmlContent a => FilePath -> a -> IO ()+fWriteXml fp x = do+    f <- ( if fp=="-" then return stdout+           else openFile fp WriteMode )+    hPutXml f False x+    hClose f++-- | Write any Haskell value to the given file as an XML document,+--   using the FastPackedString interface (output will not be prettified).+fpsWriteXml :: XmlContent a => FilePath -> a -> IO ()+fpsWriteXml fp x = do+    f <- ( if fp=="-" then return stdout+           else openFile fp WriteMode )+    fpsHPutXml f False x+    hClose f++-- | Read a fully-typed XML document from a string.+readXml :: XmlContent a => String -> Either String a+readXml s =+    let (Document _ _ y _) = xmlParse "string input" s in+    fst (runParser parseContents+                   [CElem y (posInNewCxt "string input" Nothing)])++-- | Convert a fully-typed XML document to a string (without DTD).+showXml :: XmlContent a => Bool -> a -> String+showXml dtd x =+    case toContents x of+      [CElem _ _] -> (render . document . toXml dtd) x+      _ -> ""++-- | Convert a fully-typed XML document to a ByteString (without DTD).+fpsShowXml :: XmlContent a => Bool -> a -> FPS.ByteString+fpsShowXml dtd x =+    case toContents x of+      [CElem _ _] -> (FPS.document . toXml dtd) x+      _ -> FPS.empty+++-- | Convert a fully-typed XML document to a string (with or without DTD).+toXml :: XmlContent a => Bool -> a -> Document ()+toXml dtd value =+    let ht = toHType value in+    Document (Prolog (Just (XMLDecl "1.0" Nothing Nothing))+                     [] (if dtd then Just (toDTD ht) else Nothing) [])+             emptyST+             ( case (ht, toContents value) of+                 (Tuple _, cs)       -> Elem (showHType ht "") [] cs+                 (Defined _ _ _, cs) -> Elem (showHType ht "-XML") [] cs+                 (_, [CElem e ()])   -> e )+             []++-- | Read a Haskell value from an XML document, ignoring the DTD and+--   using the Haskell result type to determine how to parse it.+fromXml :: XmlContent a => Document Posn -> Either String a+fromXml (Document _ _ e@(Elem n _ cs) _)+  | "tuple" `isPrefixOf` n = fst (runParser parseContents cs)+  | "-XML"  `isSuffixOf` n = fst (runParser parseContents cs)+  | otherwise = fst (runParser parseContents+                               [CElem e (posInNewCxt "document" Nothing)])+++-- | Read a fully-typed XML document from a file handle.+hGetXml :: XmlContent a => Handle -> IO a+hGetXml h = do+    x <- hGetContents h +    let (Document _ _ y _) = xmlParse "file handle" x+    either fail return+           (fst (runParser parseContents+                           [CElem y (posInNewCxt "file handle" Nothing)]))++-- | Write a fully-typed XML document to a file handle.+hPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()+hPutXml h dtd x = do+    (hPutStrLn h . render . document . toXml dtd) x++-- | Write a fully-typed XML document to a file handle, using the+--   FastPackedString interface (output will not be prettified).+fpsHPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()+fpsHPutXml h dtd x = do+    (FPS.hPut h . FPS.document . toXml dtd) x++------------------------------------------------------------------------++-- | We need a parsing monad for reading generic XML Content into specific+--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly+--   ones, where the input token type is fixed as XML Content.+type XMLParser a = Parser (Content Posn) a+++------------------------------------------------------------------------+-- Some useful parsing combinators+------------------------------------------------------------------------++-- | The most primitive combinator for XMLParser - get one content item.+content :: String -> XMLParser (Content Posn)+content word = next `adjustErr` (++" when expecting "++word)++-- | Get the next content element, checking that it has one of the required+--   tags, using the given matching function. +--   (Skips over comments and whitespace, rejects text and refs.+--    Also returns position of element.)+posnElementWith :: (String->String->Bool) -> [String]+                   -> XMLParser (Posn, Element Posn)+posnElementWith match tags = do+    { c <- content (formatted tags)+    ; case c of+          CElem e@(Elem t _ _) pos+              | any (match t) tags -> return (pos, e)+              | otherwise          -> fail ("Found a <"++t++">, but expected "+                                           ++formatted tags++"\nat "++show pos)+          CString b s pos+              | not b && all isSpace s -> posnElementWith match tags+							-- ignore blank space+              | otherwise -> fail ("Found text content, but expected "+                                  ++formatted tags++"\ntext is: "++s+                                  ++"\nat "++show pos)+          CRef r pos -> fail ("Found reference, but expected "+                             ++formatted tags++"\nreference is: "++verbatim r+                             ++"\nat "++show pos)+          CMisc _ _ -> posnElementWith match tags  -- skip comments, PIs, etc.+    }+  where+    formatted [t]  = "a <"++t++">"+    formatted tags = "one of"++ concatMap (\t->" <"++t++">") tags++-- | A specialisation of @posnElementWith (==)@.+posnElement :: [String] -> XMLParser (Posn, Element Posn)+posnElement = posnElementWith (==)++-- | Get the next content element, checking that it has one of the required+--   tags.  (Skips over comments and whitespace, rejects text and refs.)+element :: [String] -> XMLParser (Element Posn)+element tags = fmap snd (posnElement tags)+				`debug` ("Element: "++unwords tags++"\n")++-- | Like element, only permits a more flexible match against the tagname.+elementWith :: (String->String->Bool) -> [String] -> XMLParser (Element Posn)+elementWith match tags = fmap snd (posnElementWith match tags)+				`debug` ("Element: "++unwords tags++"\n")++-- | Run an XMLParser on the contents of the given element (i.e. not on the+--   current monadic content sequence), checking that the contents are+--   exhausted, before returning the calculated value within the current+--   parser context.+interior :: Element Posn -> XMLParser a -> XMLParser a+interior (Elem e _ cs) p =+    case runParser p cs of+        (Left msg, _) -> fail msg+        (Right x, []) -> return x+        (Right x, cs@(c:_))+            | all onlyMisc cs -> return x+            | otherwise       -> fail ("Too many elements inside <"++e++"> at\n"+                                      ++show (info c)++"\n"+                                      ++"Found excess: "++verbatim c)+  where onlyMisc (CMisc _ _) = True+        onlyMisc (CString False s _) | all isSpace s = True+        onlyMisc _ = False++-- | A combination of element + interior.+inElement :: String -> XMLParser a -> XMLParser a+inElement tag p = do { e <- element [tag]; commit (interior e p) }++-- | A combination of elementWith + interior.+inElementWith :: (String->String->Bool) -> String -> XMLParser a -> XMLParser a+inElementWith match tag p = do { e <- elementWith match [tag]+                               ; commit (interior e p) }++-- | Do some parsing of the attributes of the given element+attributes :: XmlAttributes a => Element Posn -> XMLParser a+attributes (Elem _ as _) = return (fromAttrs as)++-- | 'text' is a counterpart to 'element', parsing text content if it+--   exists.  Adjacent text and references are coalesced.+text :: XMLParser String+text = text' []+  where text' acc =+          do { c <- content "plain text"+             ; case c of+                 CString _ s _        -> text' (s:acc)+                 CRef (RefChar s) _   -> text' (("&#"++show s++";") :acc)+                 CRef (RefEntity s) _ -> text' (('&':s++";"):acc)+                 CMisc _ _            -> text' acc+                 CElem _ _         -> do { reparse [c] -- put it back!+                                         ; if null acc then fail "empty string"+                                           else return (concat (reverse acc))+                                         }+             }+          `onFail` ( if null acc then fail "empty string"+                     else return (concat (reverse acc)) )+++-- | 'choice f p' means if parseContents succeeds, apply f to the result,+--   otherwise use the continuation parser.+choice :: XmlContent a => (a -> b) -> XMLParser b -> XMLParser b+choice cons (P other) =+    P (\cs-> case runParser parseContents cs of+                 (Left msg, _)  -> other cs+                 (Right x, cs') -> (Right (cons x), cs'))++--choice cons other = fmap cons parseContents `onFail` other++-- | not sure this is needed now.   'definite p' previously ensured that+--   an element was definitely present.  Now I think the monad might take+--   care of that for us.+definite :: XmlContent a => XMLParser a -> String -> String -> XMLParser a+definite p inner tag = P (\cs-> case runParser p cs of+                                   (Left msg, cs') -> (Left (False,msg'), cs')+                                   (Right x, cs')  -> (Right x,   cs'))+  where msg' = "content error: expected "++inner++" inside <"++tag+               ++"> element\n"++------------------------------------------------------------------------++-- | The @XmlContent@ class promises that an XML Content element can be+--   converted to and from a Haskell value.+class HTypeable a => XmlContent a where+    -- | Convert from XML to Haskell+    parseContents :: XMLParser a+    -- | Convert from Haskell to XML+    toContents    :: a -> [Content ()]++    -- | Dummy functions (for most types): used /only/ in the Char instance+    --   for coercing lists of Char into String.+    xToChar       :: a -> Char+    xFromChar     :: Char -> a+    xToChar        = error "HaXml.XmlContent.xToChar used in error"+    xFromChar      = error "HaXml.XmlContent.xFromChar used in error"++-- | The @XmlAttributes@ class promises that a list of XML tag attributes+--   can be converted to and from a Haskell value.+class XmlAttributes a where+    fromAttrs :: [Attribute] -> a+    toAttrs   :: a -> [Attribute]+-- | The @XmlAttrType@ class promises that an attribute taking an XML+--   enumerated type can be converted to and from a Haskell value.+class XmlAttrType a where+    fromAttrToTyp :: String -> Attribute -> Maybe a+    toAttrFrTyp   :: String -> a -> Maybe Attribute+++------------------------------------------------------------------------+-- Instances for all the standard basic datatypes.+-- These are for Haskell datatypes being derived to go to XML.+-- DtdToHaskell does not use these instances.+------------------------------------------------------------------------++instance XmlContent Bool where+    toContents b   = [CElem (Elem "bool" [mkAttr "value" (show b)] []) ()]+    parseContents = do { e <- element ["bool"] ; return (attval e) }+    +instance XmlContent Int where+    toContents i   = [CElem (Elem "int" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["int"] ; return (attval e) }++instance XmlContent Integer where+    toContents i   = [CElem (Elem "integer" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["integer"] ; return (attval e) }+    +instance XmlContent Float where+    toContents i   = [CElem (Elem "float" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["float"] ; return (attval e) }++instance XmlContent Double where+    toContents i   = [CElem (Elem "double" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["double"] ; return (attval e) }++instance XmlContent Char where+    -- NOT in a string+    toContents c   = [CElem (Elem "char" [mkAttr "value" [c]] []) ()]+    parseContents = do { (Elem _ [("value",(AttValue [Left [c]]))] [])+                             <- element ["char"]+                       ; return c+                       }+    -- Only defined for Char and no other types:+    xToChar   = id+    xFromChar = id++instance XmlContent a => XmlContent [a] where+    toContents xs  = case toHType x of+                       (Prim "Char" _) ->+                            [mkElem "string" [CString True (map xToChar xs) ()]]+                       _ -> [mkElem xs (concatMap toContents xs)]+                   where   (x:_) = xs+    parseContents = P (\x ->+        case x of+            (CString _ s _:cs)+                   -> (Right (map xFromChar s), cs)+            (CElem (Elem "string" [] [CString _ s _]) _:cs)+                   -> (Right (map xFromChar s), cs)+            (CElem (Elem e [] xs) _:cs) | "list" `isPrefixOf` e+                   -> scanElements xs+                   where+                  -- scanElements :: [Content] -> (Either String [a],[Content])+                     scanElements [] = (Right [], cs)+                     scanElements es =+                        case runParser parseContents es of+                            (Left msg, es') -> (Left (False,msg), es')+                            (Right x, es') ->+                                case scanElements es' of+                                    (Left msg, cs) -> (Left msg, cs)+                                    (Right xs, cs) -> (Right (x:xs), cs)+            (CElem (Elem e _ _) pos: cs)+                   -> (Left (False+                            ,"Expected a <list-...>, but found a <"++e++"> at\n"+                            ++ show pos), cs)+            (CRef r pos: cs)+                   -> (Left (False+                            ,"Expected a <list-...>, but found a ref "+                            ++verbatim r++" at\n"++ show pos), cs)+            (_:cs) -> ((\ (P p)-> p) parseContents) cs  -- skip comments etc.+            []     -> (Left (False+                            ,"Ran out of input XML whilst secondary parsing")+                      , [])+        )++instance XmlContent () where+    toContents ()  = [CElem (Elem "unit" [] []) ()]+    parseContents = do { element ["unit"]; return () }++instance (XmlContent a, XmlContent b) => XmlContent (a,b) where+    toContents (a,b) = toContents a ++ toContents b+    parseContents    = do+        { a <- parseContents+        ; b <- parseContents+        ; return (a,b)+        }++instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a,b,c) where+    toContents (x,y,z) = toContents x ++ toContents y ++ toContents z+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; return (a,b,c)+        }++instance (XmlContent a) => XmlContent (Maybe a) where+    toContents m   = [mkElem m (maybe [] toContents m)]+    parseContents = do+        { e <- elementWith (flip isPrefixOf) ["maybe"]+        ; case e of (Elem _ [] []) -> return Nothing+                    (Elem _ [] _)  -> fmap Just (interior e parseContents)+        }++instance (XmlContent a, XmlContent b) => XmlContent (Either a b) where+    toContents v@(Left aa) =+        [mkElemC (showConstr 0 (toHType v)) (toContents aa)]+    toContents v@(Right ab) =+        [mkElemC (showConstr 1 (toHType v)) (toContents ab)]+    parseContents =+        (inElementWith (flip isPrefixOf) "Left"  $ fmap Left  parseContents)+          `onFail`+        (inElementWith (flip isPrefixOf) "Right" $ fmap Right parseContents)++--    do{ e@(Elem t [] _) <- element ["Left","Right"]+--      ; case t of+--          _ | "Left"  `isPrefixOf` t -> fmap Left  (interior e parseContents)+--            | "Right" `isPrefixOf` t -> fmap Right (interior e parseContents)+--      }+++------------------------------------------------------------------------+-- Useful auxiliaries for "fromAttributes" +------------------------------------------------------------------------++-- | If an attribute is defaultable, then it either takes the default+--   value (which is omitted from the output), or a non-default value+--   (which obviously must be printed).+data Defaultable a  = Default a    | NonDefault a    deriving (Eq,Show)++searchMaybe :: (a -> Maybe b) -> [a] -> Maybe b+searchMaybe f [] = Nothing+searchMaybe f (x:xs) =+    let fx = f x in+    case fx of+      Nothing  -> searchMaybe f xs+      (Just _) -> fx++maybeToAttr :: (String->a->Maybe Attribute) -> String -> Maybe a+               -> Maybe Attribute+maybeToAttr to n Nothing  = Nothing+maybeToAttr to n (Just v) = to n v++defaultToAttr :: (String->a->Maybe Attribute) -> String -> Defaultable a+                 -> Maybe Attribute+defaultToAttr to n (Default v)  = Nothing+defaultToAttr to n (NonDefault v) = to n v++definiteA :: (String->Attribute->Maybe a) -> String -> String+             -> [Attribute] -> a+definiteA from tag at as =+    case searchMaybe (from at) as of+      Nothing  -> error ("missing attribute "++at++" in tag <"++tag++">")+      (Just a) -> a++defaultA :: (String->Attribute->Maybe a) -> a -> String+            -> [Attribute] -> Defaultable a+defaultA from def at as =+    case searchMaybe (from at) as of+      Nothing  -> Default def+      (Just a) -> NonDefault a++possibleA :: (String->Attribute->Maybe a) -> String -> [Attribute] -> Maybe a+possibleA from at as = searchMaybe (from at) as++fromAttrToStr :: String -> Attribute -> Maybe String+fromAttrToStr n (n0,v)+        | n == n0   = Just (attr2str v)+        | otherwise = Nothing++toAttrFrStr   :: String -> String -> Maybe Attribute+toAttrFrStr n v = Just (n, str2attr v)++str2attr :: String -> AttValue+str2attr s =+    let f s =+          let (l,r) = span (\c-> not (elem c "\"&<>'")) s+          in if null r then [Left l]+             else Left l: Right (g (head r)): f (tail r)+        g '"'  = RefEntity "quot"+        g '&'  = RefEntity "amp"+        g '<'  = RefEntity "lt"+        g '>'  = RefEntity "gt"+        g '\'' = RefEntity "apos"+    in AttValue (f s)++attr2str :: AttValue -> String          -- really needs symbol table+attr2str (AttValue xs) =+    let f (Left s) = s+        f (Right (RefChar i))        = [chr i]+        f (Right (RefEntity "quot")) = "\""+        f (Right (RefEntity "amp"))  = "&"+        f (Right (RefEntity "lt"))   = "<"+        f (Right (RefEntity "gt"))   = ">"+        f (Right (RefEntity "apos")) = "'"+        f (Right _)                  = "*"  -- Ooops, ST needed here.+    in concatMap f xs++------------------------------------------------------------------------+--  New content-model types+------------------------------------------------------------------------++{-+data OneOf2 a b+data OneOf3 a b c+data OneOf4 a b c d+    ... etc are now defined (with instances) in module OneOfN.+-}++-- | A type corresponding to XML's ANY contentspec. +--   It is either a list of unconverted xml 'Content' +--   or some 'XmlContent'-able value.+--+-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.+-- Note: The Show instance for 'UnConverted' uses 'verbatim'.+data ANYContent = forall a . (XmlContent a, Show a) => ANYContent a+                | UnConverted [Content Posn]++instance Show ANYContent where+    show (UnConverted c) = "UnConverted " ++ (show $ map verbatim c)+    show (ANYContent a)  = "ANYContent " ++ (show a)++instance Eq ANYContent where+    a == b = show a == show b++-- | The List1 type represents lists with at least one element.+--   It is required for DTD content models that use + as a modifier.+data List1 a = NonEmpty [a]  deriving (Eq, Show)+++------------------------------------------------------------------------+--  Instances for new content-model types+------------------------------------------------------------------------+instance (HTypeable a) => HTypeable (List1 a) where+    toHType m  = Defined "List1" [hx]+                         [Constr "NonEmpty" [hx] [List hx] {-Nothing-}]+               where (NonEmpty x) = m+                     hx = toHType x+instance (XmlContent a) => XmlContent (List1 a) where+    toContents (NonEmpty xs) = concatMap toContents xs+    parseContents = fmap NonEmpty $ many1 parseContents++instance HTypeable ANYContent where+    toHType _      = Prim "ANYContent" "ANY"+instance XmlContent ANYContent where+    toContents (ANYContent a)  = toContents a+    toContents (UnConverted s) = map (fmap (const ())) s+    parseContents = P (\cs -> (Right (UnConverted cs), []))++------------------------------------------------------------------------+--  +------------------------------------------------------------------------
src/Text/XML/HaXml/Xtract/Combinators.hs view
@@ -3,82 +3,102 @@ --   The main difference is that the Content Filter type becomes a --   Double Filter.  A Double Filter always takes the whole document --   as an extra argument, so you can start to traverse it again from---   any inner location within the document tree.+--   the root, when at any inner location within the document tree. -----   The new combinators definitions are derived from the old ones.---   New names are derived from the old by surrounding with the letter @o@,---   or by doubling the operator symbols.+--   The new combinator definitions are derived from the old ones.+--   The same names have the equivalent meaning - use module qualification+--   on imports to distinguish between CFilter and DFilter variations.  module Text.XML.HaXml.Xtract.Combinators where  import Text.XML.HaXml.Types-import Text.XML.HaXml.Combinators+import Text.XML.HaXml.Combinators (CFilter)+import qualified Text.XML.HaXml.Combinators as C   -- | double content filter - takes document root + local subtree.-type DFilter = Content -> Content -> [Content]+type DFilter i = Content i -> Content i -> [Content i]  -- | lift an ordinary content filter to a double filter.-local,global :: CFilter -> DFilter+local,global :: CFilter i -> DFilter i local  f = \xml sub-> f sub global f = \xml sub-> f xml --- | drop a double filter to an ordinary content filter-dfilter :: DFilter -> CFilter+-- | drop a double filter to an ordinary content filter.+--   (permitting interior access to document root)+dfilter :: DFilter i -> CFilter i dfilter f = \xml-> f xml xml +-- | drop a double filter to an ordinary content filter.+--   (Where interior access to the document root is not needed, the+--    retaining pointer to the outer element can be pruned away.+--   'cfilter' is more space-efficient than 'dfilter' in this situation.)+cfilter :: DFilter i -> CFilter i+cfilter f = \xml -> f undefined xml+--cfilter f = \xml-> flip f xml+--                          (case xml of+--                             CElem (Elem n as cs) i -> CElem (Elem n [] []) i+--                             _ -> xml)+ -- | lift a CFilter combinator to a DFilter combinator-oloco, oglobo :: (CFilter->CFilter) -> (DFilter->DFilter)-oloco ff  = \df-> \xml sub-> (ff (df xml)) sub-oglobo ff = \df-> \xml sub-> (ff (df xml)) xml+liftLocal, liftGlobal :: (CFilter i->CFilter i) -> (DFilter i->DFilter i)+liftLocal  ff = \df-> \xml sub-> (ff (df xml)) sub+liftGlobal ff = \df-> \xml sub-> (ff (df xml)) xml  -- | lifted composition over double filters.-ooo :: DFilter -> DFilter -> DFilter-g `ooo` f = \xml-> concatMap (g xml) . (f xml)+o :: DFilter i -> DFilter i -> DFilter i+g `o` f = \xml-> concatMap (g xml) . (f xml)  -- | lifted choice.-(||>||) :: (a->b->[c]) -> (a->b->[c]) -> (a->b->[c])-f ||>|| g = \xml sub-> let first = f xml sub in-                       if null first then g xml sub else first+(|>|) :: (a->b->[c]) -> (a->b->[c]) -> (a->b->[c])+f |>| g = \xml sub-> let first = f xml sub in+                     if null first then g xml sub else first +-- | lifted union.+union :: (a->b->[c]) -> (a->b->[c]) -> (a->b->[c])+union = lift (++)+  where+    lift f g h = \x y-> f (g x y) (h x y)+ -- | lifted predicates.-owitho, owithouto :: DFilter -> DFilter -> DFilter-f `owitho` g    = \xml-> filter (not.null.g xml) . f xml-f `owithouto` g = \xml-> filter     (null.g xml) . f xml+with, without :: DFilter i -> DFilter i -> DFilter i+f `with` g    = \xml-> filter (not.null.g xml) . f xml+f `without` g = \xml-> filter     (null.g xml) . f xml  -- | lifted unit and zero.-okeepo, ononeo :: DFilter-okeepo = \xml sub-> [sub]	-- local keep-ononeo = \xml sub-> []		-- local none+keep, none :: DFilter i+keep = \xml sub-> [sub]	-- local C.keep+none = \xml sub-> []	-- local C.none -ochildreno, oelmo, otxto :: DFilter-ochildreno = local children-oelmo      = local elm-otxto      = local txt+children, elm, txt :: DFilter i+children = local C.children+elm      = local C.elm+txt      = local C.txt -applypred :: CFilter -> DFilter -> CFilter-applypred f p = \xml-> (const f `owitho` p) xml xml+applypred :: CFilter i -> DFilter i -> CFilter i+applypred f p = \xml-> (const f `with` p) xml xml -oiffindo :: String -> (String -> DFilter) -> DFilter -> DFilter-oiffindo key yes no xml c@(CElem (Elem _ as _)) =+iffind :: String -> (String -> DFilter i) -> DFilter i -> DFilter i+iffind key yes no xml c@(CElem (Elem _ as _) _) =   case (lookup key as) of     Nothing -> no xml c-    (Just (AttValue [Left s])) -> yes s xml c-oiffindo key yes no xml other = no xml other--oifTxto :: (String->DFilter) -> DFilter -> DFilter-oifTxto yes no xml c@(CString _ s) = yes s xml c-oifTxto yes no xml c               = no xml c+    (Just v@(AttValue _)) -> yes (show v) xml c+iffind key yes no xml other = no xml other -ocato :: [a->b->[c]] -> (a->b->[c])-ocato fs = \xml sub-> concat [ f xml sub | f <- fs ]+ifTxt :: (String->DFilter i) -> DFilter i -> DFilter i+ifTxt yes no xml c@(CString _ s _) = yes s xml c+ifTxt yes no xml c                 = no xml c -(//>>) :: DFilter -> DFilter -> DFilter-f //>> g = g `ooo` ochildreno `ooo` f+cat :: [a->b->[c]] -> (a->b->[c])+cat fs = \xml sub-> concat [ f xml sub | f <- fs ] -(<<//) :: DFilter -> DFilter -> DFilter-f <<// g = f `owitho` (g `ooo` ochildreno)+(/>) :: DFilter i -> DFilter i -> DFilter i+f /> g = g `o` children `o` f -odeepo :: DFilter -> DFilter-odeepo f   = f ||>|| (odeepo f `ooo` ochildreno)+(</) :: DFilter i -> DFilter i -> DFilter i+f </ g = f `with` (g `o` children) +deep, deepest, multi :: DFilter i -> DFilter i+deep f    = f |>| (deep f `o` children)+deepest f = (deepest f `o` children) |>| f+multi f   = f `union` (multi f `o` children)
src/Text/XML/HaXml/Xtract/Lex.hs view
@@ -68,46 +68,50 @@ blank k p    s     = k p s  -----lexXtract :: String -> [Token]-lexXtract = selAny (Pn 1)+-- | First argument is a transformer for pattern strings, e.g. map toLower,+--   but only applying to parts of the pattern not in quotation marks.+--   (Needed to canonicalise HTML where tags are case-insensitive, but+--   attribute values are case sensitive.)+lexXtract :: (String->String) -> String -> [Token]+lexXtract f = selAny f (Pn 1)  syms = "/[]()@,=*&|~$+-<>" -selAny :: Posn -> String -> [Token]-selAny p [] = []-selAny p ('/':ss)-    | '/' == head ss  = emit (Symbol "//") p:  selAny (addcol 2 p) (tail ss)-selAny p ('!':ss)-    | '=' == head ss  = emit (Symbol "!=") p:  selAny (addcol 2 p) (tail ss)-selAny p ('<':ss)-    | '=' == head ss  = emit (Symbol "<=") p:  selAny (addcol 2 p) (tail ss)-selAny p ('>':ss)-    | '=' == head ss  = emit (Symbol ">=") p:  selAny (addcol 2 p) (tail ss)-selAny p ('\'':ss)    = emit (Symbol "'") p:-                        accumulateUntil '\'' (Symbol "'") [] p (addcol 1 p) ss selAny-selAny p ('"':ss)     = emit (Symbol "\"") p:-                        accumulateUntil '"' (Symbol "\"") [] p (addcol 1 p) ss selAny-selAny p ('_':ss)     = gatherName "_" p (addcol 1 p) ss (blank selAny)-selAny p (':':ss)     = gatherName ":" p (addcol 1 p) ss (blank selAny)-selAny p ('.':ss)-    | "=."  `isPrefixOf` ss  = emit (Symbol ".=.") p:  selAny (addcol 3 p) (drop 2 ss)-    | "!=." `isPrefixOf` ss  = emit (Symbol ".!=.") p: selAny (addcol 4 p) (drop 3 ss)-    | "<."  `isPrefixOf` ss  = emit (Symbol ".<.") p:  selAny (addcol 3 p) (drop 2 ss)-    | "<=." `isPrefixOf` ss  = emit (Symbol ".<=.") p: selAny (addcol 4 p) (drop 3 ss)-    | ">."  `isPrefixOf` ss  = emit (Symbol ".>.") p:  selAny (addcol 3 p) (drop 2 ss)-    | ">=." `isPrefixOf` ss  = emit (Symbol ".>=.") p: selAny (addcol 4 p) (drop 3 ss)-    | "/"   `isPrefixOf` ss  = emit (Symbol "./") p: selAny (addcol 2 p) (drop 1 ss)-selAny p (s:ss)-    | s `elem` syms   = emit (Symbol [s]) p:     selAny (addcol 1 p) ss-    | isSpace s       = blank selAny p (s:ss)-    | isAlpha s       = gatherName [s] p (addcol 1 p) ss (blank selAny)-    | isDigit s       = gatherNum  [s] p (addcol 1 p) ss (blank selAny)+selAny :: (String->String) -> Posn -> String -> [Token]+selAny f p [] = []+selAny f p ('/':'/':ss) = emit (Symbol "//") p:  selAny f (addcol 2 p) ss+selAny f p ('!':'=':ss) = emit (Symbol "!=") p:  selAny f (addcol 2 p) ss+selAny f p ('<':'=':ss) = emit (Symbol "<=") p:  selAny f (addcol 2 p) ss+selAny f p ('>':'=':ss) = emit (Symbol ">=") p:  selAny f (addcol 2 p) ss+selAny f p ('\'':ss)    = emit (Symbol "'") p:+                          accumulateUntil '\'' (Symbol "'") [] p (addcol 1 p) ss+                                          (selAny f)+selAny f p ('"':ss)     = emit (Symbol "\"") p:+                          accumulateUntil '"' (Symbol "\"") [] p (addcol 1 p) ss+                                          (selAny f)+selAny f p ('_':ss)     = gatherName f "_" p (addcol 1 p) ss (blank (selAny f))+selAny f p (':':ss)     = gatherName f ":" p (addcol 1 p) ss (blank (selAny f))+selAny f p ('.':'=':'.':ss) = emit (Symbol ".=.") p:  selAny f (addcol 3 p) ss+selAny f p ('.':'!':'=':'.':ss)+                            = emit (Symbol ".!=.") p: selAny f (addcol 4 p) ss+selAny f p ('.':'<':'.':ss) = emit (Symbol ".<.") p:  selAny f (addcol 3 p) ss+selAny f p ('.':'<':'=':'.':ss)+                            = emit (Symbol ".<=.") p: selAny f (addcol 4 p) ss+selAny f p ('.':'>':'.':ss) = emit (Symbol ".>.") p:  selAny f (addcol 3 p) ss+selAny f p ('.':'>':'=':'.':ss)+                            = emit (Symbol ".>=.") p: selAny f (addcol 4 p) ss+selAny f p ('.':'/':ss)     = emit (Symbol "./") p:  selAny f (addcol 2 p) ss+selAny f p (s:ss)+    | s `elem` syms   = emit (Symbol [s]) p:     selAny f (addcol 1 p) ss+    | isSpace s       = blank (selAny f) p (s:ss)+    | isAlpha s       = gatherName f [s] p (addcol 1 p) ss (blank (selAny f))+    | isDigit s       = gatherNum    [s] p (addcol 1 p) ss (blank (selAny f))     | otherwise       = lexerror "unrecognised pattern" p -gatherName acc pos p (s:ss) k-  | isAlphaNum s || s `elem` "-_:" = gatherName (s:acc) pos (addcol 1 p) ss k-gatherName acc pos p ss k =-  emit (TokString (reverse acc)) pos: k p ss+gatherName f acc pos p (s:ss) k+  | isAlphaNum s || s `elem` "-_:" = gatherName f (s:acc) pos (addcol 1 p) ss k+gatherName f acc pos p ss k =+  emit (TokString (f (reverse acc))) pos: k p ss  gatherNum acc pos p (s:ss) k   | isHexDigit s = gatherNum (s:acc) pos (addcol 1 p) ss k
src/Text/XML/HaXml/Xtract/Parse.hs view
@@ -7,53 +7,70 @@ --   transformed it into a non-left-recursive form. module Text.XML.HaXml.Xtract.Parse (parseXtract,xtract) where -import Text.ParserCombinators.HuttonMeijerWallace hiding (bracket,elserror)+import Text.ParserCombinators.Poly hiding (bracket) import Text.XML.HaXml.Xtract.Lex-import Text.XML.HaXml.Xtract.Combinators-import Text.XML.HaXml.Combinators+import Text.XML.HaXml.Xtract.Combinators as D+import Text.XML.HaXml.Combinators as C import List(isPrefixOf)+import Text.XML.HaXml.Escape (xmlUnEscapeContent,stdXmlEscaper) --- | To mix an Xtract query into an ordinary HaXml combinator expression.-xtract :: String -> CFilter-xtract query = dfilter (parseXtract query)+-- output transformer - to ensure that text/references are glued together+unescape = xmlUnEscapeContent stdXmlEscaper --- | The cool thing is that the Xtract command parser directly builds---   a higher-order 'DFilter' (see "Text.Xml.HaXml.Xtract.Combinators")---   which can be applied to an XML document without further ado.-parseXtract :: String -> DFilter-parseXtract = sanitycheck . either error id . papply' xql () . lexXtract -sanitycheck :: (Show p,Show t) => [(a,s,[Either String (p,t)])] -> a-sanitycheck [] = error "***Error at char pos 0 in expression: no parse"-sanitycheck ((x,_,[]):_) = x-sanitycheck ((x,_,s@(Right (n,_):_)):xs) =-  error ("***Error at "++show n++" in search expression: \""++remainder++"\"")-  where remainder = concatMap (show.snd.either error id) s+-- | To convert an Xtract query into an ordinary HaXml combinator expression.+--   First arg is a tag-transformation function (e.g. map toLower) applied+---  before matching.  Second arg is the query string.+xtract :: (String->String) -> String -> CFilter i+xtract f query+    | interiorRef lexedQ = dfilter (parseXtract lexedQ)+    | otherwise          = cfilter (parseXtract lexedQ)+  where+    lexedQ = lexXtract f query+    -- test whether query has interior reference to doc root+    interiorRef (Right (_,Symbol s): Right (_,Symbol "//"): _)+                                          | s `elem` predicateIntro = True+    interiorRef (Right (_,Symbol s): Right (_,Symbol "/"): _)+                                          | s `elem` predicateIntro = True+    interiorRef (_ : rest) = interiorRef rest+    interiorRef [] = False+    predicateIntro = [ "[", "("+                     ,  "&",   "|",  "~"+                     ,  "=",  "!=",  "<",  "<=",  ">",  ">="+                     , ".=.",".!=.",".<.",".<=.",".>.",".>=." ] -xql = aquery (local keep)+-- | The cool thing is that the Xtract command parser directly builds+--   a higher-order 'DFilter' (see "Text.XML.HaXml.Xtract.Combinators")+--   which can be applied to an XML document without further ado.+--   (@parseXtract@ halts the program if a parse error is found.)+parseXtract :: [Token] -> DFilter i+parseXtract = either error id . parseXtract' +-- | @parseXtract'@ returns error messages through the Either type.+parseXtract' :: [Token] -> Either String (DFilter i)+parseXtract' = fst . runParser (aquery liftLocal)  ---- Auxiliary Parsing Functions -----type XParser s a = Parser s (Posn,TokenT) String a+type XParser a = Parser (Either String (Posn,TokenT)) a -string :: XParser s String-string = P (\st inp -> case inp of {-                (Left err: _) -> Left err;-                (Right (p,TokString n):ts) -> Right [(n,st,ts)];-                ts -> Right [] } )-number :: XParser s Integer-number = P (\st inp -> case inp of {-                (Left err: _) -> Left err;-                (Right (p,TokNum n):ts) -> Right [(n,st,ts)];-                ts -> Right [] } )-symbol :: String -> XParser s ()-symbol s = P (\st inp -> case inp of {-                (Left err: _) -> Left err;-                (Right (p, Symbol n):ts) -> if n==s then Right [((),st,ts)]-                                            else Right [];-                ts -> Right [] } )-quote = symbol "'" +++ symbol "\""+string :: XParser String+string = P (\inp -> case inp of+                (Left err: _) -> (Left (False,err), inp)+                (Right (p,TokString n):ts) -> (Right n, ts)+                ts -> (Left (False,"expected a string"), ts) )+number :: XParser Integer+number = P (\inp -> case inp of+                (Left err: _) -> (Left (False,err), inp)+                (Right (p,TokNum n):ts) -> (Right n, ts)+                ts -> (Left (False,"expected a number"), ts) )+symbol :: String -> XParser ()+symbol s = P (\inp -> case inp of+                (Left err: _) -> (Left (False,err), inp)+                (Right (p, Symbol n):ts) | n==s -> (Right (), ts)+                ts -> (Left (False,"expected symbol "++s), ts) ) +quote = oneOf [ symbol "'",  symbol "\"" ]+ pam fs x = [ f x | f <- fs ]  @@ -178,7 +195,7 @@                  |  .>=. -} -bracket :: XParser s a -> XParser s a+bracket :: XParser a -> XParser a bracket p =   do symbol "("      x <- p@@ -188,208 +205,212 @@  ---- Xtract parsers ---- --- aquery takes a localisation filter, but if the query string starts--- from the root, we ignore the local context-aquery :: DFilter -> XParser s DFilter-aquery localise =-  ( do symbol "//"-       tquery [oglobo deep] ) +++-  ( do symbol "/"-       tquery [oglobo id] ) +++-  ( do symbol "./"-       tquery [(localise //>>)] ) +++-  ( do tquery [(localise //>>)] )+-- aquery chooses to search from the root, or only in local context+aquery ::  ((CFilter i->CFilter i) -> (DFilter i->DFilter i))+           -> XParser (DFilter i)+aquery lift = oneOf+    [ do symbol "//"+         tquery [lift C.multi]+    , do symbol "/"+         tquery [lift id]+    , do symbol "./"+         tquery [(local C.keep D./>)]+    , do tquery [(local C.keep D./>)]+    ] -tquery :: [DFilter->DFilter] -> XParser s DFilter+tquery :: [DFilter i->DFilter i] -> XParser (DFilter i) tquery [] = tquery [id]-tquery (qf:cxt) =-  ( do q <- bracket (tquery (qf:qf:cxt))-       xquery cxt q ) +++-  ( do q <- xtag-       xquery cxt (qf q) ) +++-  ( do symbol "-"-       return (qf (local txt)) )+tquery (qf:cxt) = oneOf+    [ do q <- bracket (tquery (qf:qf:cxt))+         xquery cxt q+    , do q <- xtag+         xquery cxt (qf ((unescape .).q))	-- glue inners texts together+    , do symbol "-"+         return (qf (local C.txt))+    ] -xtag :: XParser s DFilter-xtag =-  ( do s <- string-       symbol "*"-       return (local (tagWith (s `isPrefixOf`))) ) +++-  ( do s <- string-       return (local (tag s)) ) +++-  ( do symbol "*"-       s <- string-       return (local (tagWith (((reverse s) `isPrefixOf`) . reverse))) ) +++-  ( do symbol "*"-       return (local elm) )+xtag :: XParser (DFilter i)+xtag = oneOf+    [ do s <- string+         symbol "*"+         return (local (C.tagWith (s `isPrefixOf`)))+    , do s <- string+         return (local (C.tag s))+    , do symbol "*"+         s <- string+         return (local (C.tagWith (((reverse s) `isPrefixOf`) . reverse)))+    , do symbol "*"+         return (local C.elm)+    ]  -xquery :: [DFilter->DFilter] -> DFilter -> XParser s DFilter-xquery cxt q1 =-  ( do symbol "/"-       ((do symbol "@"-            attr <- string-            return (oiffindo attr (\s->local (literal s)) ononeo `ooo` q1))-        +++-        tquery ((q1 //>>):cxt)) ) +++-  ( do symbol "//"-       tquery ((\q2-> (oloco deep) q2 `ooo` local children `ooo` q1):cxt) ) +++-  ( do symbol "+"-       q2 <- tquery cxt-       return (ocato [q1,q2]) ) +++-  ( do symbol "["-       is <- iindex	-- now extended to multiple indexes-       symbol "]"-       xquery cxt (\xml-> concat . pam is . q1 xml) ) +++-  ( do symbol "["-       p <- tpredicate-       symbol "]"-       xquery cxt (q1 `owitho` p) ) +++-  ( do return q1 )+xquery :: [DFilter i->DFilter i] -> DFilter i -> XParser (DFilter i)+xquery cxt q1 = oneOf+    [ do symbol "/"+         ( do symbol "@"+              attr <- string+              return (D.iffind attr (\s->local (C.literal s)) D.none `D.o` q1)+           `onFail`+           tquery ((q1 D./>):cxt) )+    , do symbol "//"+         tquery ((\q2-> (liftLocal C.multi) q2+                            `D.o` local C.children `D.o` q1):cxt)+    , do symbol "+"+         q2 <- tquery cxt+         return (D.cat [q1,q2])+    , do symbol "["+         is <- iindex	-- now extended to multiple indexes+         symbol "]"+         xquery cxt (\xml-> concat . pam is . q1 xml)+    , do symbol "["+         p <- tpredicate+         symbol "]"+         xquery cxt (q1 `D.with` p)+    , return q1+    ] -tpredicate :: XParser s DFilter+tpredicate :: XParser (DFilter i) tpredicate =   do p <- vpredicate      f <- upredicate      return (f p) -upredicate :: XParser s (DFilter->DFilter)-upredicate =-  ( do symbol "&"-       p2 <- tpredicate-       return (`ooo` p2) ) +++-  ( do symbol "|"-       p2 <- tpredicate-       return (||>|| p2) ) +++-  ( do return id )+upredicate :: XParser (DFilter i->DFilter i)+upredicate = oneOf+    [ do symbol "&"+         p2 <- tpredicate+         return (`D.o` p2)+    , do symbol "|"+         p2 <- tpredicate+         return (D.|>| p2)+    , return id+    ] -vpredicate :: XParser s DFilter-vpredicate =-  ( do bracket tpredicate ) +++-  ( do symbol "~"-       p <- tpredicate-       return (local keep `owithouto` p) ) +++-  ( do tattribute )+vpredicate :: XParser (DFilter i)+vpredicate = oneOf+    [ do bracket tpredicate+    , do symbol "~"+         p <- tpredicate+         return (local C.keep `D.without` p)+    , do tattribute+    ] -tattribute :: XParser s DFilter-tattribute =-  ( do q <- aquery (local keep)-       uattribute q ) +++-  ( do symbol "@"-       s <- string-       vattribute (local keep, local (attr s), oiffindo s) )+tattribute :: XParser (DFilter i)+tattribute = oneOf+    [ do q <- aquery liftGlobal+         uattribute q+    , do symbol "@"+         s <- string+         vattribute (local C.keep, local (C.attr s), D.iffind s)+    ] -uattribute :: DFilter -> XParser s DFilter-uattribute q =-  ( do symbol "/"-       symbol "@"-       s <- string-       vattribute (q, local (attr s), oiffindo s) ) +++-  ( do vattribute (q, local keep,     oifTxto) )+uattribute :: DFilter i -> XParser (DFilter i)+uattribute q = oneOf+    [ do symbol "/"+         symbol "@"+         s <- string+         vattribute (q, local (C.attr s), D.iffind s)+    , do vattribute (q, local C.keep,     D.ifTxt)+    ] -vattribute :: (DFilter, DFilter, (String->DFilter)->DFilter->DFilter)-              -> XParser s DFilter-vattribute (q,a,iffn) =-  ( do cmp <- op+vattribute :: (DFilter i, DFilter i, (String->DFilter i)->DFilter i->DFilter i)+              -> XParser (DFilter i)+vattribute (q,a,iffn) = oneOf+  [ do cmp <- op        quote        s2 <- string        quote-       return ((iffn (\s1->if cmp s1 s2 then okeepo else ononeo) ononeo)-               `ooo` q) ) +++-  ( do cmp <- op+       return ((iffn (\s1->if cmp s1 s2 then D.keep else D.none) D.none)+               `D.o` q)+  , do cmp <- op        (q2,iffn2) <- wattribute-       return ((iffn (\s1-> iffn2 (\s2-> if cmp s1 s2 then okeepo else ononeo)-                                  ononeo)-                     ononeo) `ooo` q)-              ) +++-  ( do cmp <- nop+       return ((iffn (\s1-> iffn2 (\s2-> if cmp s1 s2 then D.keep else D.none)+                                  D.none)+                     D.none) `D.o` q)+  , do cmp <- nop        n <- number-       return ((iffn (\s->if cmp (read s) n then okeepo else ononeo) ononeo)-               `ooo` q) ) +++-  ( do cmp <- nop+       return ((iffn (\s->if cmp (read s) n then D.keep else D.none) D.none)+               `D.o` q)+  , do cmp <- nop        (q2,iffn2) <- wattribute-       return ((iffn (\s1-> iffn2 (\s2-> if cmp (read s1) (read s2) then okeepo-                                                                    else ononeo)-                                  ononeo)-                     ononeo) `ooo` q) ) +++-  ( do return ((a `ooo` q)))+       return ((iffn (\s1-> iffn2 (\s2-> if cmp (read s1) (read s2) then D.keep+                                                                    else D.none)+                                  D.none)+                     D.none) `D.o` q)+  , do return ((a `D.o` q))+  ] -wattribute :: XParser s (DFilter, (String->DFilter)->DFilter->DFilter)-wattribute =-  ( do symbol "@"-       s <- string-       return (okeepo, oiffindo s) ) +++-  ( do q <- aquery okeepo-       symbol "/"-       symbol "@"-       s <- string-       return (q, oiffindo s) ) +++-  ( do q <- aquery okeepo-       return (q, oifTxto) )+wattribute :: XParser (DFilter i, (String->DFilter i)->DFilter i->DFilter i)+wattribute = oneOf+    [ do symbol "@"+         s <- string+         return (D.keep, D.iffind s)+    , do q <- aquery liftGlobal+         symbol "/"+         symbol "@"+         s <- string+         return (q, D.iffind s)+    , do q <- aquery liftGlobal+         return (q, D.ifTxt)+    ]  -iindex :: XParser s [[a]->[a]]+iindex :: XParser [[a]->[a]] iindex =-  do i <- simpleindex-     is <- idxcomma-     return (i:is)+    do i <- simpleindex+       is <- idxcomma+       return (i:is) -simpleindex :: XParser s ([a]->[a])-simpleindex =-  ( do n <- number-       r <- rrange n-       return r ) +++-  ( do symbol "$"-       return (keep . last) )+simpleindex :: XParser ([a]->[a])+simpleindex = oneOf+    [ do n <- number+         r <- rrange n+         return r+    , do symbol "$"+         return (C.keep . last)+    ] -rrange, numberdollar :: Integer -> XParser s ([a]->[a])-rrange n1 =-  ( do symbol "-"-       numberdollar n1 ) +++-  ( do return (keep.(!!(fromInteger n1))) )+rrange, numberdollar :: Integer -> XParser ([a]->[a])+rrange n1 = oneOf+    [ do symbol "-"+         numberdollar n1+    , return (C.keep.(!!(fromInteger n1)))+    ] -numberdollar n1 =-  ( do n2 <- number-       return (take (fromInteger (1+n2-n1)) . drop (fromInteger n1)) ) +++-  ( do symbol "$"-       return (drop (fromInteger n1)) )+numberdollar n1 = oneOf+    [ do n2 <- number+         return (take (fromInteger (1+n2-n1)) . drop (fromInteger n1))+    , do symbol "$"+         return (drop (fromInteger n1))+    ] -idxcomma :: XParser s [[a]->[a]]-idxcomma =-  ( do symbol ","-       r <- simpleindex-       rs <- idxcomma-       return (r:rs) ) +++-  ( do return [] )+idxcomma :: XParser [[a]->[a]]+idxcomma = oneOf+    [ do symbol ","+         r <- simpleindex+         rs <- idxcomma+         return (r:rs)+    , return []+    ]  -op :: XParser s (String->String->Bool)-op =-  ( do symbol "="-       return (==) ) +++-  ( do symbol "!="-       return (/=) ) +++-  ( do symbol "<"-       return (<) ) +++-  ( do symbol "<="-       return (<=) ) +++-  ( do symbol ">"-       return (>) ) +++-  ( do symbol ">="-       return (>=) )+op :: XParser (String->String->Bool)+op = oneOf+    [ do symbol "=";  return (==)+    , do symbol "!="; return (/=)+    , do symbol "<";  return (<)+    , do symbol "<="; return (<=)+    , do symbol ">";  return (>)+    , do symbol ">="; return (>=)+    ] -nop :: XParser s (Integer->Integer->Bool)-nop =-  ( do symbol ".=."-       return (==) ) +++-  ( do symbol ".!=."-       return (/=) ) +++-  ( do symbol ".<."-       return (<) ) +++-  ( do symbol ".<=."-       return (<=) ) +++-  ( do symbol ".>."-       return (>) ) +++-  ( do symbol ".>=."-       return (>=) )+nop :: XParser (Integer->Integer->Bool)+nop = oneOf+    [ do symbol ".=.";  return (==)+    , do symbol ".!=."; return (/=)+    , do symbol ".<.";  return (<)+    , do symbol ".<=."; return (<=)+    , do symbol ".>.";  return (>)+    , do symbol ".>=."; return (>=)+    ] 
src/pkg.conf view
@@ -8,7 +8,7 @@   , extra_libraries = []   , include_dirs    = []   , c_includes      = []-  , package_deps    = ["lang","data","base"]+  , package_deps    = ["base","polyparse"]   , extra_ghc_opts  = []   , extra_cc_opts   = []   , extra_ld_opts   = []
+ src/tools/CanonicaliseLazy.hs view
@@ -0,0 +1,30 @@+module Main where++import IO+import List (isSuffixOf)++import Text.XML.HaXml.ParseLazy      (xmlParse)+import Text.XML.HaXml.Html.ParseLazy (htmlParse)+import Text.XML.HaXml.Wrappers       (fix2Args)+import Text.PrettyPrint.HughesPJ     (render)+import qualified Text.XML.HaXml.Pretty      as XmlPP+import qualified Text.XML.HaXml.Html.Pretty as HtmlPP++-- This is just a trivial application that reads an XML or HTML document+-- from a file (or stdin) and writes it back to another file (or stdout).+-- It demonstrates the behaviour of the parser and pretty-printer,+-- including any shortcomings they may have.++main =+  fix2Args >>= \(inf,outf)->+  ( if inf=="-" then getContents+    else readFile inf )            >>= \content->+  ( if outf=="-" then return stdout+    else openFile outf WriteMode ) >>= \o->+  let (parse,format) =+         if ".html" `isSuffixOf` inf || ".htm" `isSuffixOf` inf+           then (htmlParse inf, HtmlPP.document)+           else (xmlParse  inf, XmlPP.document)+  in+  do ( mapM_ (hPutStrLn o) . lines . render . format . parse) content+     hFlush o
src/tools/DtdToHaskell.hs view
@@ -10,7 +10,7 @@ import IO import List (nub,takeWhile,dropWhile) -import Text.XML.HaXml.Wrappers   (fix2Args)+--import Text.XML.HaXml.Wrappers   (fix2Args) import Text.XML.HaXml.Types      (DocTypeDecl(..)) import Text.XML.HaXml.Parse      (dtdParse) import Text.XML.HaXml.DtdToHaskell.TypeDef  (TypeDef,ppTypeDef,mangle)@@ -18,6 +18,19 @@ import Text.XML.HaXml.DtdToHaskell.Instance (mkInstance) import Text.PrettyPrint.HughesPJ (render,vcat) +-- sucked in from Text.XML.HaXml.Wrappers to avod dependency on T.X.H.Html+fix2Args :: IO (String,String)+fix2Args = do+  args <- getArgs+  case length args of+    0 -> return ("-",     "-")+    1 -> return (args!!0, "-")+    2 -> return (args!!0, args!!1)+    _ -> do prog <- getProgName+            putStrLn ("Usage: "++prog++" [xmlfile] [outfile]")+            exitFailure++ main =   fix2Args >>= \(inf,outf)->   ( if inf=="-" then getContents@@ -31,13 +44,14 @@                  else mangle name   in   do hPutStrLn o ("module "++realname-                  ++" where\n\nimport Text.XML.HaXml.Xml2Haskell"-                  ++"\nimport Text.XML.HaXml.OneOfN"-                  ++"\nimport Char (isSpace)")+                  ++" where\n\nimport Text.XML.HaXml.XmlContent"+                  ++"\nimport Text.XML.HaXml.OneOfN")+    --            ++"\nimport Char (isSpace)"+    --            ++"\nimport List (isPrefixOf)"      hPutStrLn o "\n\n{-Type decls-}\n"      (hPutStrLn o . render . vcat . map ppTypeDef) decls      hPutStrLn o "\n\n{-Instance decls-}\n"-     (hPutStrLn o . render . vcat . map mkInstance) decls+     mapM_ (hPutStrLn o . (++"\n") . render . mkInstance) decls      hPutStrLn o "\n\n{-Done-}"      hFlush o 
src/tools/MkOneOf.hs view
@@ -9,12 +9,12 @@     case length args of       1 -> do n <- saferead (head args)               putStrLn ("module Text.XML.HaXml."++constructor 1 n++" where\n")-              putStrLn ("import Text.XML.HaXml.Xml2Haskell\n")+              putStrLn ("import Text.XML.HaXml.XmlContent\n")               putStrLn (mkOneOf n)       2 -> do n <- saferead (args!!0)               m <- saferead (args!!1)               putStrLn ("module Text.XML.HaXml.OneOfN where\n")-              putStrLn ("import Text.XML.HaXml.Xml2Haskell\n")+              putStrLn ("import Text.XML.HaXml.XmlContent\n")               mapM_ (putStrLn . mkOneOf) [n..m]       _ -> error "Usage: MkOneOf n [m]"     hFlush stdout@@ -29,13 +29,18 @@                                  (take n variables))     ++ "\n    deriving (Eq,Show)"     ++ "\n\ninstance "++ format 10 78 10 "(" ","+                                (map ("HTypeable "++) (take n variables))+    ++ ")\n    => HTypeable ("++ typename n 26 ++")\n  where"+    ++ "      toHType m = Defined \""++constructor 1 n++"\" [] []"+    ++ "\n\ninstance "++ format 10 78 10 "(" ","                                 (map ("XmlContent "++) (take n variables))     ++ ")\n    => XmlContent ("++ typename n 26 ++")\n  where"-    ++ "\n    fromElem cs ="+    ++ "\n    parseContents ="     ++ "\n       "++ format 7 78 7 " (" " $ "                             (map (\v->"choice "++constructor v n) [1..n])-    ++ "\n        $ (\\c->(Nothing,c))) cs"-    ++ concatMap (\v->"\n    toElem ("++constructor v n++" x) = toElem x")+    ++ "\n        $ fail \""++constructor 1 n++"\")"+    ++ concatMap (\v->"\n    toContents ("++constructor v n+                                          ++" x) = toContents x")                  [1..n]     ++ "\n\n----" 
src/tools/Xtract.hs view
@@ -8,21 +8,27 @@ import List         (isSuffixOf)  import Text.XML.HaXml.Types+import Text.XML.HaXml.Posn          (posInNewCxt) import Text.XML.HaXml.Parse         (xmlParse) import Text.XML.HaXml.Html.Parse    (htmlParse) import Text.XML.HaXml.Xtract.Parse  (xtract) import Text.PrettyPrint.HughesPJ    (render, vcat, hcat, empty) import Text.XML.HaXml.Pretty        (content) import Text.XML.HaXml.Html.Generate (htmlprint)+import Text.XML.HaXml.Escape        (xmlEscapeContent,stdXmlEscaper) +escape = xmlEscapeContent stdXmlEscaper  main =   getArgs >>= \args->   if length args < 1 then-    putStrLn "Usage: Xtract <pattern> [xmlfile ...]" >>+    putStrLn "Usage: Xtract [-n] <pattern> [xmlfile ...]" >>     exitWith (ExitFailure 1)   else-    let (pattern:files) = args+    let (pattern,files,esc) =+          case args of ("-n":pat:files) -> (pat,files, (:[]))+                       (pat:"-n":files) -> (pat,files, (:[]))+                       (pat:files)      -> (pat,files, escape.(:[])) --      findcontents = --        if null files then (getContents >>= \x-> return [xmlParse "<stdin>"x]) --        else mapM (\x-> do c <- (if x=="-" then getContents else readFile x)@@ -35,17 +41,19 @@ --  . map (vcat . map content . selection . getElem)) cs     mapM_ (\x-> do c <- (if x=="-" then getContents else readFile x)                    ( if isHTML x then-                          hPutStrLn stdout . render . htmlprint .-                          xtract (map toLower pattern) . getElem . htmlParse x-                     else hPutStrLn stdout . render . format .-                          xtract pattern . getElem . xmlParse x) c+                          hPutStrLn stdout . render . htmlprint+                          . xtract (map toLower) pattern+                          . getElem x . htmlParse x+                     else hPutStrLn stdout . render . vcat . map (format . esc)+                          . xtract id pattern+                          . getElem x . xmlParse x) c                    hFlush stdout)           files -getElem (Document _ _ e _) = CElem e+getElem x (Document _ _ e _) = CElem e (posInNewCxt x Nothing) isHTML x = ".html" `isSuffixOf` x  ||  ".htm"  `isSuffixOf` x  format [] = empty-format cs@(CString _ _:_) = hcat . map content $ cs-format cs@(CRef _:_)      = hcat . map content $ cs-format cs                 = vcat . map content $ cs+format cs@(CString _ _ _:_) = hcat . map content $ cs+format cs@(CRef _ _:_)      = hcat . map content $ cs+format cs                   = vcat . map content $ cs
+ src/tools/XtractLazy.hs view
@@ -0,0 +1,59 @@+------------------------------------------------------------+-- The Xtract tool - an XML-grep.+------------------------------------------------------------ +module Main where+import System (getArgs, exitWith, ExitCode(..))+import IO+import Char         (toLower)+import List         (isSuffixOf)++import Text.XML.HaXml.Types+import Text.XML.HaXml.Posn          (posInNewCxt)+import Text.XML.HaXml.ParseLazy     (xmlParse)+import Text.XML.HaXml.Html.ParseLazy(htmlParse)+import Text.XML.HaXml.Xtract.Parse  (xtract)+import Text.PrettyPrint.HughesPJ    (render, vcat, hcat, empty)+import Text.XML.HaXml.Pretty        (content)+import Text.XML.HaXml.Html.Generate (htmlprint)+import Text.XML.HaXml.Escape        (xmlEscapeContent,stdXmlEscaper)++escape = xmlEscapeContent stdXmlEscaper++main =+  getArgs >>= \args->+  if length args < 1 then+    putStrLn "Usage: Xtract [-n] <pattern> [xmlfile ...]" >>+    exitWith (ExitFailure 1)+  else+    let (pattern,files,esc) =+          case args of ("-n":pat:files) -> (pat,files, (:[]))+                       (pat:"-n":files) -> (pat,files, (:[]))+                       (pat:files)      -> (pat,files, escape.(:[]))+--      findcontents =+--        if null files then (getContents >>= \x-> return [xmlParse "<stdin>"x])+--        else mapM (\x-> do c <- (if x=="-" then getContents else readFile x)+--                           return ((if isHTML x+--                                    then htmlParse x else xmlParse x) c))+--                  files+    in+--  findcontents >>= \cs->+--  ( hPutStrLn stdout . render . vcat+--  . map (vcat . map content . selection . getElem)) cs+    mapM_ (\x-> do c <- (if x=="-" then getContents else readFile x)+                   ( if isHTML x then+                          hPutStrLn stdout . render . htmlprint+                          . xtract (map toLower) pattern+                          . getElem x . htmlParse x+                     else hPutStrLn stdout . render . vcat . map (format . esc)+                          . xtract id pattern+                          . getElem x . xmlParse x) c+                   hFlush stdout)+          files++getElem x (Document _ _ e _) = CElem e (posInNewCxt x Nothing)+isHTML x = ".html" `isSuffixOf` x  ||  ".htm"  `isSuffixOf` x++format [] = empty+format cs@(CString _ _ _:_) = hcat . map content $ cs+format cs@(CRef _ _:_)      = hcat . map content $ cs+format cs                   = vcat . map content $ cs